良好的编程风格

      编程规范只是一个规范,也可以不遵守,但是要做一个有良好编程风格的程序员,就一定要遵守编程规范,不仅方便自己以后的阅读,也可以方便与其他程序员的交流,要做到这一点,程序员应遵循一定的规范并贯穿程序的始终。首要考虑的是程序的可行性,可读性,可移植性,可维护性及可测试性,这是总则。

      好的程序易读,理想的情况:能把一个程序代码读出声音来,别人听了后就知道这个程序是解决什么问题的,是如何解决的;精炼简洁:运行快,结构明了。

      匈牙利命名法为c程序标识符的命名定义了一种非常标准化的方式,这种命名方式是以两条规则为基础的:

         a  变量的名字以一个或者多个小写字母前缀开头,前缀能够体现变量数据类型,作用域等信息

         b  在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词清楚地指出了该标识符的作用。

(1)变量命名加前缀

         c      char

         s      short

         n      int    nDoorNum

         l       long

         b      boolean 取值只为真和假的整型变量 如bValid

         f       float

         d      double

         a      数组 a[5]

(2)变量名中单词开头字母大写,其他字母小写 但是常用的意义明显的变量,如i,j,k,坐标x,y等不必遵循1),2)  StudentName  , TeacherName

(3)常量和宏都是大写  单词之间用 ‘_’分隔

        # define    MAX_WIDTH  5

        # define    PI  3.14

    # define     ABS(x)   ((x)>=0?(x):-(x))


标识符命名应注意的一些细节:

(1)标识符号应能提供足够信息,最好是可以发音的

(2)为全局变量取长的,描述信息多的名字,为局部变量取短名字

(3)名字太长时可以适当采用单词的缩写。但要注意,缩写方式要一致。要缩写就全都缩写。

比如单词:Number,如果在某个变量里缩写成了: int nDoorNum ;那么最好包含Number单词的变量都缩写成Num。

(4)注意使用单词的复数形式。如:int nTotalStudents,nStudents;容易让人理解成代表学生数目,而nStudent意义就不十分明显

(5)对于返回值为真或假的函数,加“ls”前缀如:

int lsCancleld() ;

        int isalpha() ;  //c语言标准库函数

        BOOL  lsButtonPushed() ;

(6)对于获取某个数值的函数,加“Get”前缀

        char * GetFileName() ;

(7)对于设置某个数值的函数,加“Set”前缀

        void SetMaxVolume() ;

(8)一般变量和结构名用名字,函数名用动词或动宾词组


程序书写格式注意事项:

(1)正确使用缩进

       首先一定要有缩进,否则代码的层次不明显。

       缩进应为4个空格较好。需要缩进时一律按Tab键,或一律按空格键,不要有时用Tab键缩进,有时用空格键缩进。一般开发环境都能设置一个Tab键相当于多少个空格。此时就都用Tab键

(2)行宽与折行

       一行不要太长,不能超过显示区域。以免阅读不便。太长则应折行。折行最好发生在运算符前面,不要发生在运算符后面如:

        if( Condition() && Condition2()

                 &&Consition3()){

        }

(3)注意 ‘{‘,’}’位置不可随意,要统一

  如果写了:

if(condition1()){

  DoSomething();

}

别处就不要写:

if(condition2())

{

       DoSomething() ;

}

(4)变量和运算符之间最好加1个空格

     int nAge = 5 ;

          nAge = 4 ;

  if(nAge >= 4)

printf("%d",nAge) ;

  for(i = 0;i < 100;i ++) ;


一些好的编程习惯:

(1)尽量不要用立即数,而用#define(C++中用const)定义成常量,以便以后修改

#define MAX_STUDENTDS 20

struct SStudent aStudents[MAX_STUDENTS] ;

        struct SStudent aStudents[20] ;


#define TOTAL_ELEMENTS 100

for(i = 0;i < TOTAL_ELEMENTS;i ++){

}

(2)带参数的宏定义应该在整个宏体外加括号,而且宏参数都要用括号包裹

#define SQUARE(x)    x*x    //平方

则 SQUARE(k+1) ; 变成 k+1*k+1 ;错

即使 #define SQUARE(x)    (x)*(x) 也不保险

        1/SQUARE(x) ;变成    1/(x)*(x) ;错

应该:

#define SQUARE(x)  ((x)*(x))   //平方

(3)稍复杂的表达式中要积极使用括号,以免优先级理解上的混乱:

n = k +++ j ; //不好

n = (k++)+ j ; //好一点

(4)不很容易理解的表达式应分几行写:

n = (k++) + j ;应该写成:

n = k + j ;

k ++ ;

(5)不提倡在表达式中使用?:形式,而用if ... else语句替代

xp = 2 * k <(n - m)? c[k+1]:d[k--] ;

if(2 * k < (n - m))

xp = c[k+1] ;

else

xp = d[k--] ;

(6)嵌套的if ... else语句要多使用{}

(7)应避免 if else的多重嵌套 而用并列的完成

(8)遵循一些惯例的写法,如:

循环的固定写法:

for(i = 0;i < n;i ++)     array[i] = 0 ;

而非 i = 0 ;

while(i <= n-1)   array[i++] = 0 ;

死循环写法:

for( ; ; ){...}  或 while(1) {...}

(9)写出来的代码应该容易读出声:

比如:

if(!(n > m)&&(s > t))

就不如:

if((m <= n)&&(t <= s))


if(!(c == 'y' || c == 'z'))

不如:

if(c != 'y' && c != 'z' ) ;


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值