Myślę, że w rzeczywistości są dwie rzeczy, którymi należy się zająć, i tak naprawdę rozważyłbym je oddzielnie, ponieważ nie można do nich podejść w ten sam sposób, chociaż uważam, że obie są ważne.
- Aspekt techniczny: który ma na celu unikanie ryzykownego lub źle sformułowanego kodu (nawet jeśli został zaakceptowany przez kompilator / tłumacza)
- Aspekt prezentacji: dotyczy samego przedstawienia programu czytelnikom
Techniczny aspekt kwalifikuję do standardu kodowania , podobnie jak Herb Sutter i Andrei Alexandrescu z ich standardami kodowania C ++ . Prezentacja, którą kwalifikuję w stylu kodowania , która obejmuje konwencję nazewnictwa, wcięcie itp.
Standard kodowania
Ponieważ jest to czysto techniczny standard kodowania może być w większości obiektywny. W związku z tym każda reguła powinna być poparta uzasadnieniem. W książce, o której mówiłem, każda pozycja ma:
- Tytuł, prosty i na temat
- Podsumowanie, które wyjaśnia tytuł
- Dyskusja, która ilustruje problem postępowania w inny sposób, a tym samym przedstawia uzasadnienie
- opcjonalne Niektóre przykłady, ponieważ dobry przykład jest wart tysiąca słów
- opcjonalne Lista wyjątków, dla których nie można zastosować tej reguły, czasem z obejściem
- Lista odnośników (inne książki, strony internetowe), które omawiały ten punkt
Uzasadnienie i wyjątki są bardzo ważne, ponieważ podsumowują dlaczego i kiedy.
Tytuł powinien być na tyle wyraźny, że podczas recenzji wystarczy mieć listę tytułów (ściągawka) do pracy. I oczywiście pogrupuj elementy według kategorii, aby łatwiej było na nie zwrócić uwagę.
Sutter i Alexandrescu udało się mieć listę tylko stu przedmiotów, mimo że C ++ jest uważany za włochatego;)
Styl kodowania
Ta część jest na ogół mniej obiektywna (i może być wręcz subiektywna). Chodzi tutaj o zapewnienie spójności, ponieważ pomaga to opiekunom i nowym osobom.
Nie chcesz przystępować do świętej wojny o tym, który styl wcięcia lub nawiasu klamrowego jest tutaj lepszy, istnieją na to fora: więc w tej kategorii robisz rzeczy na zasadzie konsensusu> głosowanie większością> arbitralna decyzja przywódcy (przywódców).
Przykład formatowania znajduje się na liście opcji stylu artystycznego . Idealnie byłoby, gdyby reguły były jasne i kompletne, aby program mógł przepisać kod (choć jest mało prawdopodobne, abyś go kodował;))
W przypadku konwencji nazewnictwa starałbym się łatwo odróżnić klasy / typy od zmiennych / atrybutów.
Również w tej kategorii klasyfikuję „miary”, takie jak:
- wolą metody krótkie od długich: zazwyczaj trudno jest ustalić, jaka jest długość
- wolą wczesny powrót / kontynuuj / przerwa, aby zmniejszyć wcięcie
Różne?
I na koniec, jest jeden element, który rzadko, jeśli w ogóle, jest omawiany w Standardach kodowania, być może dlatego, że jest specyficzny dla każdej aplikacji: organizacja kodu. Problem architektoniczny jest chyba najbardziej wybitnym problemem, zepsuć początkowy projekt, a będziesz nim nękać za wiele lat. Być może powinieneś dodać sekcję dotyczącą podstawowej obsługi plików: nagłówki publiczne / prywatne, zarządzanie zależnościami, separacja problemów, współpraca z innymi systemami lub bibliotekami ...
Ale to nic, jeśli nie są faktycznie stosowane i egzekwowane .
Wszelkie naruszenia powinny być zgłaszane podczas sprawdzania kodu, a przegląd kodu nie powinien być w porządku, jeśli naruszenie jest nierozwiązane:
- napraw kod, aby pasował do reguły
- napraw regułę, aby kod już się nie wyróżniał
Oczywiście zmiana reguły oznacza „pójście naprzód” od liderów.