Найти тему

Чистый код: функции и комментарии

Оглавление

Продолжаю свой героический путь по "Чистому коду" Роберта Мартина. Собрал для себя и вас небольшой конспект. С содержательными именами разобрались в прошлой части. Теперь настал черед функций и комментариев.

Функции

  • Функция должна выполнять только одну операцию и делать это хорошо. Например, функция должна отвечать на вопрос или что-то делать, но не обе этих вещи сразу
  • Все команды внутри функции должны относиться к одному уровню абстракции
  • В идеале, за каждой функцией должен следовать следующий уровень абстракции. От самого высокого уровня ко все более примитивному.
  • В идеальном случае, количество входящих аргументов функции равно нулю. В приемлемом, одному или двум. Если у функции три или больше аргументов, весьма вероятно, что некоторые из них можно упаковать в отдельном классе и вызывать уже внутри функции
  • Аргументы флаги - это зло. Они заставляют функцию делать две операции вместо одной (при положительном значении и отрицательном)
  • Нормальный процесс - написать длинные и сложные функции, а затем сократить их и привести в оптимальный вид. Главное, сразу подготовить тесты

Комментарии

  • Комментарии - инструмент, к которому программист прибегает, если его код недостаточно понятен
  • Случаи, в которых комментарии уместны: юридическая информация, комментарии к общедоступным API, TODO (главное, как только появится возможность, вернуться к нему и сделать все запланированное, а сам комментарий удалить), пояснение намерений
  • Хорошие комментарии редки, находятся в непосредственной близости от участка кода, к которому относятся, невелики по объему и максимально точны

В качестве небольшой практики продолжаю доставать пыльные кусочки кода из первых заданий и стараюсь переписать их с учетом новой информации.

первый вариант
первый вариант

Не самый очевидный код, несмотря на достаточно простые операции. Этот скрипт должен создавать 10 файлов и записывать в них несколько случайных чисел, а затем открывать два случайных файла и суммировать числа, написанные в них (в рамках задания не было точных комментариев, есть ли необходимость возвращать число и я об этом не задумывался. Главное - видеть на экране, разве нет?)

после переработки
после переработки

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