# Coding Standard ## NameSpace * 使用Pascal規則首字元大寫 * 第一層為公司名稱,避免其他公司開發類似的產品造成衝突 * 第二層為專案名稱 or 專案代碼 * 第三層為Services | Models | Repositorys (複數) * 第四層為Services | Models | Repository (用於分類) Sample ```C#= namespace Taiwanlife.{Project}.Services.Accounting ``` ## 類別 應該為名詞,用 UpperCamelCase,即每個詞首字母大寫,拼寫完整,不用簡稱、縮寫(除非縮寫比全名更常用,如 URL 或 HTML) Sample ```C#= class Raster(); class ImageSprite(); ``` ## 欄位 * static, public 和 protected欄位使用Pascal規則,首字元大寫* * private 或 static,readOnly,這些例外使用 camelCase 並添加一個底線,如 _totalCount Sample ```C#= private static int _totalCount; readonly int _totalCount; char c; float myWidth; ``` ## 變數 本地變數、即時變數和類別變數用 lowerCamelCase。變數名不能以底線 (_) 變數名稱應該簡潔易懂,便於記憶。儘量避免使用單字母,除非一些臨時變數。臨時變數常用名,整數型一般用 i, j, k, m 或 n;而字元型則用 c, d 或 e。 Sample ```C#= int i; char c; float myWidth; ``` ## 引數 1. 引數採用camel規則命名,且首字元小寫。 1. 不要給引數加型別表示法的字首。 ex. ~~public void GetData(string strName) ~~ ```C#= public void SetupDataService (string userName); ``` 1. 檢查方法所有輸入引數的有效性。 ## 常數,唯讀 存取修飾子不建議用 public,若要跨類別存取請使用ReadOnly Sample ```C#= const string USER_NAME; ``` ## 方法 1. 方法名採用Pascal規則,第一個字元要大寫。 1. 方法名應使用動詞或動詞短語。 Sample ```C#= public void GetData() public void DoSomething() ``` ## Service 1. 名稱採用Pascal規則,即首字元大寫 1. 定義Service要使用Service字尾 1. 命名請使用動詞+名詞+Service的組合 Sample ```C#= public void SetupDataService (string userName);`` //執行個體建構 SetupDataService spService =new SetupDataService(); ``` ## Repository 1. 名稱採用Pascal規則,即首字元大寫 1. 定義Repository要使用Repository字尾 1. 名詞+Repository Sample ```C#= public List<Order> OrderRepository(); ``` ## ViewModel 命名需和View相互呼應 | View Model | View | | -------- | -------- | | <EntityName>View | <EntityName> | | ShellViewModel | Shell | | TabViewModel | Tab | ## Model . 名稱採用Pascal規則,即首字元大寫 1. 名詞+Model Sample ```C#= public class ProductModel; ``` ## Controller 1. 名稱採用Pascal規則,即首字元大寫 1. 名詞+Controller Sample ```C#= public class ProductController: Controller; ``` ## 其它 ### 字串相加 1個以上的字串相加使用$符號 ```C#= string userName = "<Type your name here>"; string date = DateTime.Today.ToShortDateString(); // Use string interpolation to concatenate strings. string str = $"Hello {userName}. Today is {date}."; str = $"{str} How are you today?"; System.Console.WriteLine(str); ``` ### 組合路徑 ```C#= string[] paths = {@"d:\Taiwanlife", "2001", "media", "images"}; string fullPath = Path.Combine(paths); Console.WriteLine(fullPath); ``` ### SQL編碼規範 SQL語句除了[資料表名稱]以外全部大寫 ```SQL= SELECT * FROM Card; SELECT TOP 1 * FROM Card; ``` [link text](https:// "title")