Начинающие программисты могут подумать, что все это чепуха, что в наши дни все совсем иначе и лучше, что правила прошлого остались в прошлом. Если они действительно так думают, они, к сожалению, сильно ошибаются. Правила не изменились. Несмотря на появление новых языков, фреймворков и парадигм, правила остались теми же, как во времена, когда в 1946-м Алан Тьюринг написал первый программный код.
Изменилось только одно: тогда, в прошлом, мы не знали этих правил. Поэтому нарушали их снова и снова. Теперь, с полувековым опытом за плечами, мы знаем и понимаем правила.
Именно об этих правилах — не стареющих и не изменяющихся — рассказывает эта книга.
Благодарности
Ниже перечислены все (не в каком-то определенном порядке), кто сыграл важную роль в создании этой книги:
Крис Гузиковски (Chris Guzikowski)
Крис Зан (Chris Zahn)
Мэтт Хойзер (Matt Heuser)
Джефф Оверби (Jeff Overbey)
Мика Мартин (Micah Martin)
Джастин Мартин (Justin Martin)
Карл Хикман (Carl Hickman)
Джеймс Греннинг (James Grenning)
Симон Браун (Simon Brown)
Кевлин Хенни (Kevlin Henney)
Джейсон Горман (Jason Gorman)
Дуг Бредбери (Doug Bradbury)
Колин Джонс (Colin Jones)
Гради Буч (Grady Booch)
Кент Бек (Kent Beck)
Мартин Фаулер (Martin Fowler)
Алистер Кокберн (Alistair Cockburn)
Джеймс О. Коплиен (James O. Coplien)
Тим Конрад (Tim Conrad)
Ричард Ллойд (Richard Lloyd)
Кен Финдер (Ken Finder)
Крис Ивер (Kris Iyer (CK))
Майк Карев (Mike Carew)
Джерри Фицпатрик (Jerry Fitzpatrick)
Джим Ньюкирк (Jim Newkirk)
Эд Телен (Ed Thelen)
Джо Мейбл (Joe Mabel)
Билл Дегнан (Bill Degnan)
И многие другие.
Когда я просматривал книгу в окончательном варианте и перечитывал главу о кричащей архитектуре, передо мной стоял образ улыбающегося Джима Уэрича (Jim Weirich) и в ушах слышался его звонкий смех. Удачи тебе, Джим!
Об авторе
Роберт С. Мартин (Robert C. Martin), известный также как «дядюшка Боб» (Uncle Bob), профессионально занимается программированием с 1970 года. Сооснователь компании
Мартин написал и выступил редактором множества книг, включая
Часть I. Введение
Чтобы написать действующую программу, не нужно много знать и уметь. Дети в школе делают это постоянно. Юноши и девушки в колледжах начинают свой бизнес, вырастающий до стоимости в миллиарды долларов, написав несколько строк кода на PHP или Ruby. Начинающие программисты в офисах по всему миру перелопачивают горы требований, хранящихся в гигантских баг-трекерах, и вносят исправления, чтобы заставить свои системы «работать». Возможно, они пишут не самый лучший код, но он работает. Он работает, потому что заставить что-то работать — один раз — не очень сложно.
Создать программу, которая будет работать правильно, — совсем другое дело. Написать правильную программу сложно. Для этого необходимы знания и умения, которые молодые программисты еще не успели приобрести. А чтобы приобрести их, требуется мыслить и анализировать, на что у многих программистов просто нет времени. Это требует такой самодисциплины и организованности, которые не снились большинству программистов. А для этого нужно испытывать страсть к профессии и желание стать профессионалом.
Но когда создается правильный программный код, происходит что-то необычное: вам не требуются толпы программистов для поддержки его работоспособности. Вам не нужна объемная документация с требованиями и гигантские баг-трекеры. Вам не нужны огромные опенспейсы, работающие круглые сутки без выходных.
Правильный программный код не требует больших трудозатрат на свое создание и сопровождение. Изменения вносятся легко и быстро. Ошибки немногочисленны. Трудозатраты минимальны, а функциональность и гибкость — максимальны.