10个让我哭泣的MATLAB代码实践

我与MathWorks的应用程序支持工程师讨论了什么样的编码实践会给MA金宝appTLAB用户带来可避免的痛苦。

不费吹灰之力,以下是十种快速避免做某事的方法:

10)。不使用左边的0

有些事情必须经过惨痛的教训才能学会。当我还是个大学生的时候,在一个睡眼惺忪的晚上,我学到了这一点。直到深夜,我都在做MATLAB的家庭作业,“如果你打字慢的话,需要10分钟,15分钟。”(是的,P博士,13年后我还记得那句话!-微笑)

很容易弄错.5对于一个5.这就是为什么我总是用左手0的原因0.5

9)。绘制大量数据

我的电脑显示器总共有230万像素。如果我试图绘制包含大量数据的数据集,它们通常会看起来像一个团,并在过程中减慢机器的速度。

通常有更好的可视化方法。这是一个例子改变视觉效果,使其更清晰,减少对记忆的负担。

8)。色彩艳丽的gui

为了强调GUI上的某些按钮,人们会改变它们的颜色。很快他们就会有几个不同颜色的按钮,不标准的背景色,超大的按钮等等。

坚持使用默认颜色是一个很好的选择。大多数专业制作的软件都采用默认设置,最终看起来更好。

7)。使用,或任何其他MATLAB函数作为变量名或函数。

当你这样做的时候,MATLAB会调用路径上更高的那个。当像这样重新定义函数时,可能会发生一些奇怪的行为。不幸的是,MATLAB在大多数情况下并没有捕捉到您这样做。

我尽量避免使用常见的变量和函数名,比如,的意思是过滤器如有疑问,可使用the哪一个命令,以确定给定名称的函数是否存在。

6)。在代码中没有使用空白来达到好的效果。

即使您可以在一行中使用分号分隔多个命令,但这些行通常很难注意到。在代码段之间不设置空行也会使代码更难阅读。

空白是免费的,使用它可以让你的代码看起来更好。

5.)坏的变量名

变量名通常是唯一添加到代码中的注释。有意义的变量名是一个很好的机会,可以使代码的含义更清晰,并在某种程度上具有自文档化。

避免使用类似的变量名临时aaar247899921.这并没有向需要阅读代码的人传达太多的信息flagPassedInspectioncentroidXfidCurrentFile

4)。硬编码数据到MATLAB代码文件

有些人喜欢将他们的一些变量直接放入MATLAB代码中。这是有道理的变量(我会让你定义“小”对你来说意味着什么)。例如,我可以在代码中加入3×3矩阵。对于10×10,我会三思而后行,我会开始使用100 x 100的文件读取器。

我见过的最糟糕的例子是一些MATLAB代码,其中的. m文件有4gig(不是错误)长。除了一小部分以外,所有的数据都是用ASCII写出来的。这使得您的代码难以阅读、维护和理解。

3.)特别长的文件

即使没有将数据硬编码到MATLAB代码文件中,也很容易添加“多几行代码”,直到在单个脚本中有数千行代码。这使得您的代码难以理解。

试一试使用我应该能够在一个屏幕上看到整个脚本或函数的规则。这是不完全实际的,所以我将至少把代码分解成符合逻辑的部分,以适合屏幕一次。

2.)全局变量

我从未见过在MATLAB代码中使用全局变量是正确的。例外:TIC和TOC函数很好地使用了它们。大多数时候,我看到全局变量的使用都是因为代码作者不理解变量的作用域。不是将变量从一个函数传递到另一个函数,而是将它们设置为全局变量。

为什么人们被警告不要使用全局变量?我把这个留给在维基百科上的共识

1.)Eval

EVAL和全局变量差不多。MATLAB用户经常将MATLAB命令串在一起以获得顺序变量名s1s2s3然后必须使用另一条EVAL语句来处理顺序变量名!通常,用s{1}, s{2}, s{3}…索引的单元格数组会工作得更好。

我还发现,当人们在编写代码时不知道他们想要哪个字段时,他们会使用EVAL来获取结构中的某些字段(例如data.alpha)。现在,”。父母”符号使更容易。

人们在不需要EVAL时使用EVAL的另一个最常见的地方是当他们试图加载一个文件或类似的其他函数时。通常情况下,他们试图EVAL一个字符串,如“加载文件名。没有意识到有一个函数形式,你可以使用fileNameString = ' filename.mat ';加载(fileNameString)

遵循@stuartmcgarrity在Twitter上发布新帖子。

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。