Wilson等人(2014年)最近的一篇论文指出了科学规划的24种最佳做法。值得一看。我想听听有经验的程序员在科学数据分析方面对这些观点的看法。作者的建议听起来不错,但你认为这些建议有帮助和实用吗?正如他们承认的那样,介绍所有这些人可能需要花费大量的时间和精力。例如,放置断言和部署单元测试肯定需要额外的编码。然而,你认为没有受过编码训练的科学家(如生物学家)是否应该遵循这些原则呢?如果他们中的一些人太多了,我们应该根据什么去停止呢?
Wilson G、Aruliah DA、Brown CT、Chue Hong NP、Davis M、Guy RT、Had多克SHD、Huff KD、Mitchell IM、Plumbley MD、Waugh B、White EP、Wilson P (2014)科学计算最佳做法。PLoS Biol 12:E 1001745。http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001745方框1.最佳做法摘要
我对科学数据分析的严肃编程还比较陌生。去年,当我试图为一些数据进行初步分析而编写代码时,我在代码和数据中都遇到了大量的bug。错误和错误一直在我身边,但这一次,它有点压倒性。我终于设法把数字算出来了,但我想我再也不能忍受这种混乱了。必须采取一些行动。
在没有上面这篇文章这样的复杂指南的情况下,我从那时起就开始采用“防御性编程风格”。一本名为“可读性代码的艺术”的书对我有很大帮助。我为每个函数部署了细致的输入验证和/或断言,重新命名了许多变量和函数以获得更好的可读性,并提取了许多位作为可重用函数。最近,我介绍了用于版本控制的Git和SourceTree。
目前,由于我的同事对这些问题更不情愿,协作实践(8a,b,c)还没有被引入。实际上,正如作者所承认的那样,因为所有这些实践都需要一定的时间和精力来引入,所以通常很难说服不情愿的合作者遵守它们。
我想我是在征求您的意见,因为尽管我在这些实践中付出了很多努力,但我仍然受到许多bug的困扰。Bug修复可能比以前更快,或者应该比以前更快,但我不能真正衡量这种改进。此外,我的大部分时间都花在了防守上,这意味着这些天我并没有做太多的数据分析(进攻)。就生产力而言,我应该说的重点是什么?
我已经部署: 1a,b,c,2a,3a,b,c,4b,c,5a,d,6a,b,7a,7b
我要试一试: 5b,c
尚未: 2b、c、4a、7c、8a、b、c
(我看不出使用GNU make (2c)来实现我的目的的好处。有人能告诉我MATLAB如何帮助我的工作吗?)
发布于 2014-06-09 03:31:59
您提到的文章中的大多数(如果不是全部的话)都为开发人员所熟知。其中很多都是在学校里教的,当一个人去做真正的工作时,很多都会实现。当你说你的合作者不会答应的时候,我有点惊讶。
如果你太担心产生错误,那就把自己限制在几个域上。你会变得如此流利,几乎所有你需要你写的东西,你已经遇到过。更别说你用这种方式制造bug的机会了。
什么叫臭虫是压倒一切的?我可能和你一样的处境,但我甚至不知道。在过去的几年里,我一直在工作,我看到人们制造臭虫,以至于我对“每个人都有”充满了信心。关键是经常和全面地测试代码。
既然你提到了‘防御性编程’,如果我理解得对,就很难像你那样制造错误的人,成为一个好的人。防御性编程使代码没有错误,甚至可以处理规范之外的情况或与规范相邻的情况。它是无臭虫的。
https://softwareengineering.stackexchange.com/questions/244371
复制相似问题