[C#] 程式碼可讀性提升技巧,談談幾個我常犯的錯誤

2025-09-10

最近在看一些關於程式可讀性的文章,這裏面遇到一些我也常犯的錯誤,所以紀錄一下

畢竟寫過才會記得,這邊也給自己下個 flag...



1. 如果回傳的東西不要使用,前面可以加入 _=

程式範例:

static User ChangeUserLevel(string userId) { //.. } _ = ChangeUserLevel(userId);

雖然回傳的 User  我沒有要用,但是前面依然加上 _= ,這樣 review 起來,感覺就不會像是你忘記處理


2. 如果 function 設計有一些重複的 true/ false 或是 string  呼叫時可以加入 paramater name.

static User ChangeUserLevel(User user,bool isAutoSave) { //.. } //多加入提示詞 isAutoSave 取代使用 ChangeUserLevel("userid",true); ChangeUserLevel("userid", isAutoSave: true);


3. 不要過於炫技,可以適當拆解 LINQ ,方便如果中間要改變,可以方便插入

var result = users.Where(x => x.Age >18).Select(x => x.Name).Distinct().ToList(); var aldultUser = users.Where(x => x.Age>=18); var allAldultUserName = aldultUser.Select(x => x.Name); var result = allAldultUserName.Distinct().ToList();


4. 暫時使用的變數,名稱也不要少打太多字,這都可以幫助之後的閱讀性,不然 code review 很痛苦

//var r = GetUser(u); var userToDelete = GetUser(userId);


5. 判斷條件如果能拆開就拆開,這樣絕對方便幫助 debug ,我常常判斷日期的時候會用錯 and , or 

這樣拆開會比較方便自己 debug 當條件複雜的時候

if (!string.IsNullOrEmpty(name) && (role == "Admin" || level > 3) && !isLocked) { //.. } var hasName = !string.IsNullOrEmpty(name); var isPrivileged = role == "Admin" || level > 3; if (hasName && isPrivileged && !isLocked) { //.. }


6. 一些常數值記得抽成變數,不然程式碼一長一定會忘記這數字,而且之後要改可能要改很多地方

const int PassingThres = 87; if (score > PassingThres) { }


目前就是想到這麼多,畢竟寫程式久了很容易偷懶



當麻許的碎念筆記 2014 | Donma Hsu Design.