首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

高品質 C++/C 程式設計指南 第 2 章:程式版式——代碼的書法美學

     編輯:關於C++

版式 = 代碼的書法

不影響功能,**決定可讀性**。好版式 = 一目了然、賞心悅目;差版式 = 螃蟹爬行、維護噩夢。**彌補大學教育缺失,極有必要**。

2.1 空行:段落分隔的呼吸感

  • 規則 2-1-1:類別宣告後、函數定義後、**必加空行**。
  • 規則 2-1-2:函數內,**邏輯緊密語句不空行**,其餘**加空行分隔**。

// 函數間空行
void Func1() { ... }

void Func2() { ... }

// 函數內部
while (cond) {
    stmt1;
    // 空行分隔邏輯塊
    if (cond) { stmt2; }
    else { stmt3; }
    // 空行
    stmt4;
}

空行不佔記憶體,列印紙張成本可忽略,**別吝嗇**。

2.2 代碼行:一行一事

  • 規則 2-2-1:一行**只做一件事** (一宣告/一語句),利於閱讀與註釋。
  • 規則 2-2-2:if/for/while/do **獨佔一行**,執行語句**不可緊跟**,**無論單語句必加 {}** (防維護時漏加導致邏輯錯)。

// ✅ 良好
int width = 10;
int height = 10;
if (w < h) { doSomething(); }

// ❌ 差勁
int width, height, depth;
if (w < h) doSomething();

建議 2-2-1

**就近初始化**:宣告即賦值,縮短「未初始化窗口期」。


int width = 10; // 定義並初始化

2.3 行內空格:呼吸節奏

規則對象動作
2-3-1關鍵字後至少一空格 (if (, virtual )
2-3-2函數名後**不加空格**緊跟 ( (與關鍵字區別)
2-3-3( 後 / ) , ; 前**緊貼**,不空格
2-3-4, 後 / ; 非行尾**加空格** (Func(a, b), for (i=0; i<10; ++i))
2-3-5二元運算子 (= + - * / % && || << >> ^ 等)**前後加空格**
2-3-6一元運算子 (! ~ ++ -- & 等)**不加空格**
2-3-7[] . ->**不加空格**

建議 2-3-1

長 for/if 為緊湊可適當減空格:for(i=0;i<10;++i), if((a<=b)&&(c<=d))。

2.4 對齊:視覺結構

  • 規則 2-4-1:{ } **獨佔一行、同欄、與引用語句左對齊**。
  • 規則 2-4-2:{} 內碼塊 **{ 右側一制表位左對齊** (縮進)。

// ✅ 良好
void Func(int x)
{
    ...
}

if (cond)
{
    ...
}
else
{
    ...
}

// ❌ 差
void Func(int x){ ... }
if (cond){ ... } else { ... }

巢狀 {} 以縮進層層對齊。

2.5 長行拆分:70-80 字元上限

  • 規則 2-5-1:行寬 ≤ 70-80 字元 (螢幕/列印可讀)。
  • 規則 2-5-2:在**低優先級運算子**處換行,**運算子置行首** (突顯)、新行適當縮進。
    
    if ((very_long_var1 >= very_long_var2)
        && (very_long_var3 <= very_long_var4)
        && (very_long_var5 <= very_long_var6))
    {
        doSomething();
    }
    
    virtual CMatrix CMultiplyMatrix(CMatrix leftMatrix,
                                    CMatrix rightMatrix);
    
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved