一開始在寫 C# 時,非常建議先看這篇官方文件了解 C# 基本的命名規則和慣例:
Microsoft.Learn - C# 命名規則和慣例
不過隨著 C# 越寫越多,會發現 C# 中有其他的命名規則和慣例,並且是在官方文件中沒有明確列出的,本文就來整理一下筆者在開發過程中從官方程式碼庫、開源庫中發現的大家約定成俗的命名慣例。
註:貼上的範例程式碼有經過簡化。
例如在常用的用來存取資料庫的套件 Microsoft.EntityFrameworkCore 中就有出現兩種將資料儲存至資料庫的方法,同步的叫做 SaveChanges ,而非同步的方法名稱則是同步的方法名稱加上 Async:
上面介紹到的 Async 其實也有相同意思。
還有 Exception 也會在名稱後面加上 Exception,這裡就列出幾個常見的 Exception:
這種命名後綴很常見,但是其他的編輯器就不會給你「明確的建議」了,是大家約定成俗的習慣。
還是以 ASP.NET Core 舉例,常見的會加上命名後綴的有:
例如在 ASP.NET Core 常用的官方身份驗證套件 Microsoft.AspNetCore.Identity 中,UserManager.cs 就可以看到:
這裡再列出其他常見範例:
但是不會使用否定的方式,例如 IsNot, CanNot 之類的開頭,因為使用否定的方式可能較難理解,不直覺。 持續更新中...
延伸閱讀: ASP.NET Core 命名建議
參考資料:
Microsoft.Learn - C# identifier naming rules and conventions
不過隨著 C# 越寫越多,會發現 C# 中有其他的命名規則和慣例,並且是在官方文件中沒有明確列出的,本文就來整理一下筆者在開發過程中從官方程式碼庫、開源庫中發現的大家約定成俗的命名慣例。
註:貼上的範例程式碼有經過簡化。
非同步方法以 Async 結尾
一般在寫方法時基本上都是同步方法,如果這個方法是非同步的方法,就會在方法結尾加上 Async 方便辨識這個方法是非同步方法。例如在常用的用來存取資料庫的套件 Microsoft.EntityFrameworkCore 中就有出現兩種將資料儲存至資料庫的方法,同步的叫做 SaveChanges ,而非同步的方法名稱則是同步的方法名稱加上 Async:
// 同步方法
public int SaveChanges()
{
}
// 非同步方法
public Task<int> SaveChangesAsync()
{
}
使用命名後綴
在官方文件中有提到 Attribute 後面要加上 Attribute,例如 RequiredAttribute,就有在名稱後面加入 Attribute 代表他是 Attribute 。上面介紹到的 Async 其實也有相同意思。
還有 Exception 也會在名稱後面加上 Exception,這裡就列出幾個常見的 Exception:
ArgumentException
NotImplementedException
FileNotFoundException
這種命名後綴很常見,但是其他的編輯器就不會給你「明確的建議」了,是大家約定成俗的習慣。
還是以 ASP.NET Core 舉例,常見的會加上命名後綴的有:
- Controller
- Service
- Repository
- Middleware
bool 布林值變數/方法使用問句
布林值(bool)在命名時前面通常會使用 Is, Has, Can, Should 之類的英文開頭,方便辨識例如在 ASP.NET Core 常用的官方身份驗證套件 Microsoft.AspNetCore.Identity 中,UserManager.cs 就可以看到:
public virtual async Task<bool> IsInRoleAsync(TUser user, string role)
public virtual async Task<bool> IsEmailConfirmedAsync(TUser user)
public virtual Task<bool> IsPhoneNumberConfirmedAsync(TUser user)
public virtual async Task<bool> IsLockedOutAsync(TUser user)
這裡再列出其他常見範例:
public bool IsEnabled() => true;
public bool HasPermission => true;
public bool CanExecuteOperation() => true;
但是不會使用否定的方式,例如 IsNot, CanNot 之類的開頭,因為使用否定的方式可能較難理解,不直覺。 持續更新中...
延伸閱讀: ASP.NET Core 命名建議
參考資料:
Microsoft.Learn - C# identifier naming rules and conventions
感謝教學~
回覆刪除