Dokumentacja w kodzie
Najważniejszą rzeczą jest użycie narzędzi dokumentacji w wybranym środowisku programistycznym, co oznacza pydoc dla python, javadoc w java lub komentarze xml w języku C #. Ułatwiają one pisanie dokumentacji w tym samym czasie, co pisanie kodu.
Jeśli polegasz na powrocie i dokumentowaniu rzeczy później, możesz nie poradzić sobie z tym, ale jeśli zrobisz to podczas pisania kodu, to, co należy udokumentować, będzie świeże w twoich myślach. C # ma nawet opcję wydania ostrzeżenia o kompilacji, jeśli dokumentacja XML jest niekompletna lub niezgodna z rzeczywistym kodem.
Testy jako dokumentacja
Innym ważnym aspektem jest dobra integracja i testy jednostkowe.
Często dokumentacja koncentruje się na tym, co klasy i metody robią w oderwaniu, pomijając ich wspólne użycie w celu rozwiązania problemu. Testy często umieszczają je w kontekście, pokazując, jak współdziałają ze sobą.
Podobnie testy jednostkowe często wyraźnie wskazują na zależności zewnętrzne, za pomocą których należy wykpić elementy .
Uważam również, że korzystając z programowania opartego na testach piszę oprogramowanie, które jest łatwiejsze w użyciu, ponieważ używam go od samego początku. Przy dobrej strukturze testowania ułatwienie testowania kodu i ułatwienie korzystania z niego to często to samo.
Dokumentacja na wyższym poziomie
Wreszcie jest co zrobić z poziomem systemu i dokumentacją architektoniczną. Wielu opowiada się za pisaniem takiej dokumentacji na wiki lub za pomocą Worda lub innego edytora tekstu, ale dla mnie najlepszym miejscem na taką dokumentację jest kod, w formacie zwykłego tekstu, który jest przyjazny dla systemu kontroli wersji.
Podobnie jak w przypadku dokumentacji w kodzie, jeśli przechowujesz dokumentację wyższego poziomu w repozytorium kodu, istnieje większe prawdopodobieństwo, że będziesz ją aktualizować. Korzyścią jest również to, że po wyciągnięciu wersji XY kodu otrzymujesz również wersję XY dokumentacji. Ponadto, jeśli używasz przyjaznego formatu VCS, oznacza to, że łatwo jest rozgałęziać, różnicować i scalać dokumentację, podobnie jak kod.
Bardzo lubię reStructuredText (rst) , ponieważ łatwo jest tworzyć zarówno strony HTML, jak i dokumenty PDF za pomocą sfinksa , i jest o wiele bardziej przyjazny niż LaTeX , ale nadal może zawierać wyrażenia matematyczne LaTeX, gdy są potrzebne.