• 良好的编程风格


    良好的编程风格

    匈牙利命名法为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))
    标识符号应能提供足够信息,最好是可以发音的。
    为全局变量取长的,描述信息多的名字,为局部变量取短名字
    名字太长时可以适当采用单词的缩写。但要注意,缩写方式要一致。要缩写就全都缩写。
    比如 单词Number, 如果在某个变量里缩写成了:
    int nDoorNum;那么最好包含 Number单词的变量都缩写成 Num。
    4)注意使用单词的复数形式。如
    int nTotalStudents, nStudents ;容易让人理解成代表学生数目,而 nStudent 含义就不十分明显

    5) 对于返回值为真或假的函数,加“Is”前缀如:
    int IsCanceled();
    int isalpha(); // C语言标准库函数
    BOOL IsButtonPushed();
    6) 对于获取某个数值的函数,加 “Get”前缀
    char * GetFileName();
    7) 对于设置某个数值的函数,加“Set”前缀
    void SetMaxVolume();
    8) 一般变量和结构名用名词,函数名用动词或动宾词组。
    正确使用缩进
    首先,一定要有缩进,否则代码的层次不明显。
    缩进应为4个空格较好。需要缩进时一律按Tab键,或一律按空格键,不要有时用Tab键缩进,有时用空格键缩进。一般开发环境都能设置一个Tab键相当于多少个空格,此时就都用Tab键
    2) 行宽与折行。
    一行不要太长,不能超过显示区域。以免阅读不便。太长则应折行。折行最好发生在运算符前面,不要发生在运算符后面如
    if( Condition1() && Condition2()
    && Condition3() ) {
    }

    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_STUDENTS 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 语句要多使用 { }
    if( Condition1() )
    if( condition2()
    DoSomething();
    else
    NoCondition2();
    不够好,应该:
    if( Condition1() ) {
    if( condition2()
    DoSomething();
    else
    NoCondition2();
    }
    7)应避免 if else 的多重嵌套,而用并列的完成。
    if( Condition1() ) {
    if ( Condition2() ) {
    if( Condition3() ) {
    Condition123();
    }
    else {
    NoCondition3();
    }
    }
    else {
    NoCondition2();
    }
    }
    else {
    NoCondiction1();
    }

    替换为:

    if( ! condition1 ) {
    NoCondition1();
    }
    else if( ! condition2 ) {
    NoCondition2();
    }
    else if( ! condition3) {
    NoCondition3();
    }
    else {
    Condition123();
    }
    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');

  • 相关阅读:
    Flask之model以及缓存
    面向对象设计原则
    【二】、UML基础知识——图图解乾坤
    在大学拼学业,搞副业,我也曾迷茫,但我一直在路上
    vsftpd简介和ftpserver在win10上的下载及安装过程
    使用IDEA详解Spring中依赖注入的类型
    多么痛的领悟——计算机组成原理第一讲
    Java 发展简史:初生遇低谷,崛起于互联网
    写公众号一个月关注量破900,聊聊我的感受
    用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2078274.html
Copyright © 2020-2023  润新知