---
# System prepended metadata

title: Clean Code - Ch05 排版
tags: [Clean Code, Book]

---

# Clean Code - Ch05 排版

對工程師來講，代碼就是一篇文章，好的排版方式可以讓我們更好的閱讀代碼 ，甚至可以利用這些排版的格式去來開發一些自動化的小工具幫助我們閱讀，反之則會讓我們在閱讀時要花費更多的時間在尋找代碼。

## 1. 垂直方向的排版
我們希望垂直方向的排版可以是一種向下的相依性，由上往下時，就像閱讀一篇文章一樣，從上到下可以看出代碼的流程，由下往上時，可以順利的找到父層的模組。

### 1.1 善用空白
適當的空白可以把雜亂的代碼做適當的切割，方便閱讀，因為相關的代碼應該要緊密的擺放在一起

### 1.2 變數宣告應該靠近使用的地方
可以讓閱讀者方便看變數的原始定義而不用滾動滑鼠回去最上面看

### 1.3 實體變數應該放在整個class的最上面
因為實體變數放在最上面已經幾乎是每個人的共通的習慣了，所以就繼續放在最上面吧

### 1.4 相依的function應該要放在附近
假設 funcA 會調用 funcB ，這時候應該要把 funcB 盡量放在 funcA 下面，方便後人閱讀而且也讓他在閱讀時可以照正確的順序去閱讀

### 1.5 相似的funtion應該要放在附近
這樣可以幫助後人閱讀時方便找類似功能的function，進而讓他避免掉因找不到需要的function而重寫一個功能相同的function的風險 (降低重新造輪子的風險)

## 2. 水平方向的排版
盡量讓代碼不要超出螢幕的寬度，這樣在閱讀時可以減少把手放到滑鼠上去滾動卷軸的時間，而且也可以避免因為轉移注意力而打斷思緒。

### 2.1 不要為了對齊代碼而特地把代碼加上很多空白
如果空白很長時，這樣反而會讓後人在閱讀時不容易找到對應的參數
``` csharp
private string      Address { get; set; }
public  int         Count { get; set; }
public  string      Name { get; set; }
public  int         Age { get; set; }
public  CompanyInfo CompanyInfo { get; set; }
```

###### tags: `Clean Code` `Book`