matlab 代码风格,关于代码标准:现代MATLAB代码风格:缺少什么?

我寻求采用MATLAB的编码标准,但不确定是否选择了正确的标准。

据我所知,除本文档外,关于MATLAB编程指南的主题还很少。该文件写得很好,并有很好的反馈。标准由理查德·约翰逊(Richard Johnson)于2002年发布(在matlab中央),但此后未进行任何更新。是否有更新的版本或类似文件? (我真的没办法用谷歌搜索其他东西)。

背景动机假设

编码标准很重要

尽管MATLAB自2002年以来变化不大,但其他语言及其方法也发生了变化。可以从这些实践中真正受益。

事实是很多人正在使用MATLAB或Octave编写新代码。虽然,有人会说这种语言实际上已经死了(等等)。我宁愿不去那里(我们将其标记为offtopic)。

为什么代码风格对我来说不够好

我想在这里总结一些事情。如果您花时间阅读文档,可能会发现它

试图变得过于匈牙利(这很神秘,我在大多数情况下真的很讨厌)

它的捷径太多(与上一点相似)

Mathworks不支持它(但实际上可能是一件好事,因为MATLAB中的所有好东西都来自用户社区IMO)

没有自动的质量控制工具遵守这种编码样式(这里我的意思不是像* lint系列中的mlint这样的东西,而更像是python的pep8.py)

我猜想为什么尚未开发这种工具的原因实际上是缺乏广泛接受的编码标准。

对于您对标准或有关更好标准的任何批评,我将不胜感激。

您有使用该标准的经验吗?它的哪些部分对您不起作用?如果您从未使用过正式的编码标准,但确实有不适合它的有价值的实践-请提供示例。

那里这:stackoverflow.com/a/5042797/97160。这里还有一些有用的东西:stackoverflow.com/q/2326609/97160

@Amro:这实际上很棒。如果" MATLAB风格的元素"这么好,我可能会有答案!

由同一位作者(Richard Johnson)撰写。我也找到了这个Wiki:sites.google.com/site/matlabstyleguidelines

订购该书(PDF和纸本):-)这是一篇评论blogs.mathworks.com/loren/2011/02/10/ BTW您是否愿意重写Amro的评论作为答案?

链接到其他帖子实际上只是简短的评论,而不是完整的答案。随意写一些更完整的内容,并将答案标记为已接受。我应该说我自己还没有读过这本书,但是评论的确是积极的。

相关:GNU Octave(与任何其他开源项目一样)具有自己的编码样式集:gnu.org/software/octave/doc/interpreter/

最后,我保证。我找到了此更新:mathworks.com/matlabcentral/fileexchange/

Loren Shures MathWorks博客上的一篇文章推荐了这篇文章:科学计算的最佳实践。

我启动了MEP8工具,因此我们可以拥有自己的PEP8。看看这是否有帮助,如果您看到那里的潜力,那就齐心协力。

迄今为止最好的答案之一就是引用Amro的评论:

"同一位作者(理查德·约翰逊)"出版了《 MATLAB风格的元素》一书(另请参阅Wiki),2011年:

168aff2602212432e5ce58ef04f0e429.png

Table of Contents

General principles

Formatting

Naming

Documentation

Programming

Files and organization

Development.

洛伦(Loren)的博客条目带有该书的评论。我将按照以下评论行:

7条在优美点处拆分长代码行-我发现这一点很有用,因为即使有可能,在任何编辑器中都必须走得太远,这是一个总的痛苦。

10不要使用硬标签-当在可能具有不同编辑环境的组中工作时,这有助于保持理智。

43在大范围变量中使用有意义的名称-必要时,这使代码更易于阅读,理解和调试。

69为函数的功能命名-由于函数执行动作,因此名称应包括有关动作的信息。

86在数据文件名中使用可排序的编号-如果您有许多相似的数据文件,那么采用合理的编号方案只能帮到您。

97确保评论意见与守则相符-我永远不会忘记我的论文导师给我打电话的时间,因为他真的很生气。我给他留了一个Fortran程序的副本,其中有很多注释,最后一个是"忽略上面的所有注释;它们是以前的版本。"

135避免使用密码-我发现,一般而言,编写密码的好处并不如我所期望的要多,而且令人头疼。有时,我会在一些时间紧迫的情况下使用加密代码来提高性能。当我这样做时,我会尝试对其进行完整的注释,包括在我测试过的注释中的直接实现。这样,当性能权衡发生变化时,我了解了代码应该执行的操作,并且有两个开始选项可以进行代码更新。

150,151最小化全局变量的使用并最小化全局常数的使用-我本人会更加坚决地说。无论您是函数句柄,类及其属性,还是其他方法,都有用于处理您要共享的信息的高级技术。这些技术由于许多原因而使用起来更加安全-例如,如果需要的话,更容易控制的副作用,并且代码变得更可能适用于并行性。

172使用括号-明确含义至关重要,尤其是在其他人需要理解,修改或翻译代码的情况下。

176尽可能避免使用eval-我确定对于某些MATLAB用户来说似乎不是,但大多数时候都可以避免使用eval。

185-188首先,避免复杂的条件表达式-这些条目包含一些有关处理条件构造,案例排序等的有用想法。

271-275首先是"编写小型测试"-我喜欢Richard将测试作为本样式指南的中心原则。如果没有强大的测试套件,我看不到程序员如何运作良好。

结论

与2002年的原始文档相比,这本书看起来过于笼统。我将继续阅读并提供更多见解,但它似乎还不能完全满足我对编码标准所要求的严格性的理解。它融合了许多对初学者有用的一般想法,但对编程并不严格,以便他们可以自动测试代码(再次是PEP8)。

+1。 恐怕我知道还没有用于MATLAB的PEP8类似工具来强制执行代码样式。 IDE代码分析器(以前是mlint)是我能想到的最接近的东西,但是那并不是完全一样的……您可以始终启动一个新项目并实现这样的工具:)

这可能是您感兴趣的事情:undocumentedmatlab.com/blog/parsing-mlint-code-analyzer-output

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值