Кто-то спросит: так ли уж часто читается наш код? Разве большая часть времени не уходит на его написание?
Вам когда-нибудь доводилось воспроизводить запись сеанса редактирования? В 80-х и 90-х годах существовали редакторы, записывавшие все нажатия клавиш (например, Emacs). Вы могли проработать целый час, а потом воспроизвести весь сеанс, словно ускоренное кино. Когда я это делал, результаты оказывались просто потрясающими. Большинство операций относилось к прокрутке и переходу к другим модулям!
Боб открывает модуль.
Он находит функцию, которую необходимо изменить.
Задумывается о последствиях.
Ой, теперь он переходит в начало модуля, чтобы проверить инициализацию переменной.
Снова возвращается вниз и начинает вводить код.
Стирает то, что только что ввел.
Вводит заново.
Еще раз стирает!
Вводит половину чего-то другого, но стирает и это!
Прокручивает модуль к другой функции, которая вызывает изменяемую функцию, чтобы посмотреть, как она вызывается.
Возвращается обратно и восстанавливает только что стертый код.
Задумывается.
Снова стирает!
Открывает другое окно и просматривает код субкласса. Переопределяется ли в нем эта функция?
. . .
В общем, вы поняли. На самом деле соотношение времени чтения и написания кода превышает 10:1. Мы постоянно читаем свой старый код, поскольку это необходимо для написания нового кода.
Из-за столь высокого соотношения наш код должен легко читаться, даже если это затрудняет его написание. Конечно, написать код, не прочитав его, невозможно, так что упрощение чтения в действительности упрощает и написание кода.
Уйти от этой логики невозможно. Невозможно написать код без предварительного чтения окружающего кода. Код, который вы собираетесь написать сегодня, будет легко или тяжело читаться в зависимости от того, насколько легко или тяжело читается окружающий код. Если вы хотите быстро справиться со своей задачей, если вы хотите, чтобы ваш код было легко писать — позаботьтесь о том, чтобы он легко читался.