Wiele innych odpowiedzi dotyczy większych problemów projektowych lub jest raczej abstrakcyjnych. Jeśli myślisz w kategoriach tego, co wydarzy się w przyszłości, możesz zdefiniować kilka jasnych technik, które pomogą przygotować kod na przyszłość .
Przede wszystkim myśl, że w przyszłości ktoś spróbuje dodać funkcję do kodu lub spróbuje ponownie użyć kodu w innym miejscu. Mogą także próbować naprawić funkcję w kodzie. Oczywiście posiadanie dobrego, czystego kodu jest wymaganym punktem wyjścia, ale są też pewne specyficzne techniki, które można wykonać.
Programowanie defensywne : Sprawdzaj dane wejściowe poza tym, czego aktualnie potrzebuje Twoja aplikacja. Ilekroć wywołujesz interfejsy API, upewnij się, że ich dane wejściowe są czymś, czego można się spodziewać. W przyszłości ludzie będą mieszać nowe wersje kodu, więc zakres błędów i zwrotów API zmieni się z obecnego.
Elliminate Undefined Behavior : Wiele kodu ma zachowanie, które ewoluuje znikąd. Pewne kombinacje danych wejściowych prowadzą do pewnych wyników, których nikt tak naprawdę nie zamierzał, ale tak się dzieje. Teraz nieuchronnie ktoś będzie polegał na tym zachowaniu, ale nikt nie będzie o nim wiedział, ponieważ nie jest zdefiniowany. Każdy, kto spróbuje zmienić zachowanie w przyszłości, niechcący coś zepsuje. Skorzystaj teraz z kontroli bezpieczeństwa i spróbuj usunąć / zablokować wszystkie niezdefiniowane zastosowania kodu.
Zautomatyzowany pakiet testowy : Jestem pewien, że możesz znaleźć tomy napisane o potrzebie testów jednostkowych. Jednak w odniesieniu do sprawdzania poprawności w przyszłości jest to krytyczny punkt pozwalający komuś na zmianę kodu. Refaktoryzacja jest niezbędna do utrzymania czystego kodu, ale jeśli brakuje dobrego zestawu testów, nie można bezpiecznie refaktoryzować.
Izolacja i segregacja : Hermetyzacja i odpowiednia modularyzacja to dobra zasada projektowania, ale musisz wyjść poza to. Często okazuje się, że musisz użyć biblioteki, interfejsu API lub produktu, co może mieć wątpliwą przyszłość. Może z powodu problemów z jakością, problemów z licencjonowaniem lub dalszego rozwoju przez autorów. W takich przypadkach należy poświęcić więcej czasu na umieszczenie warstwy między tobą a tym kodem. Zmniejsz API do tego, czego potrzebujesz, aby sprzęgło było bardzo niskie, aby umożliwić łatwiejszą wymianę w przyszłości.