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

Слово беспорядок можно определить следующим образом:

большое количество вещей, расставленных неаккуратно или упорядоченно: скученное или беспорядочное собрание вещей

Что действительно привлекло мое внимание в этом определении, так это термин расстройство. Чтобы что-то было в беспорядке, сначала в нем должен быть порядок. Беспорядок в чем-то означает нарушение систематического функционирования или аккуратного расположения этого.

Я часто видел, как кодовые базы впадают в состояние беспорядка, переходя из упорядоченного состояния в беспорядочное. Я думаю, главная причина этого в том, что нам трудно отпустить. Мы думаем: «Возможно, мне это понадобится в будущем».

Я часто видел…

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

Первый пункт — это просто несоблюдение принципа YAGNI (Вам это не понадобится). Это происходит потому, что программист считает, что это может понадобиться в будущем. Рон Джеффрис мудро говорит: «Всегда внедряйте вещи, когда они вам действительно нужны, а не тогда, когда вы просто предвидите, что они вам нужны».

Последние два являются симптомами одного и того же желания: мы можем захотеть восстановить код позже или вернуться к нему для какой-то другой цели. Таким образом, мы держим его вокруг. (И это происходит не только в коде, я видел это и в базах данных — и какой беспорядок получается!)

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

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

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

Думаете, вам может что-то понадобиться? Не хочешь забыть? Как насчет того, чтобы записать заметку на каталожной карточке или в вашей любимой программе для создания заметок, чтобы напомнить себе об этом? Не применяйте его, просто запишите достаточно, чтобы вы могли вспомнить свои мыслительные процессы позже. Если вы прочитаете эту заметку позже и не сможете понять, о чем вы думали, это может указывать на то, что это была плохая идея с самого начала (или что вам нужно улучшить свои навыки ведения заметок).

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

Конечно, наличие хорошего набора тестов делает удаление кода более осуществимым и может повысить ваш комфорт. Но даже без хорошего набора тестов (*вздох*) вы все равно можете заставить себя отпустить страх. Что может быть хуже? Возможно, вам придется снова писать код? Мне это не кажется чем-то плохим; вы, вероятно, даже сделаете это лучше во второй или третий раз.