falbar Продвинутые правила и техники написания кода

Продвинутые правила и техники написания кода

5 августа 2018 Перевод 175 0

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

Реклама

Что такое рефакторинг и зачем он нужен?

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

Никогда не перерабатывайте код готового приложения без проведения тестов

Мой первый совет - никогда не начинайте перерабатывать унаследованный код, который не проходил модульные тесты. Думаю, причина очевидна: многие функциональные элементы могут оказаться поломанными, и их будет трудно починить, потому что вы не сможете понять, в чем именно дело. Если вам нужно перепроектировать код, сначала протестируйте его и убедитесь, что сделали это с той частью, с которой будете работать.

Начинайте рефакторинг с самой глубокой части кода

Посмотрите на изображение. Это настоящий проект для системы управления гостиницей, найденный мной на github. Это настоящее ПО с открытым исходным кодом, а закрытый код мог бы быть и хуже.

nachinajte-refaktoring-s-samoj-glubokoj-chasti-koda

Как вы можете заметить, на картинке красным цветом отмечены три уровня. Самая глубокая его часть - конструкция if/else, что внутри первого if. Лучше всего сконцентрироваться на одном логическом элементе, тогда будет проще переработать весь код.

Сокращайте методы, разделяя их на более короткие или на конфигурационные файлы/DB-таблицы

Может быть, в этом случае можно выделить эту часть кода в приватный метод:

sokraschajte-metody-razdelyaya-ih-na-bolee-korotkie

Следующий шаг - получить данные и загрузить их отображение. Переработав остальные части, взгляните на метод add(). Он стал гораздо «чище», его легче читать и тестировать.

vzglyanite-na-metod-add

Всегда используйте {} в функции if

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

vsegda-ispolzujte-v-funktsii-if

Не используйте магические числа и строки

В следующем примере можно заметить, что если количество комнат превышает 250, то появляется ошибка. В этом случае 250 является магическим числом. Если вы не являетесь разработчиком, который создал этот код, будет трудно понять, что же это значит.

ne-ispolzujte-magicheskie-chisla-i-stroki

Чтобы переработать это место, можно предположить, что 250 - максимальное количество комнат. Вместо хардкода выделим это в переменную $maxAvailableRooms. Теперь другие разработчики смогут понять это место.

razrabotchiki-smogut-ponyat-eto-mesto

Не используйте оператор else, если того не требуется

В этой же функции availableRooms() можно заметить функцию if, в которой можно запросто убрать часть else без вреда логике.

ne-ispolzujte-operator-else-esli-togo-ne-trebuetsya

Используйте понятные названия для методов, переменных, тестов

Ниже можно увидеть два метода из системы управления гостиницей. Они называются index() и room_m(). Лично мне трудно определить, для чего они нужны. Думаю, было бы проще понять, если бы их названия были более содержательными.

ispolzujte-ponyatnye-nazvaniya-dlya-metodov

Используйте максимум возможностей вашего языка программирования

Многие разработчики не используют все возможности языка программирования, на котором работают. А ведь там есть компоненты, которые обеспечат написание эффективного кода и помогут вам поберечь силы. Взгляните на примеры ниже и заметьте, как легко добиться того же результата, при этом написав более короткий код и используя подсказки при вводе кода.

ispolzujte-maksimum-vozmozhnostej-vashego-yazyka ispolzujte-maksimum-vozmozhnostej-yazyka-programmirovaniya

Еще несколько правил написания кода, которыми я бы хотел закончить статью

  • Используйте [] в массивах, а не старую версию array();
  • Используйте === оператор вместо == в случае, когда важно проверять dataType;
  • Всегда будет хорошей идеей давать открытым методам содержательные, понятные и в то же время короткие названия. У приватных методов могут быть длинные названия, так как у них ограниченный объем;
  • Используйте общие названия только в методах, которые реализуют интерфейс, например, add(). Содержательные названия понадобятся единственным методам класса addUser() и addDocument();
  • Убирайте неиспользованные методы из классов;
  • Используйте префиксы is и has для функций, которые используют логическое выражение: isAdmin($user), hasPermission($user);
  • Всегда пользуйтесь модификаторами доступа в классовых методах и параметрах;
  • Остерегайтесь загрязнения интерфейса: выбирайте только те методы, которыми пользователи могут пользоваться открыто;
  • Организуйте классы методов так, чтобы открытые методы были на поверхности;
  • Всегда применяйте принцип единственной обязанности к своим классам.
Реклама
Комментариев еще не оставлено
no_avatar