A review by takeshi_1
Чистая архитектура. Искусство разработки программного обеспечения by Robert C. Martin, Роберт Мартин

5.0

Якісне продовження "чистої" серії. Друга частина значно цікавіша за попередню, з ще більшою кількістю прикладів. Якщо "[b:Clean Code: A Handbook of Agile Software Craftsmanship|3735293|Clean Code A Handbook of Agile Software Craftsmanship|Robert C. Martin|https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1436202607l/3735293._SX50_.jpg|3779106]" - це основи, або IT-буквар як я говорив у відгуку, то "Clean Architecture" - це вже старша школа.

Автор грунтовно підказує як дизайнити код, який буде задовільяти не лише поточні вимоги, а і буде готовим до нових. Як каже Роберт Мартін, “Ціль архітектури - зменшити затрати на розширення”. Починається книга здалеку - з огляду парадигм програмування типу ООП, функціонального, структурного, тощо. Доповнюється вже більш приземленими поняттями і принципами. До речі, саме після прочитання цієї книги я зрозумів, що Single Responsibility насправді має на увазі не одну задачу яка рішається компонентом, а саме одну причину бути зміненим. Однією з найцінніших порад з книги я можу назвати “Відкладіть прийняття рішення, наскільки це можливо”, особливо коли це стосується технічних питань. Цього можна зокрема досягти використовуючи домен-центричні архітектури типу Hexagonal ([b:Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java|52774354|Get Your Hands Dirty on Clean Architecture A hands-on guide to creating clean web applications with code examples in Java|Tom Hombergs|https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1570982771l/52774354._SX50_SY75_.jpg|73101998]) або Clean. Важливо пам’ятати що низькорівневі деталі мають залежати від високорівневих, як плагіни залежать від головного модуля, а не навпаки. Іншими словами це можна сказати що архітектура має бути use-case-driven, а не framework-driven. В кінці книги автор вводить термін "кричаща архітектура", описуючи добре спроектований проект, проект суть якого можна зрозуміти швидко оглянувши назви модулів і класів.

Це точно одна з книг, до якої ви будете повертатися знову і знову, доповнюючи її новим досвідом і реальностями індустрії. Варто мати її в своїй бібліотеці. Рекомендую