matlab编程风格
参考博客:https://blog.csdn.net/yuandm819/article/details/52453674?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242
1、命名
变量
-
单变量名用小写英文,复合变量名用小写英文加下划线的组合或者小写英文加首字母大小开头qualityofLife
-
前缀n可以用来表明是数字对象,一般类似nSegments,用于表明循环的循环总次数等
-
前缀i可以用来表明循环变量
-
for iFile = 1:nFiles for jSegment = 1:nSegments ... end end
-
前缀m可以用来表明行数,例如mRows
-
重要变量需要在语句后面添加注释
常数
- 用全部大写字母加下划线组合
- 如果属于某些类,可以指明,COLOR_GREEN
函数
- 小写字母
- 函数名需要具有可读性,尽量少缩写,函数名应说明函数输出的意义
- 如果没有输出,则应说明函数的具体功能
- 前缀get/set应该暗指访问对象或者设置属性
- 前缀compute应该暗指计算某个量,过程比较复杂
- 前缀find可以用在那些具有查询功能的函数的地方 ,包含少量的计算
- 前缀initialize可以用在对象或者概念初始化的地方
- 前缀is用在表示判断的地方
- 补足型用在某种弥补操作的地方, 示例: get/set,add/remove,create/destroy,start/stop,insert/delete,increment/decrement
old/new,begin/end,first/last,up/down,min/max,next/previous,open/close ,show/hide,suspend/resume,等
常规变量可以添加一些说明,比如说明变量的单位等等,所有的变量都用英文编写,便于交流
2、文件与程序结构
M文件
- 模块化,采用函数的形式,超过两屏幕的代码都应该尝试着封装进行模块化,将代码进行分割,使得整个代码更具有交互性
- 搜索,找寻现有的函数,比自己编其实更省事以及更有正确性
- 子函数,若该子函数只用一次,那么最好跟用它的那个函数写在一个文件里面(个人认为这个对于小项目来说,基本上不适用)
- 测试脚本,为每个函数都编写一个
输入输出
- 人工阅读,最好格式化输出,使得可读性增加
- 计算机调用,则写成便于调用的形式
3、基本语句
循环语句
- 循环变量在开始前进行赋值,可以赋值为零向量,防止后面没有循环完所有的索引产生虚假值
result = zeros(nEntries, 1);
for index = 1: nEntries
result (index) = function(index);
end
- 嵌套循环里面,在end语句后面加上注释,说明完成了哪些功能
条件语句
- 避免复杂的条件表达式,应该用临时变量替代
避免使用
if(value>=lowerLimit)& (values<=upperLimit) &~ismember(value,valueArray)
……
……
end
应该使用
isValid = (value=lowerLimit)& (values<=upperLimit);
isNew = ~ismember(value,valueArray)
if (isValid & isNew)
……
……
end
- switch语句中需要有otherwise条件
- switch变量通常是字符串
- 表达式中少用数字,用变量进行替代更容易理解和后期更改
4、排版、注释
排版
- 代码内容应该保持在80列以内,其他的就用 … 连接符分开
- 一行代码只包含一个可执行语句
- 在=, &, | 前后加上空格,逗号后面加一个空格(这部分按照Python的就比较合适)
注释
- 注释的目的是为了加强可读性,而不是为了打补丁
- 函数头部的注释应该支持help和lookfor 查询
- 函数的注释需要说明代码的局限性,也就是适用范围
文档
- 规范化:说明代码的目的,设计思路,依赖什么样的环境和如何调用等
- 开发代码之前应该先开发文档
- 记录好修改的内容,每一步修改的日期等等