Od jakiegoś czasu zastanawiam się nad tym tematem.
Mój wniosek jest taki - nie jest to kwestia ilości, ale jakości i kontekstu.
Na przykład odpowiednia struktura projektu pokonuje komentarze wyjaśniające lokalizację plików (implementacja a zamiar)
Podobnie, klasyfikacja w celu wyjaśnienia nazewnictwa pokonuje kontekst (Id na pacjencie -> Patient.Id).
Wierzę, że DDD ma coś do powiedzenia w dobrej dokumentacji - klasyfikacja zapewnia kontekst, kontekst tworzy granice, a granice prowadzą do zamierzonych implementacji (to jest to, gdzie należy, a nie musi istnieć).
Sam kod nie jest wystarczająco dobry, aby uznać go za dokumentację. Problem w większości przypadków nie polega na tym, że działanie kodów jest komentowane lub nie komentowane, ale raczej siła napędowa (logika domeny) nie jest.
Czasami zapominamy, kto jest szefem - jeśli kod się zmieni, logika domeny lub rozumowanie nie powinny, ale jeśli logika domeny lub rozumowanie zmieni się, kod na pewno się zmieni.
Spójność jest również bardzo ważna - sama konwencja jest bezużyteczna, jeśli nie jest spójna.
Wzorce projektowe to nie tylko „dobra praktyka” - to żargon, który programiści powinni zrozumieć. Mówienie deweloperowi, aby dodał nowy typ do fabryki, jest lepiej zrozumiałe niż dodawanie nowego typu do metody (gdzie kontekst i spójność są słabe lub brakuje).
Połowa walki to znajomość .
Na marginesie, interfejsy API, które wydają się faworyzować wiele dokumentacji, są również bardzo wrażliwe na domeny i kontekst. Czasami funkcja kopiowania nie jest zła (to samo, różne konteksty) i powinna być traktowana jako osobna.
Jeśli chodzi o komentowanie, zawsze warto wskazać logikę domeny leżącą u podstaw tego rozumowania.
Na przykład pracujesz w branży medycznej. W swojej metodzie piszesz „IsPatientSecure = true;”
Teraz każdy porządny programista może dowiedzieć się, że pacjent jest oznaczony jako bezpieczny. Ale dlaczego? Jakie są implikacje?
W tym przypadku pacjent jest więźniem, który został bezpiecznie przeniesiony do szpitala poza siedzibą. Wiedząc o tym, łatwiej jest wyobrazić sobie wydarzenia, które doprowadziły do tego momentu (i być może to, co wciąż musi się wydarzyć).
Może ten post wydaje się w najlepszym razie filozoficzny - ale pamiętaj, że piszesz o „rozumowaniu” lub „logice”, a nie o kodzie.