Jako programiści uważam, że naszym celem jest dostarczanie dobrych abstrakcji na temat danego modelu domeny i logiki biznesowej. Ale gdzie ta abstrakcja powinna się skończyć? Jak dokonać kompromisu między abstrakcją a wszystkimi jej zaletami (elastyczność, łatwość zmiany itp.) Oraz łatwością zrozumienia kodu i wszystkimi jego zaletami.
Wydaje mi się, że mam tendencję do pisania zbyt abstrakcyjnego kodu i nie wiem, jak dobry jest; Często piszę to tak, jakby to była mikrostruktura, która składa się z dwóch części:
- Mikromoduły, które są połączone w mikrośrodowisko: moduły te można łatwo zrozumieć, opracować i utrzymywać jako pojedyncze jednostki. Ten kod zasadniczo reprezentuje kod, który faktycznie wykonuje czynności funkcjonalne, opisane w wymaganiach.
- Kod łączący; teraz tutaj uważam, że jest problem. Ten kod bywa skomplikowany, ponieważ czasami jest bardzo abstrakcyjny i na początku trudno go zrozumieć; wynika to z faktu, że jest to czysta abstrakcja, podstawa w rzeczywistości i logika biznesowa są wykonywane w prezentowanym kodzie 1; z tego powodu ten kod nie powinien zostać zmieniony po przetestowaniu.
Czy to dobre podejście do programowania? Że to, mając zmieniający się kod bardzo rozdrobniony w wielu modułach i bardzo łatwy do zrozumienia, a niezmienny kod bardzo złożony z abstrakcji POV? Czy cały kod powinien być jednolicie złożony (to znaczy kod 1 bardziej złożony i powiązany i kod 2 prostszy), tak aby każdy, kto go przejrzy, zrozumiałby go w rozsądnym czasie, ale zmiana jest droga lub rozwiązanie przedstawione powyżej jest dobre, gdzie „zmiana kodu” jest bardzo łatwa do zrozumienia, debugowania, zmiany, a „linkowanie kodu” jest dość trudne.
Uwaga: nie chodzi o czytelność kodu! Zarówno kod 1, jak i 2 są czytelne, ale kod 2 ma bardziej złożone abstrakcje, podczas gdy kod 1 zawiera proste abstrakcje.