Простыня
Поскольку я поставил Octopress, то теперь сбылась моя мечта и я могу вести блог в своем любимом текстовом редакторе vim. Про octopress я напишу как-нибудь потом отдельно, потому что система для инженера программных систем просто необыкновенная: простая и удобная.
Но сегодня я хочу поговорить о «простыне» — так я шутя называют длинный последовательный кусок кода. Так вот, моя основная мысль — простыня является самым лучшим кодом. Это так по одной простой причине, что последовательный код гораздо проще читать и понимать. Конечно, если при этом не происходит нарушения правила OOO (Once and Only Once), то есть нет ненужного дублирования кода. Простыня — это способ выполнять правило KISS (Keep It Simple, Stupid), то есть правила держать систему максимально простой.
Если можно написать простыню, а кто-то пишет прокси враппер декоратора абстрактоной фабрики, то это не очень хорошо. Программист, который не решает задачу, а занимается «высокими материями» из любви к искусству — не очень хороший программист.
Именно поэтому я стараюсь избегать callback`ов. Когда их становится слишком много, программа превращается в «макароны», понять в ней, что за чем происходит занимает много времени и сил. Понять контекст исполнения тоже становится непросто, представить себе состояние в какой-то точке исполнения без дебаггера тоже стоит большого труда.
Конечно, есть много ситуаций, когда callback-и нужны, и всегда надо исходить из конкретной ситуации. Инженер не может раз и навсегда установить для себя какие-то четкие правила, потому что задачи, которые он решает, хоть и похожие, но зачастую в мелочах очень сильно отличаются. И то, что работает в одном месте, не обязательно будет работь во вроде бы похожем другом.
Если вы читаете чужой код, который делает что-то не очень простое, а он написан так, что понятен даже дураку, скорее всего это работа рук большого мастера программирования.