流程建议
协作
由多人开发的软件优于由一人开发的软件。通过采用许多其他科学软件项目使用的约定和工具,您将更容易让其他人为您的项目做出贡献。熟悉程度在两个方向上都起作用:其他人更容易理解和为您的项目做出贡献,而您也更容易使用其他流行的开源科学软件项目并将它们修改为适合您的目的。
讨论设计及其中的假设有助于澄清您的思路。
协作需要信任。犯错是正常的,这是让事情变得更好的过程的一部分。
让不止一个人理解代码的每个部分可以防止项目出现系统风险,并避免您与该代码捆绑在一起。
如果您能将来自不同科学背景的贡献者汇集在一起,那么更容易识别应该被泛化以供不同领域重复使用的功能。
不要害怕重构
没有代码能第一次(或第二次)就正确。
一旦您更全面地理解了问题和设计权衡,重构代码有助于保持代码的可维护性。版本控制、测试和代码风格检查是您的安全网,使您能够自信地进行更改。
优先选择“宽”而不是“深”
应该能够以原始作者未预料到的方式重复使用软件片段。也就是说,从初始用例中分支出来应该能够实现未计划的功能,而不会大幅增加复杂性。
在构建新事物时,从最底层开始,理解该层级,然后向上构建。试着想象一下,对于其他研究小组、相关的科学应用以及明年,您还希望对您正在实现的功能做些什么。
花时间了解事物在底层如何运作。缓慢部署一个健壮的可扩展解决方案比快速部署一个脆弱的狭窄解决方案更好。