Matlab编程风格

Matlab编程风格

        代码格式要正确,表达清晰、通用,这样才能写出具有共享性和容易维护的代码。良好的代码写作规范,使得程序容易调试,便于修改。因此需要采用一种比较通用规范的编程风格。本文内容来源于罗华飞编著的《Matlab GUI设计学习手册》中关于编程风格的描述,在今后的Matlab编程分享中尽量采用其编程风格,便于大家理解和交流。在此向大神致敬。

1.命名规则

(1)变量

            变量名用小写字母开头,采用大小写混用模式或下划线分割模式。例如isOpened、serial_open。(原因:用C++进行编程时,经常用到类和指针,用户在查找类的成员函数或者成员变量使,不可能把所有的类成员记得清清楚楚,一般是先输入类成员的首字母或开始几个字母,然后根据编辑器的下拉列表框,寻找需要的类成员。于是大家约定,所有的类成员均以小写子母开头,以方便类成员的查找)

1)        临时变量:临时变量的的变量名应该尽量短。习惯上,m,n,表示int类型的临时变量(不使用i、j,因为与Maltab内部的虚数单位冲突);c,ch等表示字符类型的临时变量;a表示临时数组 ;x、y、z表示双精度临时变量。

2)        前缀m或者n通常用于申明数值对象,m代表matrix,n代表number。例如mRows、nFiles。

3)        前缀p表示指针;前缀str表示字符串;前缀st表示枚举、结构或者联合体;前缀b表示布尔型变量。

4)        表示对象与对象集合的变量名,不要仅仅只相差一个后缀‘s’,应该在后面加一个Array。例如point是一个点,而pointArray是一个点集。

5)        尽量避免变量名以数字区别、以大小写区别或者加以s区别,因为变量名相似容易混淆,应避免。例如Temp和temp,value1和value2等都是不好的编程习惯。

6)        只表示单个实体数据的变量, 可以添加前缀i或后缀No(来源于英文"No.")。例如dataNo、iData等。

7)        循环变量应该以i、j或者k为前缀,涉及复数运算应该禁止使用i和j作为循环变量(容易发生冲突)。可使用iRow、jLine、jColumn表示行或列。

8)        布尔变量应该禁止使用否定式的变量名,例如使用isOpend而不用isClosed。

9)        缩写形式即使全部为大写字母,在变量命名时也应该与小写字母混合使用,例如使用udpSoket而不用UDPSoket。

10 )      禁止使用关键字或者保留字作为变量名,例如禁止使用clear、clc、end、global等。

(2)常量

   1)常量名、全局变量名、永久变量名应该全部采用大写字母,且下划线分割单词。

   2)可以采用对象的类型名作为前缀,例如采用COLOR_RED。

(3)结构体

   1)结构体名应该以大写字母开头。这样约定是为了与普通变量名加以区别。

   2)结构体的字段名不需要包含结构体名的含义。

(4)函数

        1)MATLAB中定义的大部分系统函数都是采用纯小写字母作为函数名的,新版MATLAB部分函数会采用小驼峰命名法(第一个单词以小写字母开头;第二个单词的首字母大写)来命名,如前面讲到的matlabFunction函数。

        2)函数名应该有意义。可以采用大家广泛使用或者约定俗成的缩写,例如max、min、disp、std、diff等。

        3)所有的函数命名应该采用英文的形式,禁止使用汉语拼音

        4)单输出参数的函数,可以根据输出参数的含义来命名。例如mean、sum等。

        5)前缀get和set作为访问GUI对象的保留前缀;后缀get和set作为位运算的保留后缀。例如getappdata、setappdata、bitget、bitset等。

        6)前缀find具有查询功能的函数,例如findobj;前缀compute用于具有计算功能的函数;前缀initialize用于具有初始化对象功能的函数;前缀is用于布尔函数,例如iscell;

2.文件与结构

        1)模块化设计。不同的功能分为不同的模块,单独进行设计。

        2)函数之间尽量采用输入输出参数进行通信。单输入参数较多时,考虑采用结构体。例如:每个GUI回调函数都有一个handles结构体作为输入参数。

        3)多处出现的代码块,要考虑封装在一个函数中,以提高代码的简洁性和复用性。

        4)只被另外一个函数调用的函数,应该作为一个子函数,写在同一个文件中。


3.基本语句

总体原则:避免使用含糊代码。代码不是越简洁越好,而是越清晰越好

(1) 变量

1)        在内存充足的情况下,变量尽量不重复使用,赋予每个变量唯一的含义,提高代码的可读性。

2)        同种类型且意义相近的变量,可以在同一语句中定义;不同意义的变量,不要在同一语句中定义。

3)        在文件开始的注释处,为重要的变量编写文档;

4)        在常量定义处,为该常量编写注释。

5)        尽量少的使用全局变量。全局变量过多,不利于代码的维护和阅读。

6)        浮点数的逻辑运算要当心系统误差。

(2)常数

尽量在表达式少用数字,可能会改变的数字用常数代替,便于程序的修改。

浮点数应该在小数点前写上0。例如0.5不要写成.5。 

(3)循环语句

1)        不要在循环语句中扩展数组的维数,应该预先给数组分配内存。如

                result = zeros(1:100)'

                for i = 1:100

                        result(i)    =  i^2;

                end


2)           循环中尽量少用break和continue,以增强代码的可读性。

3)            嵌套循环时,应该在每个end添加注释,注明该层循环完成什么功能

(4)条件语句

1)        避免使用复杂的条件表达式,而采用临时逻辑变量代替。

2)        if-else中,频繁事件要放在if的部分,偶尔事件放在else部分。

3)        switch应该包含otherewise条件,以避免出现不可预料的错误。

4)        switch变量应该是字符串。


(5)注释

1)注释应该简介易懂;

2)函数头部的注释应该支持lookfor和help的对函数的查询,因此该行的注释中应该包含尽可能多的关键字。

3)函数头部的注释应该描述函数的功能,并能列出输入参数不同时该函数的语法和功能。

4)在函数头部的注释中,建议该函数的函数名全部大写。

5)在函数头部的注释中,最后要加上版权申明和程序版本。

6)函数头部的注释建议全部用英文。

(6)排版

1)    每行代码控制在80列之内,代码分行采用符号“...”。M文件编辑器中第75列有一条灰色的竖线,分行时尽量选择在该竖线附近。

2)    代码分行显示的3条原则

        ①    在一个逗号或者空格之后分行;

        ②    在一个操作符之后分行;

        ③    分行时对齐表达式。

3)    代码的缩排一般为三个空格或者一个“Tab”建议使用Matlab默认的缩排格式。

4)    一行代码应该只包含一个可执行语句。

5)    合理使用空格。

        ①    在=、==、~=、>、<、|、||、+、-、*、/等前后都加空格、

        ②    在~、^等前后不加空格。

        ③    在逗号、分号的后面添加空格,前面不加空格。


此章节完,感谢观看。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容