2.1 空行

规则1:在每个类声明之后,每个函数定义结束之后加空行。

规则2:在某个函数体内,相关的不加空行,不相关的加空行。

// 空行
void Function1(…) 
{ 
} 
// 空行
void Function2(…) 
{ 
} 
// 空行
void Function3(…) 
{ 
}

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

// 空行

函数


while (condition) 
{ 
statement1; 
// 空行
if (condition) 
{ 
 statement2; 
} 
else 
{ 
 statement3; 
} 
// 空行
statement4; 
} 

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 

2.2  代码行

规则3:一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码便于阅读和方便写注释。

规则4:if  for   while   do 等语句自占一行,执行语句不得紧跟其后,不论执行语句多少,都要加{},这样可以防止程序书写出错。

示例2-2(a)为风格良好的代码行,示例2-2(b)为风格不良的代码行。

实例:
int width;  // 宽度
int height;  // 高度
int depth;  // 深度
 
int width, height, depth; // 宽度高度深度
实例:
x = a + b; 
y = c + d; 
z = e + f; 
 
X =a + b; y = c + d; z = e + f; 
实例:
if (width < height) 
{ 
   dosomething(); 
} 
if (width < height) 
   dosomething(); 
实例:
for (initialization; condition; update) 
{ 
    dosomething(); 
} 
// 空行
other(); 
 
for (initialization; condition; update) 
   dosomething(); 
other(); 
示例2-2(a) 风格良好的代码行  示例2-2(b) 风格不良的代码行

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

建议1、近可能的在初始化变量的同时初始化该变量.

尽可能在定义变量的同时初始化该变量(就近原则)

如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用

了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。例如

int width = 10;  // 定义并初绐化width

int height = 10;  // 定义并初绐化height

int depth = 10;  // 定义并初绐化depth

 

2.3   代码行内的空格

规则:关键字之后,留有空格。

规则:函数名之后不要留空格。紧跟左括号 ‘(’

规则:‘(’、‘)’、,;等,向前紧跟,紧跟后不留空格。

规则:, ; 后,需要留空格。

规则:赋值运算符、比较运算符、算术运算符、逻辑操作符、位域运算符,前后都需要加空格。

规则:一元操作符,! ~ ++ – & 等,前后不加空格。

规则:像[] .  -> 等操作符,前后不加空格。

建议:对于比较长的for语句和if预警,为了紧凑起来可以适当的去掉空格。

void Func1(int x, int y, int z); // 良好的风格
void Func1 (int x,int y,int z); // 不良的风格
if (year >= 2000) // 良好的风格
if(year>=2000) // 不良的风格
if ((a>=b) && (c<=d)) // 良好的风格
if(a>=b&&c<=d) // 不良的风格
for (i=0; i<10; i++) // 良好的风格
for(i=0;i<10;i++) // 不良的风格
for (i = 0; I < 10; i ++) // 过多的空格
x = a < b ? a : b; // 良好的风格
x=a<b?a:b; // 不好的风格
int *x = &y; // 良好的风格
int * x = & y; // 不良的风格
array[5] = 0; // 不要写成array [ 5 ] = 0; 
a.Function(); // 不要写成a . Function(); 
b->Function(); // 不要写成b -> Function(); 
示例2-3 代码行内的空格

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 

2.4   对齐

规则:{  与 } 独占一行,同时与引用他们的的语句左对齐。

规则:{  之内 }的代码块在{ 右边数格处左对齐。

2.5   长行拆分

规则:代码行最大长度控制在70个字符以内,不要过长。

规则:如果需要拆分,应该在低优先级操作符处拆分成新行,操作符放在新行之首。

if ((very_longer_variable1 >= very_longer_variable12) 
&& (very_longer_variable3 <= very_longer_variable14) 
&& (very_longer_variable5 <= very_longer_variable16)) 
{ 
   dosomething(); 
} 

 

virtual CMatrix CMultiplyMatrix (CMatrix leftMatrix,
                                 CMatrix rightMatrix); 

 

for (very_longer_initialization;
     very_longer_condition; 
     very_longer_update) 
{ 
     dosomething(); 
} 

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

2.6  修饰符的位置

规则:应该将修饰符 * 与 & 紧靠变量名

比如: char  *name;

         int *x,y;

2.7  注释

注释通常用于  1) 版权与版本说明  2) 函数接口说明 3) 重要的代码行或者段落提示

规则:注释是提示,不可过多,不可喧宾夺主。

规则:如果代码简单,则不必再加注释。

规则:边写代码边加注释,代码与注释必须同步更新。没用的注释需要及时删除。

规则:注释需要准确,通俗易懂。

规则: 注释的位置可以放在代码的上方或者右方,不可放在下方。

规则:当代码比较长,有多重嵌套的时候,应该在结束处增加注释,便于阅读。

2.8  类的板式

     类可以将数据和函数封装在一起,其中函数表示了类的行为(或称服务)。类提供关键字public、protected和private,分别用于声明哪些数据和函数是公有的、受保护的或者是私有的。这样可以达到信息隐藏的目的,即让类仅仅公开必须要让外界知道的

内容,而隐藏其它一切内容。我们不可以滥用类的封装功能,不要把它当成火锅,什么东西都往里扔。

     建议采用“以行为为中心”的书写方式,即首先考虑类应该提供什么样的函数。 因为我们用户最关心的是接口,而不是一堆没有的私有数据。

class A 
{ 
public: 
void Func1(void); 
void Func2(void); 
private: 
int i, j; 
float x, y; 
}

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 

重读金典------高质量C编程指南(林锐)-------第二章 程序的板式的更多相关文章

  1. 重读金典------高质量C编程指南(林锐)-------第七章 内存管理

    2015/12/10补充: 当我们需要给一个数组返回所赋的值的时候,我们需要传入指针的指针.当我们只需要一个值的时候,传入指针即可,或者引用也可以. 结构大致如下: char* p = (char*) ...

  2. 重读金典------高质量C编程指南(林锐)-------第一章 文件结构

    第一章  文件结构       C/C++程序通常由两个文件组成,一个文件保存程序的声明,称为头文件,.h 文件.一个保存程序的实现,称为定义文件.c文件. 1.1 版权与版本的声明 版权和版本的声明 ...

  3. 重读金典------高质量C编程指南(林锐)-------第六章 函数设计

    函数设计最重要的无外乎两个方面,一个是函数的接口设计一个是内部实现的一些规则. 在C语言中,函数的参数和返回值的传递方式分为两种: 值传递与指针传递.而C++中,多了一个引用传递. 引用传递有些像指针 ...

  4. 重读金典------高质量C编程指南(林锐)-------第五章 常量

    5.1  为什么需要常量 1)为了便于用户理解,增加程序的可读性. 2)在程序的很多地方都用到同一个常量,用某一个宏常量来定义可以减少错误. 规则:尽可能的使用含义直观明确的常量来表示程序中多次出现的 ...

  5. 重读金典------高质量C编程指南(林锐)-------第四章 表达式和基本语句

    4.1 运算符的优先级   规则:如果代码行中的运算符比较多,可用括号确定操作顺序.if((a|b)&&(a&c)) 4.2   复合表达式 规则:不要编写太复杂的复合表达式 ...

  6. 重读金典------高质量C编程指南(林锐)-------第三章 命名规则

      3.1  共性规则 规则:标识符应该直观且可以拼读,可进行英语翻译. 规则:标识符的长度需要控制好,不应该太长. 规则:命名规则应该同操作系统或者开发工具等保持一致,比如大小写混用.AddChar ...

  7. Python核心编程第三版第二章学习笔记

    第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of ...

  8. 《JS权威指南学习总结--第二章词法结构》

    第二章词法结构 内容要点: 一.注释 1. //表示单行注释 2. /*这里是一段注释*/ 3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/ 二.直接量 所谓直接量,就是程序中直接使用的 ...

  9. 《Node.js 高级编程》简介与第二章笔记

    <Node.js 高级编程> 作者简介 Pedro Teixerra 高产,开源项目程序员 Node 社区活跃成员,Node公司的创始人之一. 10岁开始编程,Visual Basic.C ...

随机推荐

  1. 【Luogu】P2485计算器(快速幂,exgcd和Bsgs模板)

    题目链接 题目描述非常直接,要求你用快速幂解决第一问,exgcd解决第二问,bsgs解决第三问. emmmm于是现学bsgs 第二问让求最小整数解好烦啊…… 假设我们要求得方程$ax+by=c(mod ...

  2. 一个 Java 的 Socket 服务器和客户端通信的例子

    一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请 ...

  3. imx6 PCIE使能加载ath9k无线网卡

    imx6q配置pcie无线网卡遇到如下问题: imx6q-pcie 1ffc000.pcie: PCI host bridge to bus 0000:00 pci_bus 0000:00: root ...

  4. iterator & iterable

    一. java.lang.Iterable java.util.Iterator Iterator是迭代器类,而Iterable是接口. 好多类都实现了Iterable接口,这样对象就可以调用iter ...

  5. nutch2.x在eclipse+windows环境下运行遇到的一些问题的解决方案

    1.问题 permission /tmp/hadoop.... 解决方法:下载hadoop源码包,修改org.apache.hadoop.fs.FileUtil.java文件中方法checkRetur ...

  6. pat 团体天梯 L1-046. 整除光棍

    L1-046. 整除光棍 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 翁恺 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1 ...

  7. hihocoder #1415 : 后缀数组三·重复旋律3

    #1415 : 后缀数组三·重复旋律3 Time Limit:5000ms Case Time Limit:1000ms Memory Limit:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢 ...

  8. android开发过程遇到的一些错误

    Unable to resolve target "android-x" 这是工程的Android版本和本地SDK中的版本不一致,一般做下处理: 1. 右击项目->andro ...

  9. 如何得知 GIC 的所有中斷

    can get the supported GIC interrupts from the below adb command, adb root adb shell cat /proc/interr ...

  10. depletion mosfet 的 depletion 解釋

    Origin mosfet 除了有 n channel 及 p channel 外, 還分為 enhanced 及 depletion 兩種, 引起我注意的是, depletion 代表什麼, Exp ...