如何在程序中合理的使用空格

来源:互联网 发布:java架构书籍推荐 编辑:程序博客网 时间:2024/04/30 06:05

以下是google工程师在编程过程中对空格使用的约定:

1. Horizontal Whitespace(水平留白)

水平方向空格的使用取决于具体的位置。不要在一行代码的结尾处放置空格。

一般的:

void f(bool b) {  //在大括号的前面应该总是有一个空格 

  ...

int i = 0;  // 分号前面通常不放空格

int x[] = { 0 };  // 在给数组初始化时,括号中的空格是

int x[] = {0};    // 可选的。如果要使用空格,请在元素的两边都放上。

// 在继承和初始化列表中冒号两边要加空格Spaces around the colon in inheritance and initializer lists.

class Foo : public Bar {

 public:

  // 对应inline的函数实现,在它的括号和具体的实现直接放上空格

  Foo(int b) : Bar(), baz_(b) {}  // 空括号中不放空格

  void Reset() { baz_ = 0; }  // 空格将括号和实现分隔开

  ...

在合并代码时,末尾加空格会给其他人带来额外的工作量,因为要去除末尾存在的代码。所以:不要在末尾添加空格。如果你已经添加了,请删除它,或者在一个单独的清理操作中删除(最好在没有其他人正在使用你的文件的时候)。

Loops and Conditionals(循环和条件式)

if (b) {          // 在条件句和循环的关键字后面加上空格

} else {          // else的两边加上空格.

}

while (test) {}   // 在圆括号中通常没有空格.

switch (i) {

for (int i = 0; i < 5; ++i) {

switch ( i ) {    // 在循环和条件句的

if ( test ) {     // 圆括号中添加空格是罕见的,如果要使用请前后保持一致

for ( int i = 0; i < 5; ++i ) {

for ( ; i < 5 ; ++i) {  // For 循环常常在分号的前后有一个空格

for (auto x : counts) {  // 基于范围的for循环常常在冒号的前后有一个空格

}

switch (i) {

  case 1:         // case的冒号前没有空格

    ...

  case 2: break;  //在冒号的后面添加一个空格,如果其后还有代码 

Operators(运算符)

x = 0;              // 赋值操作符的两边常常有空格                   

x = -5;             // 在一元操作符和他的参数之间没有空格 

++x;             

if (x && !y)

  ...

v = w * x + y / z;  // 二元操作符的两边常常有空格 

v = w*x + y/z;      // 但是也可以删除factors周围的空格 

v = w * (x + z);    // 圆括号里面没有空格 .

Templates and Casts(模版和强制类型转换)

vector<string> x;           // 在尖括号里面

y = static_cast<char*>(x);  // 没有空格(<  >),在强制类型转换

                            // 中,在< 前面或者在 >( 之间也没有空格.

vector<char *> x;           // 在类型和指针之间可以有空格,但是要保持前后一致  

set<list<string>> x;        // 允许出现在 C++11的代码中 .

set<list<string> > x;       // C++03 required a space in > >.

set< list<string> > x;      // 你也可以选择在list前面添加一个对称的空格


2 Vertical Whitespace(垂直留白)

linkMinimize use of vertical whitespace.

最小化垂直留白。

相对应一条规则,这更是一条原则:当你不是必须要使用空白行时,请不用使用空白行。特别,在两个函数之间不要放超过一行或者两行的空白行,抵制以一个空白行作为函数的开始,以一个空白行作为函数的结束,但是,要区别对待在函数中使用空白行。

最基本的规则是:屏幕上显示的代码越多,越容易去跟踪和理解程序的控制流。当然,可读性也会由于代码太密或者太疏受到影响,所以需要你自己去判断。但是,一般来说,最小化使用垂直空白行。

一些经验法则能够帮助确定什么时候该用空白行:

一个函数的开头和结尾的空白行对可读性的帮助很小。

if-else链块中的空白行可能对可读性有很好的帮助。

原文网址:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Exceptions

原创粉丝点击