Некоторые (особенно начинающие или неопытные) разработчики хранят в массивах разнородную информацию. Например:
$arr = Array();
$arr[0] = “Mike”; // имя человека
$arr[1] = 30; // возраст
$arr[2] = 180; // рост
Хорошо, что в PHP есть ассоциативные массивы, которые позволили бы нам написать вот так: Читать далее »
Ноя 09, 2008 | Автор :
Novice | 15 Комментариев
Иногда в исходном коде выражения бывают настолько сложными, что если даже и мы их написали, то по прошествии какого-то времени не можем понять, что мы имели в виду в том или ином участке кода.
Например, рассмотрим следующее выражение (правда, оно не настолько сложное, но выражения посложнее я покажу далее):
if ((strpos(strtoupper($platform), "MAC") !== false) &&
(strpos(strtoupper($browser), "IE") !== false) &&
wasInitialized() && $resize > 0 ) {
// что-то делаем ...
}
Чтобы нам легче было понять логическое выражение в условии, попробуем упростить его с помощью нашего сегодняшнего приема: Читать далее »
Ноя 03, 2008 | Автор :
Novice | 3 Комментариев
Представим себе такую ситуацию… Есть у нас метод (функция-член класса), в котором довольно много строк кода. И этот код использует локальные переменные таким образом, что невозможно применить прием группировки кода в отдельную функцию.
Решением этой проблемной ситуации может быть прием, который мы сегодня рассмотрим. Это замена метода объектом. Суть этого приема состоит в том, чтобы исходный метод сделать методом нового класса, а все локальные переменные исходного метода сделать свойствами нового класса. В итоге такой метод в новом классе далее можно декомпозировать на отдельные методы этого же класса.
Чтобы было понятнее, как всегда пример: Читать далее »
Окт 30, 2008 | Автор :
Novice | 1 Комментарий
Приведем примеры этого приема, описанного в предыдущей статье.
Пример без локальных переменных
Рассмотрим простейший пример – когда выделяемый код не использует какие-либо локальные переменные: Читать далее »
Окт 27, 2008 | Автор :
Novice | 1 Комментарий
Вот и настал черед рассмотрения такого приема, как «Группировка кода в отдельную функцию». Или, его можно еще назвать «Выделение метода».
Я решил разбить этот пост на две части, чтобы не перегружать читателя информацией. Вторая часть выйдет завтра.
Суть этого приема заключается в выделении какого-то участка кода в отдельный метод, чтобы улучшить понимабельность кода. Приведу пример:
Читать далее »
Окт 26, 2008 | Автор :
Novice | 1 Комментарий
Продолжаем тему рефакторинга, и сегодня рассмотрим такой прием, как замена временной переменной методом (функцией).
Показания к применению
Если Вы используете временную переменную для хранения результата какого-то выражения, Вам необходимо поместить это выражение в отдельную функцию (метод) таким образом, что эта функция может быть в дальнейшем использована в других функциях. Дело в том, что такие временные переменные усложняют код метода, в котором они используются. Путем замены временной переменной методом любой метод затем сможет использовать результат, возвращенный новым созданным методом. Это очень помогает в процессе очистки кода в классе.
Читать далее »
Окт 12, 2008 | Автор :
Novice | 1 Комментарий
Рассмотрим сегодня такую технику рефакторинга, как разделение функции на две части: одну – для модификации чего-то, вторую – для возвращения значения. Т.е. если у нас есть функция, которая и возвращает результат, и что-то делает с переданным параметром, то лучше ее разделить на две функции, одна из которых что-то возвращала бы, а вторая – что-то принимала бы и выполняла бы какие-то видимые действия.
Назовем первую функцию – запрос, а вторую – модификатор.
Вы наверно заметили, что двумя предложениями выше я упомянул о неких «видимых» действиях. О них станет понятнее в примере, который я приведу ниже.
Вообще, функция без каких-то видимых действий является более чистой, чем функция, вызов которой может вызвать еще какую-то функцию. В первом случае мы можем вызывать функцию везде, где угодно и использовать ее возвращаемое значение, при этом не волнуясь о том, что она вызовет еще кого-то. Но если она все-таки вызывает какую-то другую функцию, то она уже не чистая и придется разделить ее на две части.
В общем, правило для этой техники можно сформулировать так: функция, которая возвращает какое-то значение (т.е. функция-запрос), не должна иметь каких-либо видимых эффектов (т.е. не должна вызывать функции-модификаторы).
Читать далее »
Окт 03, 2008 | Автор :
Novice | Нет комментариев