Чистый код — избавляемся от грязного кода

Чистый код — меньше багов
  • Среда разработки помогает быстрее писать код. А еще, она подсказывает как сделать код чище. Стоит обращать внимание на все предупреждения среды разработки и учитывать их. Так же выявляется и дублирование кода
  • Дублирование — большая помеха чистоте кода. Простейшая форма дублирование — целые куски дублирующего кода. Их стоит выделять в отдельные функции, иногда — классы и пере-использовать. Более сложные примеры дублирования проявляются в одинаковых условиях if-else. Вместо них следует использовать принцип полиморфизма. Существуют еще более сложные случаи дублирования. Схожие алгоритмы могут соседствовать со специфичной логикой. Используем паттерны проектирования, например Шаблонный метод или Стратегия.
  • Дублирующий код может быть инкапсулирован в более высокие уровни абстракций, если необходимо пере-использовать его в других классах.
  • Не используемый код следует удалять, а не сохранять на будущее. Тоже происходит с “мертвым кодом”, до которого алгоритм никогда не дойдет. Это нередкая “болезнь” циклов if-else и switch-case
  • Вертикальное разделение помогает чтению кода. Переносы строк, без пропуска строк, покажут что код относится к одной логике. Пропуски строк разделят алгоритм на 2е логически-обособленные части
  • Такой балласт, как пустой конструктор или пустое тело цикла будет мешать читать код. Следует удалить их.
  • Пояснительные переменные помогают чтению и пониманию кода
$today = date('Y-m-d', now());
$targetDateString = '2020-07-08';
$targetDate = date('Y-m-d', strtotime($targetDateString));
If ($today >= $targetDate) {
	doTheJob();
}
  • Чистоте кода, так же, поможет соблюдение стандартных конвенций. Не обязательно это должен быть согласованный документ. Сам код служит примером оформления.
  • Так называемые “волшебные числа” заменяют именованными константами — пример кода со стр 339
$dailyPay = $hourlyPay * 8;
$PI = 3.14;
$circleLength = $radius * $PI * 2;

Конфигурационные данные выносим на высокие уровни абстракций — конфигурационные файлы или файл