这是一个很好的问题。大致上,代码应该尝试自我记录。因此,例如,如果软件是命令行,您应该能够执行executable --help
或executable -h
什至executable
(如果可执行文件不执行任何操作且没有参数),并返回简短的使用消息。
其次,我认为期望科学开发人员花费大量时间记录他们的软件是不现实的,所以我建议保持简单。包含基本方法和选项以及带注释的工作和测试的简短文本手册使用示例,从简单到更复杂(使用示例非常重要且经常被忽视)比没有好得多,而且比大多数科学软件提供的要多得多。我还想补充一点关于使用示例的烦恼。简单意味着简单。这意味着如果你试图说明一种方法,你不要添加十个无关的概念或方法来混淆读者。保持简单并进行注释,以便读者知道示例应该做什么。我还建议以某种方式将手动使用示例绑定到测试套件中,以便它们在代码更改时继续工作。我实际上不知道如何以一种好的方式做到这一点,所以请随时教育我。如果开发人员想要更花哨,确保他们可以使用漂亮的标记语言等等,添加手册页等等。
第三,如果合适,作者应该考虑写一篇论文发表。这通常会解决设计决策,并提供比手册更高级的软件视角,或者可以预期这样做。这将解决@Matt 正在谈论的设计决策的文档。
当然,最重要的文档是代码本身,应该根据需要对其进行注释。这假设代码是免费软件。如果不是,那么它作为科学软件的用处就会大大降低(你真的想使用一个你看不到方法是如何实现的黑盒子吗?)而且我不会使用它。