перевод статьи автора Mohamed Aladdin на Medium
image from osnews.com
Хорошие разработчики определяются качеством их кода. В индустрии программного обеспечения написание хорошего кода означает экономию средств, которые могут быть вложены в тестирование, обновление, расширение или исправление ошибок. В этой статье я покажу вам реальные примеры некоторых техник и идей, которые помогут вам очистить ваш унаследованный код и реорганизовать его, чтобы сделать его более надежным и модульным. Эти методы не только помогут вам реорганизовать ваш старый код, но и дадут вам отличные идеи о том, как теперь писать чистый код.
Что такое рефакторинг и зачем он нам?
Рефакторинг относится к методам и шагам, которые помогут вам написать чистый код. Это важно для других разработчиков, которые смогут читать, расширять и повторно использовать код без необходимости много редактировать его.
Ниже я покажу вам несколько примеров рефакторинга унаследованного кода и сделаю его лучше.
Никогда не рефакторьте продакшн код, который не имеет unit тестов
Мой первый совет - никогда не начинать рефакторинг унаследованного кода, который не имеет надлежащих unit тестов. Я предполагаю, что причина очевидна: у вас останутся сломанные функции, которые сложно исправить, потому что вы не сможете понять, что сломано. Поэтому, если вам нужно реорганизовать его, начните сначала с его тестирования. Убедитесь, что часть, которую вы собираетесь перерабатывать, покрыта тестами.
Проверьте PHPUnit анализ покрытия кода тестами.
Начните рефакторинг с самой глубокой точки вашего кода
Посмотрите на следующее изображение. Это настоящий проект для системы управления гостиницей которую я нашел на Github. Это настоящий проект с открытым исходным кодом, поэтому закрытый источник может быть худшим.
пример: сначала рефакторинг самых глубоких точек
Как вы можете видеть в этом методе, есть три уровня, отмеченные красным. Самой глубокой точкой должна быть вложенная инструкция if / else внутри первого условия if. Обычно самая глубокая точка сфокусирована на одной логике, тем самым облегчая рефакторинг.
Сократите ваши методы, разделив их на более мелкие методы или файлы конфигурации / таблицу БД.
Возможно, в этом случае мы можем извлечь его в приватный метод следующим образом:
сделайте свои функции короче
Следующей глубокой точкой будет выборка данных поста и загрузка просмотров. Теперь взгляните на метод add () после рефакторинга других частей. Это намного чище, лучше читается и тестируемо.
пример: сначала рефакторинг самых глубоких точек
Всегда используйте {} в операторах if
Большинство языков программирования поддерживают однострочные операторы if, и некоторые разработчики используют их, потому что они просты, однако не так просто читаются и легко вызывают проблемы, поскольку только одна пустая строка может нарушить условие и начать сбой. Посмотрите на разницу между двумя примерами:
пример: используйте фигурные скобки
Не используйте магические числа или магические строки:
В следующем примере вы заметите, что если комнат больше 250, возвращается сообщение об ошибке. В этом случае 250 считается магическим числом. Если вы не разработчик, который написал это, вам будет сложно понять, что это за число.
пример: магические числа
Чтобы реорганизовать этот метод, мы можем выяснить, что 250 - это максимальное количество комнат. Поэтому вместо хардкода мы можем извлечь его в переменную $maxAvailableRooms. Теперь код стал более понятен для других разработчиков.
пример: исправление магических чисел
Не используйте операторы else, если это вам не требуется:
В той же функции availablerooms () вы заметили оператор if, в котором мы можем легко избавиться от остальной части, и логика останется прежней.
пример: игнорирование оператора else
Используйте значимые имена для ваших методов, переменных и тестов
В следующем примере вы можете видеть, что есть два метода из системы управления отелем, называемые «index() и room_m()». Лично я не могу определить, каковы их цели. Я думаю, что было бы легче понять, если бы их имена были описательными.
пример: неправильные имена методов
Используйте максимум возможностей вашего языка программирования
Многие разработчики не используют все возможности языка программирования, на котором они пишут. Многие из этих возможностей могут сэкономить вам уйму усилий и сделать ваш код более надежным. Посмотрите на следующие примеры и обратите внимание, как легко достичь того же результата с меньшим количеством кода, просто используя подсказку типа.
Я хотел бы закончить несколькими более короткими советами для лучшего написания кода:
- Используйте новую форму массива [] вместо старой (array).
- Используйте оператор === вместо ==, если нужно проверить тип данных.
- Всегда полезно давать публичным методам короткие описательные имена. Частные методы могут иметь более длинные имена, поскольку они имеют ограниченную область действия.
- Используйте общие имена только с методами, которые реализуют интерфейсы, например add (), и используйте описательные имена для методов отдельных классов addUser () или addDocument ().
- Удаляйте неиспользуемые методы из ваших классов.
- Используйте префикс is / has с функциями, которые возвращают логическое значение например: isAdmin(\$user), hasPermission(\$user).
- Всегда используйте модификаторы доступа в методах и свойствах класса.
- Будьте осторожны, не захламляйте интерфейсы: используйте только те методы, которые пользователи могут использовать публично.
- Организовывайте так методы классов, чтобы публичные методы находились сверху.
- Всегда применяйте концепцию единой ответственности к вашим классам.
Top comments (0)