Чтение на выходные: «Чистая архитектура. Искусство разработки программного обеспечения» Роберта Мартина

Алина Лихота

Сегодня в рубрике снова Роберт Мартин. Он же — «дядюшка Боб». Мы уже отзывались о нём тепло в материале о другой его книге на Хабре, так как при чтении от страниц буквально веет оптимизмом и заботой о людях и идеалах — в виде чистого кода и не только. Мы планируем перечитать всего его книги. На этот раз взяли с полки «Чистую архитектуру».

Роберт Мартин — инженер и программист. Причем кодит он с 12 лет и с тех пор, когда писать код нужно было ещё на бумаге (это не шутка). Как автор он пишет отличные и понятные книги с чистой и лаконичной структурой: никакой воды, немного личных историй, всё по делу, по содержанию и иногда в табличках. Отнюдь не удивительно, что и с архитектурой программного обеспечения у него тоже всё хорошо.

О чем книга

О дизайне и архитектуре. «Одна из целей этой книги — устранить весь этот беспорядок и определить раз и навсегда, что такое дизайн и архитектура . Прежде всего, я утверждаю, что между этими понятиями нет никакой разницы. Вообще никакой», — уточняет Роберт Мартин и раскрывает подробности на простом примере: «Возьмем для примера архитектора, спроектировавшего мой новый дом. Этот дом имеет архитектуру? Конечно! А в чем она выражается? Ну . . . это форма дома, внешний вид, уступы, а также расположение комнат и организация пространства внутри. Но когда я рассматривал чертежи, созданные архитектором, я увидел на них массу деталей. Я увидел расположение всех розеток, выключателей и светильников. Я увидел, какие выключатели будут управлять теми или иными светильниками. Я увидел, где будет находиться узел отопления, а также местоположение и размеры водонагревательного котла и насоса. Я увидел подробное описание, как должны конструироваться стены, крыша и фундамент. Проще говоря, я увидел все мелкие детали, поддерживающие все высокоуровневые решения. Я также увидел, что низкоуровневые детали и высокоуровневые решения вместе составляют дизайн дома. То же относится к архитектуре программного обеспечения. Низкоуровневые детали и высокоуровневая структура являются частями одного целого. Они образуют сплошное полотно, определяющее форму системы. Одно без другого невозможно; нет никакой четкой линии, которая разделяла бы их. Есть просто совокупность решений разного уровня детализации».

Система и правила

Фокус или, иначе говоря, трюк Роберта Мартина заключается в том, что он умеет зрить в корень. Систему знаний и приемов ему удается объяснить через правила и принципы, которых раньше либо не существовало, либо их никто не оглашал. Даже если вы посмотрите оглавление, то заметите, что основы и закономерности он вынес в отдельные главы и блоки. Прямо как в учебнике или мануале.

При этом Роберт Мартин может поспорить со стереотипами. Например, так: «Функциональность или архитектура? Что более ценно? Что важнее — правильная работа системы или простота ее изменения? Если задать этот вопрос руководителю предприятия, он наверняка ответит, что важнее правильная работа. Разработчики часто соглашаются с этим мнением. Но оно ошибочно. Я могу доказать ошибочность этого взгляда простым логическим инструментом исследования экстремумов.

  • Если правильно работающая программа не допускает возможности ее изменения, она перестанет работать правильно, когда изменятся требования, и вы не сможете заставить ее работать правильно. То есть программа станет бесполезной.
  • Если программа работает неправильно, но легко поддается изменению, вы сможете заставить работать ее правильно и поддерживать ее работоспособность по мере изменения требований. То есть программа постоянно будет оставаться полезной.

Эти аргументы могут показаться вам неубедительными. В конце концов, нет таких программ, которые нельзя изменить. Однако есть системы, изменить которые практически невозможно, потому что стоимость изменений превысит получаемые выгоды. Многие системы достигают такого состояния в некоторых своих особенностях или конфигурациях».

Здесь хотелось бы обратить внимание на то, что Роберт Мартин рассуждает и с учетом перспектив — окажется ли решение рациональным или нет. Как-то универсально даже получается. Можно применять и не только в IT. То есть это база.

Кому будет интересна эта книга

Как и книга про идеального программиста это чтение о том, как стать профессионалом в своем деле, но всё-таки в области программного обеспечения и конкретно архитектуры ПО. С одной стороны, всё написано лаконично и простым языком, выводы выделены, есть короткие заключения к каждой главе, примеры и иллюстрации — то есть для общего образования можно почитать, даже если тема просто вызывает у вас любопытство. С другой — именно специалистам в своей нише книга может помочь систематизировать и свой личный опыт, проанализировать его, а возможно, покритиковать автора и найти новые объяснения принципам своей работы.

Совет читателю: не ожидайте от книги глубокого погружения в теорию, но рассчитывайте на то, что из фирменного легкого повествования Роберта Мартина вы сможете почерпнуть что-то свое.

Алина Лихота
151
+1
151
Наши каналы

Хотите быть в курсе всего?
Подпишитесь на нашу рассылку

Спасибо за подписку! Замечательно, что вы с нами.

Лучшие идеи и технологии со всего мира — в вашей почте

Спасибо за подписку! Замечательно, что вы с нами.