Robert C. Martin - Clean Architecture
Po “Clean Architecture” Roberta C. Martina sięgnąłem z powodów zawodowych - pracuję obecnie przy przepisywaniu aplikacji w Pythonie zgodnie z założeniami tej architektury i uznałem, że warto lepiej zrozumieć, na czym ona właściwie polega.
Zacznijmy od samej idei Clean Architecture. Rozdzielenie aplikacji na warstwy wydaje się mieć sens w wielu sytuacjach, zwłaszcza gdy sama domena oprogramowania jest skomplikowana. Pomysł na traktowanie każdego komponentu oprogramowania jako coś, co można w dowolnej chwili wymienić zwyczajnie mi się podoba i niesie ze sobą praktyczne implikacje. Natomiast ostrożne wykorzystanie abstrakcji pozwala na zaimplementowanie proponowanej tu architektury bez większych problemów.
Uncle Bob (pseudonim autora) wprowadza zatem konkretne pomysły w przystępny sposób. Nie ma tu zbyt wielu przykładów kodu, ale to dobrze - dzięki temu ta książka jest bardziej uniwersalna i nie ogranicza się do realiów pojedynczej technologii. W związku z tym każdy rozdział można od razu przełożyć na praktykę po prostu idąc do pracy - poniekąd niezależnie od używanego języka programowania.
Na tym mógłbym skończyć, ale jedna rzecz nie daje mi spokoju. Chodzi mianowicie o wydźwięk tej książki. Jakkolwiek zachęcająco nie brzmią reguły Clean Architecture, nie uważałbym tego podejścia za jedyne słuszne. A właśnie tak to w głównej mierze przedstawia autor. Owszem, w paru miejscach zaznacza, że ten rodzaj architektury nie sprawdzi się wszędzie - ale potem znów przedstawia Clean Architecture jako jedyne sensowne rozwiązanie. Co gorsza - są miejsca, gdzie autor wydaje się sugerować, że jeżeli on coś robi w dany sposób, to to jest najlepszy sposób, a sposób ten jest najlepszy, bo on tak robi…
W skrócie, Clean Architecture to pomysł na architekturę oprogramowania, który w moich oczach ma sens i rozwiązuje wiele problemów. Jednak zalatujące dogmatyzmem przedstawienie tej idei i brak ujęcia jej w szerszym kontekście skutecznie sprawiły, że daleki jestem od zachwytu nad tą lekturą. Dlaczego ta architektura jest lepsza niż inne, poza tym, że autor tak twierdzi? Jakie w ogóle są inne rozważone alternatywy? Tego się stąd nie dowiemy.
Warto przeczytać również
- Harry J.W. Percival & Bob Gregory - “Architecture Patterns with Python“: pierwsza z brzegu książka o architekturze, która pokazuje zupełnie inne podejście do architektury niż Clean Architecture.
- Martin Fowler - “Refactoring“: nadal uważam, że zabieranie się za nową architekturę bez chociażby prób refaktoryzacji istniejącego kodu to syzyfowa praca, a ta książka pokazuje jak można sobie z tymi próbami radzić i po co.
- Kent Beck - “Uporządkowany kod“: czasami nawet refaktoryzacja nie wchodzi w grę i trzeba najpierw trochę posprzątać i udokumentować istniejący kod - i o tym jest ta książka.