参考: https://blog.csdn.net/zhouzhaoxiong1227/article/details/22820533

一、.初始化数组变量

在实际的软件开发项目中,变量在使用前应初始化,防止未经初始化的变量被引用。

对于数组变量来说,恰当的初始化样例如下:

          char szString[100] = {0};

定义了一个名为szString的包含100个字节的数组变量,并将该数组中每个变量的初始值赋为0。

二、 定义和初始化结构体变量

结构体变量的定义方法的样例如下:

typedef struct

{

……

}T_Struct;

该结构体变量的初始化样例如下:

          T_Struct tStruct = {0};

很多开发人员都不注重对结构体变量进行初始化,这是不对的。要牢记的是,任何变量在使用前,都应进行初始化

 三、用在if、else、else if、for、while、do等语句中

在实际的软件开发项目中,if、else、else if、for、while、do等语句用得较多,对这些语句的书写要求如下:

  (1)自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加“{ }”。

这样做的目的是便于阅读,同时也有利于代码的维护。

假设定义了两个整型变量iIntVal1和iIntVal2,如果iIntVal1的值小于iIntVa2,那么就将iIntVal2的值赋给iIntVal1,则正反示例为:

 反例:

        if (iIntVal1 < iIntVal2) iIntVal1 = iIntVal2;

这样写出来的程序可读性很差,不利于对流程的跟踪及对版本的维护。

   正例:

        if (iIntVal1 < iIntVal2)

{

iIntVal1 = iIntVal2;

}

该代码和反例中的代码相比,简洁清晰,让人一目了然。

(2)程序的分界符“{”和“}”应独占一行并且位于同一列,同时与引用它们的语句左对齐。“{ }”之内的代码块使用缩进规则对齐(一般缩进4个空格)。如上面(1)所示。

四、用在switch语句中

switch语句也经常出现在产品代码中,要想写出逻辑清晰、可阅读性强的switch语句,需要遵循以下规则:

  (1)一定要加上default分支,即使case分支已经将全部情况都包括了

这样做是为了防止其它代码阅读者误以为漏写了default分支,也可表现出开发人员的思维的全面性。

  (2)一个case分支和default分支要用“{ }”括起来,“{ }”中的内容需要缩进(一般缩进4个空格)。

这样做可使程序逻辑清晰,可读性更好。

假设定义了一个整型变量iSwitchFlag,可取值1、2、3,用switch语句对每种可取值的情况分别进行处理,则示例为:

正例:

switch (iSwitchFlag)
{
case 1:
{
DoSomething1(); //缩进4个空格
break;
}
case 2:
{
DoSomething2(); //缩进4个空格
break;
}
case 3:
{
DoSomething3(); //缩进4个空格
break;
}
default: //一定要有default分支
{
DoNothing();
break;
}
}

 3) break语句要写到 “case”或者“default”的“{}”里面,这样可以体现出程序块的整体性,便于阅读。

五、用在函数中

众所周知,一个函数中的所有语句是包括在“{}”之中的。除此之外,“{}”在函数之中还有其它用武之地。

     (1)分隔功能关联不大的语句块

在某些函数中,可能包含了很多功能,但这些功能之间的关联性很小,可以当作独立的代码来对待。这时,可以用“{}”将这些不同功能的代码块区分开来,增强代码的可读性,也便于对函数的维护和修改。

假设有一个函数ExampleFun,包含了三个较为独立的功能A、B和C,则可以如下组织该函数的代码。

void ExampleFun(void)

{

//功能A代码块开始

{

//功能A的实现代码

}

//功能A代码块结束

//功能B代码块开始

{

//功能B的实现代码

}

//功能B代码块结束

//功能C代码块开始

{

//功能C的实现代码

}

//功能C代码块结束

}

这样的代码具有自说明性,便于阅读和维护,提高了工作效率。

    (2)突出添加或修改的代码

在代码行数较多的函数中,如果要添加或修改的代码量很少,即与原本已有的代码比起来,显得“很渺小”。这时,可以用“{}”将添加或修改的代码括起来,以突出代码的改动,方便阅读及对代码进行走查等。

同样以函数ExampleFun为例来说明,如下所示:

void ExampleFun(void)

{

……

……

……

//修改或添加代码块开始

{

//修改或添加的代码

}

//修改或添加代码块结束

……

……

……

}

【阅读笔记】《C程序员 从校园到职场》第三章 程序的样式(大括号)的更多相关文章

  1. 【阅读笔记】《C程序员 从校园到职场》第二章 学校到职场

    一.代码规范: 1.变量命名(让人一眼看它是什么意思,要做什么操作),定义并初始化 2.函数命名规范(函数的功能)在主函数之前进行声明. 在实际项目中,一般不在函数调用者的内部来对被调函数进行声明,而 ...

  2. 【阅读笔记】《C程序员 从校园到职场》第八章 算法和协议(Part 2)

    原文链接: 让你提前认识软件开发(19):C语言中的协议及单元测试示例 CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/2 ...

  3. 【阅读笔记】《C程序员 从校园到职场》第七章 指针和结构体

    原文地址:让你提前认识软件开发(13):指针及结构体的使用 CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/2387299 ...

  4. 【阅读笔记】《C程序员 从校园到职场》第六章 配置文件,makefile 文件 (Part 2)

     Contents: 1.配置文件(通常以 ini 结尾) 2.makefile文件 (Linux) PS: 这篇文章的内容,不太理解. 一.配置文件 本文以一个实际的小软件为例,介绍了C语言中配置文 ...

  5. 【阅读笔记】《C程序员 从校园到职场》第五章 内存操作

    参考:   让你提前认识软件开发(8):memset()与memcpy()函数  https://blog.csdn.net/zhouzxi/article/details/22478081 让你提前 ...

  6. 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)

    参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...

  7. 【阅读笔记】《C程序员 从校园到职场》第四章 变量和函数

    参考: Contents: 一.数据类型(对基本数据类型进行重定义——规范化) 二.变量和函数  (命名规则,注意事项) 三.静态变量及其使用 一.数据类型(对基本数据类型进行重定义——规范化) 1. ...

  8. 《C程序猿从校园到职场》带领大家从校园走向职场

    七夕节刚过.就有好消息传来:本人新书<C程序猿从校园到职场>正式出版并在各大电商平台上发售了! 以下.让我们一起来赞赏一下纸质书的"风採"吧. 本书文件夹 第1章 概述 ...

  9. 《C程序猿从校园到职场》勘误

    (本人正在參加2015博客之星评选.诚邀你来投票,谢谢:username=zhouzxi">http://vote.blog.csdn.net/blogstar2015/candida ...

随机推荐

  1. Rest数据服务查询类-根据id查询

    Rest数据服务查询类 需要iserver data服务支持,但请求的时候,不依赖SuperMap js lib包. 构造函数:QueryById=function(p_params): p_para ...

  2. HRBUST - 2358 Magic network

    HRBUST - 2358 思路:dfs序 + 树状数组 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimiz ...

  3. Python Scrapy 爬虫框架实例(一)

    之前有介绍 scrapy 的相关知识,但是没有介绍相关实例,在这里做个小例,供大家参考学习. 注:后续不强调python 版本,默认即为python3.x. 爬取目标 这里简单找一个图片网站,获取图片 ...

  4. iframe和ajax文件上传方法

    为什么使用这两种方法文件上传呢,主要是因为局部刷新问题 上传问题,主要是使用form表单,或者用请求一个文件上传 iframe 大多网站都是有一个整体的固定结构,然后进行局部刷新,我们可以使用AJAX ...

  5. C#定义只能处理枚举类型的泛型类型

    internal sealed class GenericTypeThatRequireAnEnum<T> { ; //该 static 字段在不同的封闭类型之间是独立不共享的 //静态构 ...

  6. Interval 间隔问题

    2018-09-07 09:03:14 一.Merge Intervals 问题描述: 问题求解: public List<Interval> merge(List<Interval ...

  7. 关于TeeChart使用我会持续更新

    关于TeeChart使用我会持续更新 这篇文章中我是在Winform窗体使用TeeChart2011控件,通过定时器实现了实时绘制曲线图(三个序列). 先上一下效果图: 1.TeeChart2011. ...

  8. 微信小程序 使用环信聊天工具

    当时做微信小程序环信的时候,没有遇到太多的问题,因为找到了一个例子,有兴趣的朋友可以把这个包下载下来看一下,写的超级的号,使用起来也特别简单,appkey需要自己配置,从环信官网https://con ...

  9. pytorch变量

    下文中所使用的pytorch版本为1.0.1 在python,如果全局变量在函数中没有提前用global申明,就修改其值,结果是这个全局变量不会被修改,会在这个函数中另外产生一个局部变量(名字相同). ...

  10. 【洛谷p1403 】【AHOI2005】约数研究

    (有种失踪人口回归的感觉) 约束研究[传送门] (不过好像没有人注意到我这个蒟蒻) 好的不管它啦 最近学数论比较多,所以可能会有好多好多的数论题???(不存在的) 行吧上算法标签: 数论   数论  ...