代码规范
引言
没有规矩,不成方圆。
好的代码规范让代码更具可读性和维护性,今天就代码的规范性做如一些总结。
变量的命名
前缀(小写字母+下划线)表明变量的作用域,无前缀表明是局部变量或者函数参数,如:
1.m_xx 表示是类的成员变量
2.g_xx 表示是全局变量
3.c_xx 表示是一个常量
函数命名
- 常见方法有匈牙利命名法、驼峰命名法和下划线命名法。
- 由于下划线在键盘位置特殊,匈牙利命名法也有一定的局限性,驼峰命名法更受欢迎。
- 函数命名采用英文单词组合表示(动词+名词),至少一个动词
- 函数命名应该可以让人“望文生义”,避免一个动词的使用,如Save应改成SaveVal
类命名
- 通常以父类的简写开头,如:FrmXXX 可看出该类是从 Form 中继承过来的。
- 类名以大写字母开头,命名避免下划线。
- 类实例命名可以参照类名,如: FrmXXXX frmXXX=new FrmXXX();
模块之间应该要用空格隔开,同一代码块中不同逻辑块之间空一行,函数之间至少空一行,不超过三行。
注释原则:
- 注释讲究简洁,有重点,正确;
- 应该是写优雅的、可读性高的代码,而不是为晦涩的代码注释。
- 尽量减少程序体内代码的注释,保持代码的直接可阅读性。
优化
函数代码优化:
- 去掉从没用过的参数
- 始终对参数合法性进行检验,对不合法的参数输入要进行处理。
- 参数不宜过多,过多应采用类封装后以实例传入。
- 如果一个参数不能被修改,将该类声明为const。
- 对于函数要用到的全局变量尽量应该采用传参的方法,实现参数代替,减少函数和外界 的联系,提高内聚
- 一个单一的函数代码量不宜过多,过多应该切分成小函数。
- 对于冗余的变量应该应该抽取出来作为函数的方法消除冗余。
- 尽量减少函数出口,即return,如:
优化前:
string getControlText(int index){
if(parameterValid()==false)
return null;
switch(nindex){
case 0:
return txtValue1.text;
case 1:
return txtValue2.text;
......
}
}
优化后:
string getControlText(int index){
string strReturnValue=null;
if(parameterValid()==true){
switch(nindex){
case 0:
strReturnValue=txtValue1.text;
break;
case 1:
strReturnValue=txtValue2.text;
break;
......
}
}
return strReturnValue;
}
类内的优化:
- 只对对外的接口才声明为public;
- 尽量减少成员函数、变量的依赖性
类之间的优化:
- 界面处理和数据处理应该分离在两个类中
- 当不同类有相同代码时,有以下几个方法可以考虑:
- 相同方法抽象成父类
- 抽象到一个新类中。
- 接口实现