【C语言深度学习】阅读笔记 函数+文件结构

一、函数编码风格

1.每一个函数都必须有注释,即使函数短到可能只有几行。头部说明需要包 含包含的内容和次序如下:

2.每个函数定义结束之后以及每个文件结束之后都要加一个或若干个空行。

3.在一个函数体内,变量定义与函数语句之间要加空行

4.逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。

5.复杂的函数中,在分支语句,循环语句结束之后需要适当的注释,方便区 分各分支或循环体

6.修改别人代码的时候不要轻易删除别人的代码,应该用适当的注释方式,

7.用缩行显示程序结构,使排版整齐,缩进量统一使用4个字符(不使用TAB 缩进)

8.在函数体的开始、结构/联合的定义、枚举的定义以及循环、判断等语句中 的代码都要采用缩行

9.同层次的代码在同层次的缩进层上

10.代码行最大长度宜控制在80 个字符以内,较长的语句、表达式等要分成 多行书写

11.长表达式要在低优先级操作符处划分新行,操作符放在新行之首(以便突 出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。

12.如果函数中的参数较长,则要进行适当的划分。

13.用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

14.如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用 默认的优先级

15.不要编写太复杂的复合表达式

16.不要有多用途的复合表达式

17.尽量避免含有否定运算的条件表达式。

18.参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果 函数没有参数,则用void 填充。

19.原则上尽量少使用全局变量,因为全局变量的生命周期太长,容易出错, 也会长时间占用空间.各个源文件负责本身文件的全局变量,同时提供一对对外函数,方 便其它函数使用该函数来访问变量。

20.参数命名要恰当,顺序要合理。一般地,应将目的参数放在前面,源参数放在后面。

21.如果参数是指针,且仅作输入参数用,则应在类型前加const,以防止该 指针在函数体内被意外修改。

22.不要省略返回值的类型,如果函数没有返回值,那么应声明为void 类型。 如果没有返回值,编译器则默认为函数的返回值是int类型的。

23.在函数体的“入口处”,对参数的有效性进行检查。尤其是指针参数,尽 量使用assert宏做入口校验,而不使用if语句校验。

24.return 语句不可返回指向“栈内存”的“指针”,因为该内存在函数体结 束时被自动销毁。

25.函数的功能要单一,不要设计多用途的函数。

26.函数体的规模要小,尽量控制在80 行代码之内。

27.相同的输入应当产生相同的输出。尽量避免函数带有“记忆”功能。

28.避免函数有太多的参数,参数个数尽量控制在4个或4个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。

29.尽量不要使用类型和数目不确定的参数。

30.有时候函数不需要返回值,但为了增加灵活性如支持链式表达,可以附加 返回值。

31.不仅要检查输入参数的有效性,还要检查通过其它途径进入函数体内的变 量的有效性,例如全局变量、文件句柄等。

32.函数名与返回值类型在语义上不可冲突

编码风格

1.每一个函数都必须有注释,即使函数短到可能只有几行。头部说明需要包 含包含的内容和次序如下:

2.每个函数定义结束之后以及每个文件结束之后都要加一个或若干个空行。

3.在一个函数体内,变量定义与函数语句之间要加空行

4.逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。

5.复杂的函数中,在分支语句,循环语句结束之后需要适当的注释,方便区 分各分支或循环体

6.修改别人代码的时候不要轻易删除别人的代码,应该用适当的注释方式,

7.用缩行显示程序结构,使排版整齐,缩进量统一使用4个字符(不使用TAB 缩进)

8.在函数体的开始、结构/联合的定义、枚举的定义以及循环、判断等语句中 的代码都要采用缩行

9.同层次的代码在同层次的缩进层上

10.代码行最大长度宜控制在80 个字符以内,较长的语句、表达式等要分成 多行书写

11.长表达式要在低优先级操作符处划分新行,操作符放在新行之首(以便突 出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。

12.如果函数中的参数较长,则要进行适当的划分。

13.用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

14.如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用 默认的优先级

15.不要编写太复杂的复合表达式

16.不要有多用途的复合表达式

17.尽量避免含有否定运算的条件表达式。

18.参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果 函数没有参数,则用void 填充。

19.原则上尽量少使用全局变量,因为全局变量的生命周期太长,容易出错, 也会长时间占用空间.各个源文件负责本身文件的全局变量,同时提供一对对外函数,方 便其它函数使用该函数来访问变量。

20.参数命名要恰当,顺序要合理。一般地,应将目的参数放在前面,源参数放在后面。

21.如果参数是指针,且仅作输入参数用,则应在类型前加const,以防止该 指针在函数体内被意外修改。

22.不要省略返回值的类型,如果函数没有返回值,那么应声明为void 类型。 如果没有返回值,编译器则默认为函数的返回值是int类型的。

23.在函数体的“入口处”,对参数的有效性进行检查。尤其是指针参数,尽 量使用assert宏做入口校验,而不使用if语句校验。

24.return 语句不可返回指向“栈内存”的“指针”,因为该内存在函数体结 束时被自动销毁。

25.函数的功能要单一,不要设计多用途的函数。

26.函数体的规模要小,尽量控制在80 行代码之内。

27.相同的输入应当产生相同的输出。尽量避免函数带有“记忆”功能。

28.避免函数有太多的参数,参数个数尽量控制在4个或4个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。

29.尽量不要使用类型和数目不确定的参数。

30.有时候函数不需要返回值,但为了增加灵活性如支持链式表达,可以附加 返回值。

31.不仅要检查输入参数的有效性,还要检查通过其它途径进入函数体内的变 量的有效性,例如全局变量、文件句柄等。

32.函数名与返回值类型在语义上不可冲突

二、文件内容的一般规则

1.每个头文件和源文件的头部必须包含文件头部说明和修改记录。

2.各个源文件必须有一个头文件说明,头文件各部分的书写顺序下:

3.源文件各部分的书写顺序如下

4.需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件 的头部

5.文件标识符分为两部分,即文件名前缀和后缀。文件名前缀的最前面要使 用范围限定符——模块名(文件名)缩写;

6.采用小写字母命名文件,避免使用一些比较通俗的文件名,如:public.c 等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值