Я люблю писать красивый код, но люблю и лаконичный, чтобы не было ничего левого и ненужного. Конечно, не до такой степени, чтобы страдала читабельность. И вот сегодня, пописывая, заметил нунужные строки в коде. Было где-то так:
$letter = $GLOBALS['tf_validate']->ords_to_unistr(array($i));
if(isset($ex[$letter])){
$tmp['class'] = 'exist';
} else {
$tmp['class'] = '';
}
$tmp['letter'] = $letter;
Как видно с кода сначала в переменную $letter чево-то там заганяется, а потом проверяется нуществование значения $ex[$letter]. Если нет, то в $tmp['class'] записывается пустое значение, иначе – ‘exist’. Ну и в конце записывается данные $letter в $tmp['letter']. В этом коде меня напрягла переменная $letter и я решил от неё избавится. Это сделать просто:
$tmp['letter'] = $GLOBALS['tf_validate']->ords_to_unistr(array($i));
if(isset($ex[$tmp['letter']])){
$tmp['class'] = 'exist';
} else {
$tmp['class'] = '';
}
Теперь у нас ничего в память левого не заганяется. Но если идти дальше, то это же можно записать в 2 строки:
Вариант 1.
$tmp['letter'] = $GLOBALS['tf_validate']->ords_to_unistr(array($i));
(isset($ex[$tmp['letter']]))?$tmp['class'] = 'exist': $tmp['class'] = '';
Но можно ещё короче!
Вариант 2.
(isset($ex[$tmp['letter'] = $GLOBALS['tf_validate']->ords_to_unistr(array($i))]))?$tmp['class'] = 'exist': $tmp['class'] = '';
Но эта конструкция уже сильно запутаная и использывать её не стоит – уж больно читаемый PHP стал похож на Perl.
Вот как 6 строчек кода можно превратить в 2 без ущерба читаемости и с экономией одной сототой килобайта памяти
Update
Тут в комментариях друг Star высказался о ещё одном уменшении размера строки, но это уже больше относится к “уменшим размер – не прочитаем код”. Он предлагает уменшить строки
(isset($ex[$tmp['letter']]))? $tmp['class'] = 'exist': $tmp['class'] = '';
и как результат мы получим вариант 1 и 2 в таком виде:
Вариант 1.2.
$tmp['letter'] = $GLOBALS['tf_validate']->ords_to_unistr(array($i));
$tmp['class'] = isset($ex[$tmp['letter']])? 'exist': '';
Вариант 2.2.
$tmp['class'] = isset($ex[$tmp['letter'] = $GLOBALS['tf_validate']->ords_to_unistr(array($i))])? 'exist': '';