Чистая архитектура. Искусство разработки программного обеспечения

Страница 3

Именно об этих правилах – не стареющих и не изменяющихся – рассказывает эта книга.

Благодарности

Ниже перечислены все (не в каком-то определенном порядке), кто сыграл важную роль в создании этой книги:

Крис Гузиковски (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 года. Сооснователь компании cleancoders. com, предлагающей видеоуроки для разработчиков программного обеспечения, и основатель компании Uncle Bob Consulting LLC, оказывающей консультационные услуги и услуги по обучению персонала крупным корпорациям. Служит мастером в консалтинговой фирме 8th Light, Inc. в городе Чикаго. Опубликовал десятки статей в специализированных журналах и регулярно выступает на международных конференциях и демонстрациях. Три года был главным редактором журнала C++ Report и первым председателем Agile Alliance.

Мартин написал и выступил редактором множества книг, включая The Clean Coder [6 - Роберт Мартин. Идеальный программист. Как стать профессионалом разработки ПО. СПб. : Питер, 2016. – Примеч. пер. ], Clean Code [7 - Роберт Мартин. Чистый код: создание, анализ и рефакторинг. СПб. : Питер, 2013. – Примеч. пер. ], UML for Java Programmers, Agile Software Development [8 - Роберт Мартин. Быстрая разработка программ. Принципы, примеры, практика. М.: Вильямс, 2004. – Примеч. пер. ], Extreme Programming in Practice, More C++ Gems, Pattern Languages of Program Design 3 и Designing Object Oriented C++ Applications Using the Booch Method».

I. Введение

Чтобы написать действующую программу, не нужно много знать и уметь. Дети в школе делают это постоянно. Юноши и девушки в колледжах начинают свой бизнес, вырастающий до стоимости в миллиарды долларов, написав несколько строк кода на PHP или Ruby. Начинающие программисты в офисах по всему миру перелопачивают горы требований, хранящихся в гигантских баг-трекерах, и вносят исправления, чтобы заставить свои системы «работать». Возможно, они пишут не самый лучший код, но он работает. Он работает, потому что заставить что-то работать – один раз – не очень сложно.

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

Но когда создается правильный программный код, происходит что-то необычное: вам не требуются толпы программистов для поддержки его работоспособности. Вам не нужна объемная документация с требованиями и гигантские баг-трекеры. Вам не нужны огромные опенспейсы, работающие круглые сутки без выходных.

Правильный программный код не требует больших трудозатрат на свое создание и сопровождение. Изменения вносятся легко и быстро. Ошибки немногочисленны. Трудозатраты минимальны, а функциональность и гибкость – максимальны.

Да, такое представление кажется утопическим. Но я видел это воочию. Я участвовал в проектах, где дизайн и архитектура системы упрощали их создание и сопровождение. У меня есть опыт работы в проектах, потребовавших меньшего числа участников, чем предполагалось. Мне довелось работать над системами, в которых ошибки встречались удивительно редко. Я видел, какой невероятный эффект оказывает хорошая архитектура на систему, проект и коллектив разработчиков. Я был на земле обетованной.

Но я не прошу верить мне на слово. Оглянитесь на свой опыт. Случалось ли у вас что-то противоположное? Доводилось ли вам работать над системами с настолько запутанными и тесными связями, что любое изменение, независимо от сложности, требовало недель труда и было сопряжено с огромным риском? Испытывали ли вы сопротивление плохого кода и неудачного дизайна? Приходилось ли вам видеть, как дизайн системы оказывал отрицательное влияние на моральный дух команды, доверие клиентов и терпение руководителей? Доводилось ли вам оказываться в ситуации, когда отделы, подразделения и целые компании становились жертвами неудачной архитектуры их программного обеспечения? Были ли в аду программирования?

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

1. Что такое дизайн и архитектура?

За долгие годы вокруг понятий «дизайн» и «архитектура» накопилось много путаницы. Что такое дизайн? Что такое архитектура? Чем они различаются?

Одна из целей этой книги – устранить весь этот беспорядок и определить раз и навсегда, что такое дизайн и архитектура. Прежде всего, я утверждаю, что между этими понятиями нет никакой разницы. Вообще никакой.

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

Возьмем для примера архитектора, спроектировавшего мой новый дом. Этот дом имеет архитектуру? Конечно! А в чем она выражается? Ну… это форма дома, внешний вид, уступы, а также расположение комнат и организация пространства внутри. Но когда я рассматривал чертежи, созданные архитектором, я увидел на них массу деталей. Я увидел расположение всех розеток, выключателей и светильников. Я увидел, какие выключатели будут управлять теми или иными светильниками. Я увидел, где будет находиться узел отопления, а также местоположение и размеры водонагревательного котла и насоса. Я увидел подробное описание, как должны конструироваться стены, крыша и фундамент.

Читать похожие на «Чистая архитектура. Искусство разработки программного обеспечения» книги

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

В книге описывается около 100 объектов самой неоцененной эпохи советской архитектуры. Это первый путеводитель по Моск­ве, который рассматривает как целостное явление архитектуру тридцатилетия от Хрущёва до Горбачёва – от наивного модернизма оттепели до постмодернизма, включая Дворец пионеров, Останкинскую телебашню, кинотеатр «Россия», здание ТАСС, «золотые мозги» Академии наук, а также менее известные проекты, например, «Дом нового быта» или музей АЗЛК. Авторы предлагают увидеть эти

Задумались ли вы, как много можно узнать о европейской истории и развитии архитектуры, просто прогуливаясь по улицам Парижа? Перестроенный с нуля, сегодняшний Париж – результат масштабного эксперимента второй половины XIX века. Лучше всех об этом сможет поведать архитектурный гид и автор телеграм-канала «А как там в Париже?», специалист по творчеству Ле Корбюзье, Мария Троицкая. Прочитав эту книгу, вы не только начнете разбираться в архитектурных стилях, но и узнаете, какие процессы в обществе

В этом путеводителе нет ни Эрмитажа, ни Петергофа – авторы приглашают вас в Ленинград. Но Петербург в этой книге тоже есть, потому что именно он определил характер ленинградского модернизма. Модернизм был здесь не отторжением традиции, а рефлексией по ее поводу. Это модернизм традиционализма – не «воинственный», но диалогичный – чем и интересен. В эпоху космоса и джаза ленинградские зодчие продолжали мыслить ансамблями, а не отдельными объектами, что тогда казалось архаикой, но именно такой

Книга историков архитектуры Елены Овсянниковой и Николая Васильева посвящена жилому комплексу, широко известному как Дом Наркомфина, примечательному своим архитектурным решением.

Это саммари – сокращенная версия книги «Ловушка разработки. Как эффективный продакт-менеджмент создает реальную ценность» Мелиссы Перри. Только самые ценные мысли, идеи, кейсы, примеры. Эффективный продакт-менеджер – человек, который руководит командой, создающей продукты – инновационные, сложные, поражающие воображение пользователей. Он придумывает функционал, ставит задачи перед дизайнерами и разработчиками. Это так… но не совсем. Потому что с таким подходом продуктовые команды часто попадают

Архитектуру называют музыкой, застывшей в камне. Сколько же архитектурных «жанров» накопила цивилизация? Архитектура Древней Греции, готика, рококо, хай-тек: изучая архитектуру, мы узнаем историю. Эта книга поможет читателю разобраться в архитектурных стилях от ранних цивилизаций до современного периода. Издание призвано рассказать простым языком о точной и красивой науке, восполнить возможные пробелы в знаниях и побудить читателя на более глубокое изучение предмета.

«В этой книге я возьму вас в путешествие по мозгу в хронологическом порядке его развития. Путешествие, которое начинается в момент, когда женщина беременеет. Что происходит у нее в голове? Действительно ли во время беременности глупеют или это просто миф? Проявляют ли новорожденные склонность к социальному взаимодействию? Отцы тоже испытывают симптомы беременности? И если да, то как это работает? Станет ли ребенок умнее от прослушивания классической музыки? Почему по-прежнему важно уметь писать

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

Из-за глупого стечения обстоятельств я, Кира Иванова, студентка 4 курса, осталась без практики в крупной компании и подработки одновременно. Остро нуждаясь в деньгах, я согласилась пусть и на сомнительное, но все же выгодное предложение стать уборщицей в доме богатого человека. По правилам я бы никогда не встретила владельца квартиры, в которой усердно начищала до блеска полы, если бы вновь не случайность, перевернувшая не только мою жизнь, но и изменившая чужую судьбу. Но обо всем по порядку.