Как я объяснил в своем вступительном посте, я собираюсь писать в основном на тему практики чистого кодирования.
Теперь вам может быть интересно, что подразумевается под «чистым кодом». Что именно означает, что код должен быть «чистым»?
Что ж, ответ сложный. Это как если бы вы спросили архитектора, что делает архитектуру «хорошей». Я предполагаю, что если бы мы попросили 20 лучших архитекторов мира ответить на вопрос: «Что такое хорошая архитектура?», мы бы получили почти 20 разных ответов.
Однако, слушая их ответы, мы можем начать понимать, каковы важные критерии, а также обнаружить повторяющиеся и общие темы.
В классической книге на эту тему, которую я сейчас читаю, под названием Чистый код: руководство по Agile Software Craftsmanship Роберта Мартина (прозванного в отрасли дядей Боб) автор делится ответом на вопрос: Что такое чистый код? пятью самыми уважаемыми инженерами-программистами в отрасли.
Чтобы помочь вам понять, что такое чистый код, я воспроизвел их ответы ниже.
Бьерн Страуструп, изобретатель языка C++:
Мне нравится, когда мой код элегантен и эффективен. Логика должна быть простой, чтобы было трудно скрывать ошибки, зависимости должны быть минимальными для облегчения обслуживания, обработка ошибок должна выполняться в соответствии с четко сформулированной стратегией, а производительность должна быть близкой к оптимальной, чтобы не соблазнять людей запутывать код беспринципными оптимизациями. Чистый код хорошо справляется с одной задачей.
Грэди Буч, автор книги Объектно-ориентированный анализ и проектирование с приложениями:
Чистый код прост и понятен. Чистый код читается как хорошо написанная проза. Чистый код никогда не скрывает намерения дизайнеров, а скорее полон четких абстракций и прямых линий управления.
Дэйв Томас, автор книги The Pragmatic Programmer:
Чистый код может быть прочитан и улучшен разработчиком, отличным от его первоначального автора. Он имеет модульные и приемочные тесты. У него есть значимые имена. Он предлагает один способ, а не множество способов для выполнения одной задачи. Он имеет минимальные зависимости, которые определены явно, и предоставляет понятный и минимальный API. Код должен быть грамотным, поскольку, в зависимости от языка, не вся необходимая информация может быть четко выражена только в коде.
Майкл Фезерс, автор книги Эффективная работа с устаревшим кодом:
Я мог бы перечислить все качества, которые я замечаю в чистом коде, но есть одно всеобъемлющее качество, которое приводит ко всем из них. Чистый код всегда выглядит так, как будто его написал небезразличный человек. Нет ничего очевидного, что вы можете сделать, чтобы сделать его лучше. Обо всех этих вещах думал автор кода, и если вы попытаетесь представить улучшения, вы вернетесь туда, где вы сейчас, сидите и оцениваете код, который кто-то оставил для вас — код, написанный кем-то, кто глубоко заботился о ремесле. .
Уорд Каннингем, изобретатель Wiki и соавтор экстремального программирования:
Вы понимаете, что работаете с чистым кодом, когда каждая прочитанная процедура оказывается в значительной степени такой, как вы ожидали. Вы можете назвать это красивым кодом, когда код также создает впечатление, что язык был создан для решения проблемы.
Итак… смогли ли вы обнаружить общие закономерности во всех ответах?
Вот четкое и краткое изложение Jakub Holy:
Чистый код — это…
– Легкодоступность для других (прямолинейность, ясное намерение, хорошие абстракции, отсутствие сюрпризов, хорошие названия) – это самый упоминаемый пункт
– Создан для реального мира, т.е. имеет четкую стратегию обработки ошибок
— Автор явно заботится о софте и других разработчиках (что подразумевает как читабельность, так и ремонтопригодность)
– Минимален (делает одно, имеет минимальные зависимости)
- Хорошо делает то, что делает
Теперь позвольте задать вам вопрос: что для вас хороший код?
Предлагаю вам подумать над этим и опубликовать свой ответ в комментариях.
Что касается меня, я тоже буду продолжать думать над этим вопросом, чтобы найти свой собственный ответ.
Я также планировал в ближайшие недели задать этот вопрос некоторым разработчикам, которых я уважаю, чтобы поделиться с вами их ответами с моими комментариями. Так что следите за обновлениями!
Первоначально опубликовано на www.samuelpath.com 3 января 2017 г.