Показаны сообщения с ярлыком clean_code. Показать все сообщения
Показаны сообщения с ярлыком clean_code. Показать все сообщения

воскресенье, 24 августа 2014 г.

Как упростить импорт файлов?

Однажды при написании программы обнаружил вот такой участок кода, импортирующий файлы в исполняемый php-скрипт index.php:

<?php include(dirname(__FILE__).'/atm_table_row.jst'); ?>
<?php include(dirname(__FILE__).'/atm_table.jst'); ?>
<?php include(dirname(__FILE__).'/atm_yandex_map.php'); ?>

Вопрос: Как упростить этот участок кода, если все указанные файлы лежат в одной директории?

четверг, 24 июля 2014 г.

Используйте тернарный оператор

В любом языке, в котором имеется тернарный оператор, хорошо его применять. Есть такой оператор и в php. Его синтаксис прост:
$age = 111;
echo $age > 65 ? 'Мудрец' : 'Юнец'; //Вернет 'Мудрец'

Применение этого оператора в некоторых случаях позволяет сократить код.

Плохо
function confidential_name ($confidential) {
    if ($confidential)
        return 'Ограниченный доступ';
    else
        return 'Без ограничений';
}

Хорошо
function confidential_name ($confidential) {
    return $confidential ? 'Ограниченный доступ' : 'Без ограничений';
}

четверг, 3 июля 2014 г.

Не делайте лишний вызов функции

В данном фрагменте php-кода проверяется значение, возвращаемое функцией. При этом функция вызывается дважды, хотя можно было бы сохранить результат выполнения функции в переменную, и уже дальше работать с этой переменной.

Плохо

foreach($rules as $rule) {
    //1-й вызов функции
    if ($this->userMatchRule($user, $rule) === 'match') {
        return true;
    }
    //2-й вызов функции
    if ($this->userMatchRule($user, $rule) === 'notMatch') {
        return false;
    }
}

Хорошо

foreach($rules as $rule) {
    //Сохраняем результат работы ф-ции в переменную
    $matchResult = $this->userMatchRule($user, $rule);
    
    //Далее работаем с переменной
    if ($matchResult === 'match') {
        return true;
    }
    if ($matchResult === 'notMatch') {
        return false;
    }
}