美文网首页C语言
《C语言代码规范-基础版》

《C语言代码规范-基础版》

作者: 亦一银河 | 来源:发表于2017-12-23 00:19 被阅读75次

    1.在头函数

    #include <stdio.h>尖括号之前空格一下
    在写完头函数以后空行一下与接下来的部分分离

    2.在所有的函数括号之前空格一下

    例如:
    for (……)
    if (……)
    while (……)
    等一些函数括号之前空格,这里说一个特例scanf()这个函数之前不空格也可以,影响不大,但是建议都加空格,在公司企业都有自己代码规范,但是这些是基本的

    3.分段书写

    例如:这是不规范的

    #include<stdio.h>
    int main() {
      char arr[20];
      int n;
      scanf("%d", &n);
      while (n--) {
        getchar();
        scanf("%s", &arr);
        printf("%s\n", arr);
      }
    }
    

    分段书写:

    #include <stdio.h>
    
    int main() 
    {
        // 数据定义部分
        char arr[20];
        int n;
    
        // 数据输入
        scanf ("%d", &n);
    
        // 循环部分
        while (n--) {
            getchar ();
            scanf ("%s", &arr);
            printf ("%s\n", arr);
        }
    }
    

    将“数据定义”,“数据输入”,“循环”,“条件判断”,“流程选择”等一些部分单独空行出来。使代码清晰易懂,条理清晰,结构层次明确。

    4.学会用空格

    • scanf ("%d", &n);在scanf中的","逗号之后空格一下
      类似的在for(int i = 0; i < n; i++)的“;”分好分号之后也要空格一下
      简单的说,每遇到有:逗号(,),分号(;)之后都要空格一下
      在等号(=或者==),不等号(< >)以及运算符(+ - * /)的前后都要空格
      在组合符号或者多重运算的时候可以不空格
    // 空格情况举例
    a = b;
    a == b;
    a += b;
    a != b;
    if (a == b)
    
    for (int i = 0; i < 10; i++)
    
    // 不空格情况举例
    a = sqrt ((b*b+c*c+d*d)/14+23*e-8*d);
    // 像这样的多重运算属于一个整体的则可以不空格,否则间距太大
    a = sqrt ((b * b + c * c + d * d) / 14 + 23 * e - 8 * d);
    

    5.代码解释

    /*解释使用代码
     *多行注释代码
    */
    
    // 单行注释代码,在“//”之后空格一下啊
    //不要写成这样,这个不空格是不规范的
    
    #include <stdio.h>
    // 空行与下面部分分离----
    
    int main ()  // 括号之前空格一下
    {
        int a, b, c;  // 逗号等一些符号后空格一下
        // 数据定义和数据输入分离,空行一下
    
        printf ("请输入三个数字,用空格分离:");  //  在输入函数前加以提示,则提示与输入函数放在一起
        scanf ("%d%d%d", &a, &b, &c);  // 在括号里面的逗号等也要再之后空格一下
    
        // 使用while循环
        while (a == 1 && b == 2 && c == 3)
        {
            int temp;
    
            scanf ("%d", &temp);
    
            // 条件判断句等独立函数要单独列出来
            if (temp == a)
            {
                b == temp;
            }
    
            printf("%d\n", b);
        }
    
        return 0;
    }
    

    源代码(未加注释)

    #include <stdio.h>
    
    int main ()  
    {
        int a, b, c;  
    
        printf ("请输入三个数字,用空格分离:");  
        scanf ("%d%d%d", &a, &b, &c);  
    
        while (a == 1 && b == 2 && c == 3)
        {
            int temp;
    
            scanf ("%d", &temp);
    
            if (temp == a)
            {
                b == temp;
            }
    
            printf("%d\n", b);
        }
    
        return 0;
    }
    

    6.关于注释问题

    给一篇范文自己体会

    下面的13个技巧向你展示如何添加代码注释,这些技巧都很容易理解和记忆。
    
    1. 逐层注释
    为每个代码块添加注释,并在每一层使用统一的注释方法和风格。例如:
    针对每个类:包括摘要信息、作者信息、以及最近修改日期等 
    针对每个方法:包括用途、功能、参数和返回值等
    在团队工作中,采用标准化的注释尤为重要。当然,使用注释规范和工具(例如C#里的XML,Java里的Javadoc)可以更好的推动注释工作完成得更好。
    2. 使用分段注释 
    如果有多个代码块,而每个代码块完成一个单一任务,则在每个代码块前添加一个注释来向读者说明这段代码的功能。例子如下:
    
    // Check that all data records
    // are correct 
    foreach (Record record in records) 
    {
        if (rec.checkStatus()==Status.OK)
        { 
            . . . 
        } 
    } 
    // Now we begin to perform 
    // transactions 
    Context ctx = new ApplicationContext(); 
    ctx.BeginTransaction();
    . . .
    3. 在代码行后添加注释 
    如果多行代码的每行都要添加注释,则在每行代码后添加该行的注释,这将很容易理解。例如:
    
    const MAX_ITEMS = 10; // maximum number of packets 
    const MASK = 0x1F;    // mask bit TCP
    
    在分隔代码和注释时,有的开发者使用tab键,而另一些则使用空格键。然而由于tab键在各编辑器和IDE工具之间的表现不一致,因此最好的方法还是使用空格键。
    
    4. 不要侮辱读者的智慧
    
    避免以下显而易见的注释:
    
    if (a == 5)      // if a equals 5 
        counter = 0; // set the counter to zero
    
    写这些无用的注释会浪费你的时间,并将转移读者对该代码细节的理解。
    
    5. 礼貌点 
    避免粗鲁的注释,如:“注意,愚蠢的使用者才会输入一个负数”或“刚修复的这个问题出于最初的无能开发者之手”。这样的注释能够反映到它的作者是多么的拙劣,你也永远不知道谁将会阅读这些注释,可能是:你的老板,客户,或者是你刚才侮辱过的无能开发者。
    
    6. 关注要点
    
    不要写过多的需要转意且不易理解的注释。避免ASCII艺术,搞笑,诗情画意,hyperverbosity的注释。简而言之,保持注释简单直接。
    
    7. 使用一致的注释风格 
    一些人坚信注释应该写到能被非编程者理解的程度。而其他的人则认为注释只要能被开发人员理解就行了。无论如何,Successful Strategies for Commenting Code已经规定和阐述了注释的一致性和针对的读者。就个人而言,我怀疑大部分非编程人员将会去阅读代码,因此注释应该是针对其他的开发者而言。
    
    8. 使用特有的标签在一个团队工作中工作时,为了便于与其它程序员沟通,应该采用一致的标签集进行注释。例如,在很多团队中用TODO标签表示该代码段还需要额外的工作。
    
    int Estimate(int x, int y) 
    {
        // TODO: implement the calculations 
        return 0;
    }
    
    注释标签切忌不要用于解释代码,它只是引起注意或传递信息。如果你使用这个技巧,记得追踪并确认这些信息所表示的是什么。
    
    9. 在代码时添加注释 
    在写代码时就添加注释,这时在你脑海里的是清晰完整的思路。如果在代码最后再添加同样注释,它将多花费你一倍的时间。而“我没有时间写注释”,“我很忙”和“项目已经延期了”这都是不愿写注释而找的借口。一些开发者觉得应该write comments before code,用于理清头绪。例如:
    public void ProcessOrder()
    {
        // Make sure the products are available
        // Check that the customer is valid 
        // Send the order to the store 
        // Generate bill 
    }
    
    10. 为自己注释代码
    
    当注释代码时,要考虑到不仅将来维护你代码的开发人员要看,而且你自己也可能要看。用Phil Haack大师的话来说就是:“一旦一行代码显示屏幕上,你也就成了这段代码的维护者”。因此,对于我们写得好(差)的注释而言,我们将是第一个受益者(受害者)。
    
    11. 同时更新代码和注释 
    如果注释没有跟随代码的变化而变化,及时是正确的注释也没有用。代码和注释应该同步变化,否则这样的注释将对维护你代码的开发者带来更大的困难。使用重构工具时应特别注意,它只会自动更新代码而不会修改注释,因此应该立即停止使用重构工具。
    12. 注释的黄金规则:易读的代码 
    对于开发者的一个基本原则就是:让你的代码为己解释。虽然有些人怀疑这会让那些不愿意写注释的开发者钻空子,不过这样的代码真的会使你容易理解,还不需要额外维护注释。例如在Fluid Interfaces文章里向你展示的代码一样:
    
    Calculator calc = new Calculator();
    calc.Set(0);
    calc.Add(10);
    calc.Multiply(2);
    calc.Subtract(4);
    Console.WriteLine( "Result: {0}", calc.Get() );
    
    在这个例子中,注释是不需要的,否则可能就违反了技巧4。为了使代码更容易理解,你可以考虑使用适当的名字(Ottinger's Rules里讲解得相当好),确保正确的缩进,并且采用coding style guides,违背这个技巧可能的结果就像是注释在为不好的代码apologize。
    
    13. 与同学分享技巧 
    虽然技巧10已经向我们表明了我们是如何从好的注释中直接受益,这些技巧将让所有开发者受益,特别是团队中一起工作的同事。因此,为了编写出更容易理解和维护的代码,尝试自由的和你的同学分享这些注释技巧。
    
    

    相关文章

      网友评论

        本文标题:《C语言代码规范-基础版》

        本文链接:https://www.haomeiwen.com/subject/bqkfgxtx.html