C/C++ 程序员编程规范之排版

简介: C/C++ 程序员编程规范之排版

编程规范(排版)

排版


程序块要采用缩进风格编写,缩进的空格数为4个。

       说明:对于由开发工具自动生成的代码可以有不一致。

相对独立的程序块或者变量说明之间需要适当加空行来分割。

较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首.

       说明:划分出的新行要进行适当的缩进,使排版整齐,语句可读。

同理,循环、判断等语句中若有较长的表达式或语句,也要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

函数或过程中的参数较长,则要进行适当的划分。

如非必要,不要把多个短语句写在一行中,即一行只写一条语句,会使阅读更清晰。

函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求.

if、for、do、while等语句的执行语句部分无论多少都要加括号{},是否分行,根据条件判断.

程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐

       说明:括号内内语句同样需要进行缩进.

在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;

进行非对等操作时,如果是关系密切的立即操作符(如->),后不应加空格。

       说明:采用这种松散方式编写代码的目的是使代码更加清晰。

//逗号、分号只在后面加空格
int a, b, c; 
 
//比较操作符, 赋值操作符"="、 "+=",算术操作符"+"、"%",逻辑操作符"&&"、"&",位域操作符"<<"、"^"等双目操作符的前后加空格
if (current_time >= MAX_TIME_VALUE) 
a = b + c;
a *= 2;
a = b ^ 2;
 
//"!"、"~"、"++"、"--"、"&"(地址运算符)等单目操作符前后不加空格
*p = 'a';        // 内容操作"*"与内容之间
flag = !isEmpty; // 非操作"!"与内容之间
p = &mem;        // 地址操作"&" 与内容之间
i++;             // "++","--"与内容之间
 
//"->"、"."前后不加空格
p->id = pid;     // "->"指针前后不加空格
 
//if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显
if (a >= b && c > d)

文件结构

1. **引用顺序**:库引用和项目内部引用应该分开,并按一定顺序排列。

 

```cpp
    #include <iostream>
    #include <vector>
    
    #include "my_header.h"
    ```

2. **分区注释**:用注释标出代码的不同功能区。

 

```cpp
    // ====================
    // Variable Declarations
    // ====================
    ```

其他

1. **避免“魔法数字”**:不要在代码中直接使用像`3.14159`这样的数字,应使用常量或宏替换。

```cpp
    const double PI = 3.14159;
    ```

 

2. **避免全局变量**:除非有充分的理由,否则尽量避免使用全局变量。

3. **函数长度**:尽量保持函数长度不超过一屏幕,这样更容易阅读和理解。

4. **空格与Tab混用**:不要在同一个文件中混用空格和Tab进行缩进。

5. **常量和宏**:尽量使用常量或枚举代替宏定义

 

6. **可配置性**:避免硬编码,尽量使代码可以通过配置文件或环境变量等进行配置。

编程规范不仅仅是为了使代码看起来整洁,更重要的是为了提高代码的可读性、可维护性以及团队间的协作效率。因此,遵守一定的编程规范是非常必要的。

目录
相关文章
|
6月前
|
算法 Linux 程序员
嵌入式工程师以及C++程序员到公司就业需要掌握那些技术?
嵌入式工程师以及C++程序员到公司就业需要掌握那些技术?
|
6月前
|
存储 程序员 Linux
1024程序员节特辑 | C++入门指南:内存管理(建议收藏!!)
1024程序员节特辑 | C++入门指南:内存管理(建议收藏!!)
60 0
|
26天前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
21 5
|
5月前
|
存储 程序员 编译器
C/C++堆栈详细分析,新老程序员必会
C/C++堆栈详细分析,新老程序员必会
180 1
|
5月前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
67 0
|
5月前
|
程序员 C# C++
lpszBlogName C#开发多年中途被迫改行C++但工作中又经常偷偷使用C#的C++程序员
通过AUMID解析出packageFamily,再根据PackageManager解析出安装目录 PackageManager是WinRT的类型,如何在c++中使用WinRT,请参考C++/WinRT 以下代码需要管理员权限才能运行。
|
5月前
|
存储 程序员 C++
程序员必知:【C++】虚函数表vtable理解
程序员必知:【C++】虚函数表vtable理解
37 0
|
5月前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
66 0
|
6月前
|
存储 算法 测试技术
|
6月前
|
程序员 编译器 C++