
Czy S.O.L.I.D ma jeszcze sens w dobie LLMów?
Umiejętność projektowania czytelnego kodu jest niezbędnym elementem wiedzy technicznej.
Słysze coraz więcej teorii, że skoro AI może wygenerować dowolną ilość kodu, to dbanie o jego architekturę i czytelność przestaje mieć znaczenie. “Jak AI napisał, to sobie później ogarnie”. Nie wiem czy zwykłe przewracanie oczami i głośne wzdychanie wystarczy, czy to już czas, żeby zacząć głośno przeklinać…? Moje doświadczenie podpowiada mi coś wręcz przeciwnego - przy wzroście produkcji kodu, porządek staje się krytycznym czynnikiem sukcesu projektów opartych o rozwijające się oprogramowanie.
Używamy akronimów takich jak S.O.L.I.D., aby nie zapominać o konkretnych regułach i pisać oprogramowanie łatwe do utrzymania przez innych deweloperów. Każdy nadmiarowy lub nieefektywny fragment kodu był dotychczas kosztem mierzonym w czasie potrzebnym na jego zrozumienie; w jego błędogenności; a czasem też w “ilości przekleństw na minutę” tych, którzy utrzymywali po nas aplikacje. Dzisiaj dochodzą do tego jeszcze faktury za tokeny (czyli za moc obliczeniową AI), bo niskiej jakości kod zwiększa ilość wysyłanych do modelu danych lub powoduje więcej powtórzeń tych samych operacji. Czasem trzeba się nieźle nagimnastykować, aby AI zrozumiał w ogóle oryginalny zamysł i połączył poprawnie kropki - a za to wszystko trzeba płacić i to coraz więcej.
Jeżeli przyjmiemy założenie, że modele będą grały coraz większą rolę w procesie wytwarzania, a ich wsparcie zwiększa ilość wyprodukowanych linijek kodu przypadających na programistę, to “czysty kod” jest dziś ważniejszy niż kiedykolwiek! Bazowanie modeli na słabym kodzie, będzie generowało jeszcze więcej słabego kodu, a to spowoduje, że coraz więcej energii poświęcimy na ręczne rozwiązywanie problemów albo powtarzające się nieudane próby generowania kodu przez sztuczną inteligencję.
Fundamenty projektowania czytelnego kodu są jednym z najbardziej niezbędnych elementów wiedzy programistycznej. Nie ograniczałbym się jedynie do SOLID’a, ale to zawsze będzie dobra baza dla specjalistów zajmujących się pisaniem lub generowaniem kodu w aplikacjach o architekturze obiektowej. W ramach tego akronimu znajdziemy żelazne zasady, które przetrwały już dekady i pomogły stworzyć niejeden stabilnie działający i czytelny kod.
Paweł Nejczew