Ведьма, какой из этих подходов вы считаете лучше?
Этот пример написан на PHP, но правила игры для других языков те же.
1. Сначала создайте один блок if и продублируйте строку шаблона в блоке else:
if($var['b'])
{
$text='<tr>
<td style="cursor:pointer; color:black;"></td>
<td class="one">'.$var['b'].'</td>
<td class="two">'.$var['b'].'/'.$var['a'].'</td>
<td class="other">'.($var['a']/$var['b']).'</td>
</tr>';
} else {
$text='<tr>
<td style="color:red;"></td>
<td class="one"></td>
<td class="two">'.$var['a'].'</td>
<td class="other">0</td>
</tr>';
}
2. Во-вторых, проверяйте одну и ту же переменную снова и снова, но не дублируйте строку шаблона:
$text='<tr>
<td style="'.(($var['b'])?'cursor:pointer; color:black;':'color:red;').'"></td>
<td class="one">'.(($var['b'])?$var['b']:'').'</td>
<td class="two">'.(($var['b'])?$var['b'].'/'.$var['a']:$var['a']).'</td>
<td class="other">'.(($var['b'])?($var['a']/$var['b']):'0').'</td>
</tr>';
3. Третья проверка одной переменной, не дублируйте строку шаблона, установите / удалите переменные:
$css = 'color:red;';
$one = '';
$two = $var['a'];
$other = 0;
if($var['b'])
{
$css = 'cursor:pointer; color:black;';
$one = $var['b'];
$two = $var['b'].'/'.$var['a'];
$other = ($var['a']/$var['b']);
}
$text='<tr>
<td style="'.$CSS.'"></td>
<td class="one">'.$one.'</td>
<td class="two">'.$two.'</td>
<td class="other">'.$other.'</td>
</tr>';
unset($css,$one,$two,$other);
Это простой пример, поэтому не имеет значения, но представьте себе большой проект, в котором нечто подобное можно использовать от десяти до ста раз только для одного экземпляра сценария. В первом у нас есть больший исходный код, но мы набираем скорость, во втором наш код маленький (труднее всего читать), но мы теряем некоторую скорость из-за нескольких проверок переменных, третий легко читается использовать много места, но мы теряем некоторую скорость и память из-за установки и отмены переменных.