MQL4编程规范与书写要领详解
坦白说,一个连基本书写规范都无法遵循的程序员,很难称得上专业。MQL4与C语言的书写规范高度一致,因此以下内容具有较高的参考价值。
从代码清晰易读、便于理解和后期维护的角度出发,编写程序时应遵循下列规则:
1. 每个说明或语句单独占一行。
2. 使用花括号{}括起来的部分,通常代表程序的某一层次结构,花括号一般与该结构语句的首字母对齐,并单独占一行。
3. 低一层次的语句或说明相比高一层次应适当缩进若干格,这样视觉上更清晰,也能提升程序的可读性。
在实际编码中应力求遵循这些规则,逐步养成优秀的编程习惯。以下为软件工程中常见的编程规范(节选),可供初学者参考。
1. 基本要求
1.1 程序结构清晰、简单易懂,单个函数的代码行数不宜超过100行。
1.2 明确功能意图,代码直接了当,精简冗余,避免垃圾代码。
1.3 尽量调用标准库函数和公共函数,减少重复造轮子。
1.4 避免随意定义全局变量,优先使用局部变量。
1.5 使用括号明确运算优先级,杜绝二义性。
2. 可读性要求
2.1 可读性优先,效率其次。
2.2 注释内容必须与代码逻辑完全一致。
2.3 每个源程序文件应有文件头说明,具体规格参照标准规范。
2.4 每个函数应有函数头说明,DLSM具体规格参照标准规范。
2.5 主要变量(如结构、联合、类或对象)在定义或引用时,应通过注释反映其含义。
2.7 常量定义(如DEFINE)应附带相应说明。
2.8 处理过程的每个阶段都应有相关注释说明。
2.9 典型算法前应添加注释。
2.10 利用缩进展示程序的逻辑结构,缩进量保持一致并以Tab键为单位,通常设定Tab为6个字节。
2.11 循环和分支的嵌套层次不宜超过五层。
2.12 注释可以放在语句同一行,也可以放在上一行。
2.13 空行和空白字符也是一种特殊注释,可用来区分逻辑块。
2.14 一目了然的语句无需额外注释。
2.15 注释的作用范围可以涵盖定义、引用、条件分支以及一段完整代码。
2.16 注释行数(不包括程序头和函数头说明部分)应占总行数的1/5到1/3。
3. 结构化要求
3.1 禁止出现两条完全等价的支路。
3.2 禁止使用GOTO语句。
3.3 用IF语句强调只执行两组语句中的一组,禁止使用ELSE GOTO或ELSE RETURN。
3.4 多路分支推荐使用CASE实现。
3.5 避免从循环中引出多个出口。
3.6 函数应只有一个出口。
3.7 不使用条件赋值语句。
3.8 避免不必要的分支结构。
3.9 不要轻易用条件分支替换逻辑表达式。
4. 正确性DLSM与容错性要求
4.1 程序首先保证正确,其次追求优美。
4.2 无法证明程序完全无错,因此编写完一段程序后应回头仔细检查。
4.3 修复一个错误时可能引入新问题,因此在修改前应评估对其他模块的影响。
4.4 所有变量在调用前必须完成初始化。
4.5 对用户的全部输入必须进行合法性检查。
4.6 不要直接比较浮点数的相等性,例如:10.0 * 0.1 == 1.0 并不可靠。
4.7 当程序与环境或状态发生交互时,应主动处理可能出现的意外事件,例如文件锁定、打印机连接等。
4.8 单元测试属于编程的一部分,提交联调的程序必须已通过单元测试。
5. 可重用性要求
5.1 对重复使用且相对独立的功能算法或代码,应抽象为公共控件或类。
5.2 公共控件或类的设计应体现面向对象思想,减少外部耦合,注重独立性与封装性。
5.3 公共控件或类应建立相应的使用模板。
