我们编写代码的目的是什么?除了能实现某个算法、完成要求的逻辑业务外,其实还需要注意代码的可读性、可维护性、可扩展性等,唯有满足这些条件,我们的代码才可以称得上是合格的、优秀、优雅的代码。我们写的代码除了自己看,可能别人也需要看。其实,编码也是一门艺术,要想写出优雅漂亮的代码,需要我们平时的不断积累和学习。
那么今天我们聊一聊在编写MATLAB代码时,需要注意的编码风格,简单的建议,但比较实用。
1 代码的布局
1.1 缩进
虽然MATLAB代码对缩进没有要求,但这样会显得杂乱无章,代码没有层次感,MATLAB的IDE为我们提供了便捷的智能缩进,所以平时写完代码后,记得Ctrl+A
, 再Ctrl+I
1.2 空格/Tab键
空格/Tab键对MATLAB是没有影响的,用好空格
很重要,会增强代码的可读性。
A 推荐用空格的地方
(1) 常用的二元运算符 +
, -
, *
, /
, ^
, .*
, ./
, .^
;比较、逻辑运算符<
, >
, <=
, >=
, ==
, ~=
, &&
, ||
;赋值运算符=
以及类的继承符号<
等,在这些运算符的前后都加上一个空格,如a = b + c * d;
要比a=b+c*d;
更好些。
(2) 定义函数时,输入参数和输出参数之间建议加空格,如function [output1, output2] = myfunc(input1, input2)
要比function [output1,output2]=myfunc(input1,input2)
更好些
B 不推荐用空格的地方
以下地方不推荐出现空格:
(1) 紧挨着圆括号,方括号和花括号的地方,如[ x, y ]
,( x, y )
, { x, y }
是不推荐的。推荐[x, y]
, (x, y)
, {x, y}
样式。
(2) 紧贴着函数调用的参数列表前开式括号的,如magic (5)
应该写成magic(5)
。
(3) 在赋值(或其它)运算符周围的用于和其它并排的一个以上的空格,如:
x = 1;
y = 2;
longvariable = 3;
写成
x = 1;
y = 2;
longvariable = 3;
1.3 行的最大长度
类似于函数中的行注释、函数体等,如果某一行很长,则导致换行折叠观看,很影响美观,而且还不利于阅读。MATLAB IDE中那条竖直的参考线可以帮助我们适当的续行,推荐长度限制在 75 个字节内 , ...
咱们都懂得......
1.4 空行
空行的使用在平时应该也注意:
用两行分割顶层函数和子函数的定义(或者顶层类定义和局部函数的定义)。
在类定义的内部,成员方法之间用一个空行隔开。
在一个函数内使用空行时请注意谨慎使用于一个逻辑段
1.5 注释
注释非常重要,良好的注释不仅可以让别人更容易看懂你的代码,同时也对我们自己也是一种帮助,时间久了提供提示和回忆。
注释必须跟代码保持一致,当你想修改代码时,建议优先修改注释。
注释必须是完整的句子。
如果注释是一个句子或者短语,请首字母大写。
如果注释很短,建议省略句末的句号。
注释块通常由一个或多个由完整句子构成的段落组成, 每个句子应该以句号结尾。
注释请使用英文。
约定使用统一的文档化注释格式有助于良好的习惯和团队的进步。
单行注释%
多行注释%{ This is comment%}
分割注释%%
关于注释这块,我们可以参考系统自带的那些函数的作者是如何加注释的,方法是在脚本或者命令窗口中输入库函数名称,选中,然后Ctrl+D
进行查看,比如我们查看svd
这个函数是如何写注释的,演示如下:
1.6 项目文件
一般建议一个项目一个文件夹,相同作用的算法放在一个文件夹中,里面再按模块分子文件夹,最好是层次分明。
2 命名约定
对于命名,只要符合MATLAB的标识符
规定,随心所欲的命名对代码无任何影响,但是这样做就与我们开头所说的可读性相违背了。一个总原则是我们的命名能尽量做到望文知意。
2.1 命名风格
一般的命名风格大家都清楚,这里说几个特殊的注意点:
(1) 代码中的命名不要使用拼音与英文混合的方式。
(2) 避免大幅度出现单个子母的命名,如a, b, c
等,循环中可以(除了i或j
)。
(3) 包名应该是不含下划线的, 简短的, 小写的名字。
(4) 几乎没有例外,类名总是使用首字母大写、驼峰命名单词串的约定,即UpperCamelCase
风格。
(5) 函数名、方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase
风格,第一个词的首字母小写,后面每个词的首字母大写。
(6) 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚。
(7) 抽象类命名使用Abstract或Base开头;测试类命名以它要测试的类的名称开始,以Test结尾。
(8) 避免生僻的缩写,在命名时尽量使用完整单词组合来表达其意。
(9) 如果是形容能力的接口名称,取对应的形容词为接口名(通常是–able的形式)。如AbstractTranslator
实现Translatable
接口。
(10) 枚举类名建议带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开。
(11) 对于表达逻辑的变量,可加上is
或者has
的前缀,如hasNoiseMap = true
等
(12) 函数名应该为小写、动宾短语, 可能用下划线风格单词以增加可读性。
以上就是今天分享的内容了,有什么问题请朋友留言。