Best Practices: Documentation Tools
Whilst the phrase “undocumented code is unusable” is sometimes rather extreme, it is almost guaranteed that anyone attempting to use, develop or maintain a piece of undocumented code will have face an uphill battle. As a result, undocumented software represents a large overhead in terms of time and effort. Therefore, code documentation needs to address two sometimes wildly disparate audiences: end users, and current and future developers. Thankfully, it is seldom necessary for a single piece of documentation to serve both masters, however this does mean that requirement for documentation can feel like a significant burden for the developer. Fortunately, there are a number of tools and techniques that exist to aide us in efficiently creating good documentation. In Documentation Tools: Overview and Best Practices, we discuss why it is necessary to write documentation, the attributes that form good user and developer documentation, and examine some of the tools available for streamlining this process.
Publication
- Documentation Tools: Overview and Best Practices, B. Mummery, Technical Report DL-TR-2020-004, 2020 Citation Details
Documentation Tools
Section 5.2 of Documentation Tools: Overview and Best Practices contains a table providing an overview of commonly used documentation tools, which is replicated and updated below. If we are missing one of your favourite documentation tools, please contact us.
Editor | Languages | Pros | Cons |
DOXYGEN | C, C++, C#, objective C, Python, VHDL, Fortran, IDL, Java, PHP, D |
|
|
FORD | Fortran |
|
|
GHOSTDOC | C#, VB, Javascript |
|
|
JAVADOC | Java |
|
|
PDOC | Python 2, 3 |
|
|
PYDOCTOR | Python 2 |
|
|
SPHINX | C, C++, Ada, Python, Ruby, Fortran, JavaScript, PHP |
|
|
SWAGGER | >40: android, aspnet5, aspnetcore, async-scala, bash, cwiki, csharp, cpprest, dart, … |
|
|
This list is by no means exhaustive and we also recommend looking at wikipedia’s overview.