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

來源:互聯網
上載者:User

以下是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(垂直留白)

link▽Minimize use of vertical whitespace.

最小化垂直留白。

相對應一條規則,這更是一條原則:當你不是必須要使用空白行時,請不用使用空白行。特別,在兩個函數之間不要放超過一行或者兩行的空白行,抵制以一個空白行作為函數的開始,以一個空白行作為函數的結束,但是,要區別對待在函數中使用空白行。

最基本的規則是:螢幕上顯示的代碼越多,越容易去跟蹤和理解程式的控制流程。當然,可讀性也會由於代碼太密或者太疏受到影響,所以需要你自己去判斷。但是,一般來說,最小化使用垂直空白行。

一些經驗法則能夠協助確定什麼時候該用空白行:

一個函數的開頭和結尾的空白行對可讀性的協助很小。

在if-else鏈塊中的空白行可能對可讀性有很好的協助。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.