编写科学代码时干净编程
我不是真的写大型项目。我不是在维护庞大的数据库,也不是在处理数百万行代码。 我的代码主要是“脚本”类型的东西-测试数学功能或模拟某些东西的东西-“科学编程”。到目前为止,我从事的最长程序是几百行代码,而我从事的大多数程序都在150左右。 我的代码也很烂。前几天,当我试图找到我之前写的一个文件时,我意识到了这一点,但是我可能改写了,并且我没有使用版本控制,这可能使大量的您对我的愚蠢感到痛苦。 我的代码风格令人费解,并填充了过时的注释,这些注释指出了执行某项操作的替代方法或复制了几行代码。尽管变量名总是以非常好的描述性开始,但是当我按照某人想要测试的新内容进行添加或更改时,代码却被覆盖在顶部并被覆盖,因为我觉得这件事应该立即进行测试。有一个框架,我开始使用糟糕的变量名,并且文件进入了pot。 在我现在正在从事的项目中,我正处在所有这些阶段都重新吸引我的阶段。但是问题是(除了使用版本控制,以及为每个新迭代创建一个新文件并将其全部记录在某个地方的文本文件中,这可能会极大地改善这种情况)我真的不知道如何进行改进我实际的编码风格。 编写较小的代码是否需要单元测试?OOP怎么样?相对于处理较大的项目,什么样的方法适合在进行“科学编程”时快速编写优质,清晰的代码? 我之所以问这些问题,是因为编程本身通常并不复杂。它更多地是关于我正在通过编程测试或研究的数学或科学。例如,当两个变量和一个函数可能需要处理时,是否需要一个类?(考虑到一般情况下,程序的速度也应优先考虑更快的情况-当您运行25,000,000+个仿真时间步长时,您一定会希望它是这样。) 也许范围太广了,如果是的话,我对此表示歉意,但是从编程书籍的角度来看,它们似乎经常在大型项目中得到解决。我的代码不需要 OOP,而且已经很短了,所以它不像“哦,但是如果这样做的话,文件将减少一千行!” 我想知道如何在这些较小,更快的项目上“重新开始”并进行干净的编程。 我很乐意提供更多具体细节,但是我认为建议越笼统,就越有用。我正在用Python 3编程。 有人建议重复。让我明确地说,我并不是在谈论完全忽略标准编程标准。显然,存在这些标准是有原因的。但是,另一方面,如果可以完成一些标准的工作,写出说OOP的代码真的有意义吗?程序? 有例外。此外,除了简单的标准外,可能还有科学编程的标准。我也在问那些。这与编写科学代码时是否应忽略常规编码标准无关,而与编写干净的科学代码有关! 更新资料 只是以为我会添加“不超过一个星期以后”的更新。您的所有建议都非常有帮助。我现在使用版本控制-git,其中git kraken用于图形界面。它非常易于使用,并且彻底清理了我的文件-不再需要保留旧文件,也不再需要旧版本的代码“以防万一”。 我还安装了pylint并在所有代码上运行了它。最初,一个文件的分数为负。我什至不知道那怎么可能。我的主文件开始于〜1.83 / 10,现在为〜9.1 / 10。现在,所有代码都非常符合标准。我还用自己的眼睛跑过去,更新了已经消失的变量名,嗯,很糟糕,正在寻找要重构的部分。 特别是,我在这个网站上最近问了一个有关重构我的主要功能的问题,它现在更加整洁和短了很多:它不再是一个冗长,肿的if / else填充功能,现在不到一半的大小,更容易弄清楚发生了什么。 我的下一步是实施各种“单元测试”。我的意思是一个可以在主文件上运行的文件,该文件使用assert语句和try / excepts来查看其中的所有功能,这可能不是最好的方法,并且会导致重复的代码很多,但我会继续阅读并尝试找出如何做得更好。 我还对我已经编写的文档进行了重大更新,并向github存储库添加了补充文件,例如excel电子表格,文档和相关论文。现在看起来有点像一个真正的编程项目。 所以...我想这就是要说的:谢谢。