Skąd wiecie, że piszecie najbardziej niezawodny kod bez nadmiernej inżynierii?
Co uważasz za solidny kod? Kod, który jest już gotowy na przyszłość i tak potężny, że poradzi sobie w każdej sytuacji? Źle, nikt nie może przewidzieć przyszłości! I znowu źle, ponieważ będzie to skomplikowany, niemożliwy do utrzymania bałagan.
Stosuję różne zasady: przede wszystkim YAGNI (jeszcze) i KISS , więc nie piszę niepotrzebnego kodu. To również skutecznie zapobiega nadmiernej inżynierii. Refaktoryzuję aplikację, gdy potrzebne są rozszerzenia. Nowoczesne narzędzia do refaktoryzacji pozwalają dość łatwo tworzyć interfejsy i wymieniać implementacje, gdy są potrzebne.
Następnie staram się, aby kod, który piszę, był jak najbardziej niezawodny, co obejmuje eliminację tylu ścieżek, które program może obrać (i również stanów), jak to możliwe, i trochę programowania Spartan . Dużą pomocą są funkcje / metody „atomowe”, które nie polegają na stanach zewnętrznych lub przynajmniej nie pozostawiają programu w niespójnym stanie, gdy zawodzą. Jeśli zrobisz to dobrze, jest bardzo mało prawdopodobne, że kiedykolwiek skończysz z kodem spaghetti i jest to błogosławieństwo dla łatwości konserwacji. Ponadto w projektowaniu obiektowym zasady SOLID są doskonałym przewodnikiem po solidnym kodzie.
Naprawdę dowiedziałem się, że często możesz zmniejszyć złożoność, na przykład kombinatoryczne wybuchy ścieżek lub stanów programu, głęboko zastanawiając się, jak zaprojektować to jako najprostszą możliwą ścieżkę. Staraj się ograniczyć możliwe kombinacje do minimum, wybierając najlepszą kolejność podprogramów i projektując je do tego celu.
Solidny kod to zawsze prosty i przejrzysty kod, ale prostota jest cechą, która nie zawsze jest łatwa do osiągnięcia. Jednak powinieneś do tego dążyć. Zawsze po prostu pisz najprostszy możliwy kod i dodawaj złożoności tylko wtedy, gdy nie masz innego wyboru.
Prostota jest solidna, złożoność delikatna.
Złożoność zabija.