科学代码是一个足以忽略普通编码标准的领域吗?
不,这不对。
研究代码通常是“扔掉”的,不是由具有背景知识的开发人员撰写的,无论他们的学术实力如何。我写的一些研究代码会让我流泪。但这有效!
要考虑的一件事是,项目的看门人将推动所包含的内容。如果一个大型项目最初是作为一个学术/研究代码项目开始的,但是最终可以正常工作,现在又一团糟,那么有人必须主动进行重构。
重构不引起问题的现有代码需要大量工作。尤其是在所有特定于域或没有测试的情况下。您会发现OpenCV的风格指南非常全面,即使不是完美的。追溯地将其应用于所有现有代码吗?那是..不是为了胆小的人。
如果所有代码都能正常工作,这将更加困难。因为它没有坏。为什么要解决?
然而,这些项目繁荣起来,得到了维护和广泛使用!
从某种意义上说,这就是答案。工作代码仍然有用,因此更有可能得到维护。
可能是一团糟,尤其是最初的情况。这些项目中的某些项目可能始于“一站式”项目,“永远不需要重复使用,可以将其丢弃”。
还应考虑到,如果您要实现复杂的算法,那么使用更大的方法可能更有意义,因为您(以及其他熟悉科学方面的人)可以从概念上更好地理解算法。我的论文工作与优化有关。将主要算法逻辑作为一种方法要比将其试图分解要容易得多。它确实违反了“每种方法7行”的规则,但是这也意味着另一位研究人员可以查看我的代码,并更快地了解我对该算法的修改。
如果将此实现抽象化并设计得当,则这种透明度将对非程序员失去。
致答题者:这个问题涉及一个或多个科学领域中用于计算密集型任务的开源库的代码库。这个问题与一次性代码无关。请稍等片刻,以确保您掌握所有突出显示的方面,然后再写答案。
我认为人们经常有这样一个想法,即所有开放源代码项目都始于:“嘿,我对一个将被成千上万的人广泛使用并广受欢迎的库有一个好主意”,然后每个项目都是这样。
现实情况是,许多项目已经启动并死亡。极少的项目将其“实现”到OpenCV或VTK等的水平。
OpenCV是Intel的一个研究项目。维基百科将其描述为“一系列项目”的一部分。它的第一个非beta版本是2006 年,也就是它首次启动后的七年。我怀疑最初的目标是有意义的beta版本,而不是完美的代码。
此外,OpenCV的“所有权”已发生重大变化。除非所有责任方采用完全相同的标准并在项目进行期间保持标准,否则这将使标准发生更改。
我还应该指出,OpenCV大约已经发布了好几年,而《清洁代码》的灵感源于《敏捷宣言》的发布(而VTK接近10)。VTK在发布Clean Code之前的17年开始(OpenCV在9年前“仅”发布)。