Tutaj jest wiele przyzwoitych odpowiedzi.
Mam na to kilka uwag.
Jednym z nich jest to, że jeśli nie rozumiesz, dlaczego twój kod wydaje się działać, a) prawdopodobnie nie działa (prawdopodobnie tylko wydaje się, że działa), i b) albo nie zrozumiałeś wystarczająco dobrze problematycznej domeny, kiedy zaczął kodować lub nie rozbił problematycznej domeny na mniejsze, uproszczone jednostki, zanim zacząłeś.
Moje drugie podejście polega na tym, że prawdziwym kluczem jest stosowanie zdrowego rozsądku i konwencji w kodzie. To o wiele większy temat, niż może rozwiązać jeden mały post. Ale szukaj dobrej literatury na ten temat, w tym niektórych starych standbys, takich jak książki „Code Complete” i „Writing Solid Code”.
Zmiana szczegółów implementacji. Jedyną rzeczywistą stałą jest funkcjonalny cel kodu. Jeśli kiedykolwiek napiszesz więcej niż jedną funkcję, z czasem zapomnisz szczegółowe, szczegółowe szczegóły implementacji. Ale z pewnością powinieneś zrozumieć, jak działają elementy, kiedy je konstruujesz, i powinieneś być w stanie narysować schemat całości i zrozumieć, jak elementy działają razem.
Jeśli użyjesz wzorców i będziesz postępować zgodnie ze zdroworozsądkowymi konwencjami, o wiele łatwiej będzie wybrać szczegółowe dane dotyczące implementacji, gdy ponownie spojrzysz na kod. Lub gdy ktoś, kto nigdy wcześniej nie widział kodu, patrzy na niego po raz pierwszy. Ponadto przestrzeganie tych konwencji i wzorców z biegiem czasu będzie oznaczać, że szczegóły implementacji będą się wyróżniać od samych konwencji i wzorców, co jest kolejnym czynnikiem, który ułatwi zrozumienie kodu.
Większość problemów, które rozwiązujemy za pomocą oprogramowania, są z natury złożone. Projektowanie oprogramowania to ćwiczenie w zarządzaniu złożonością.