【程式碼積累】寫一手漂亮的程式碼(1)
阿新 • • 發佈:2019-01-02
自己寫程式碼的過程中,難免會發現一些問題,有的是共性的、有的是特例的,定期把自己總結的程式碼規律做個總結,寫成部落格,請見如下:
(1)屬性訪問器裡的get判斷
之前寫過一篇”get set 屬性訪問器”的文章,一些花哨的寫法做了總結,後來在專案中我發現了一個問題,只要是這個屬性的返回值型別不是基本型別(string、int、bool等),就需要在get訪問器中進行判斷,if(_欄位 = null) return New 型別(); 這一點可以拿來注意。<span style="font-family:Microsoft YaHei;font-size:14px;">public LanguageText Name { get { if (_name == null) _name = new LanguageText(); return _name; } set { _name = value; } } </span>
(2)catch中捕捉到錯誤,將其寫入到日誌當中
之前對catch的寫法,我在java中接觸過列印到堆疊,是在IDE執行過程去監控,對於開發人員還好,一旦上線還是發現寫到日誌當中比較好,這裡想要先說的就是這種思想,我會專門寫一篇關於日誌處理的文章。<span style="font-family:Microsoft YaHei;font-size:14px;">catch (Exception ex) { //$"支付錯誤:{ex.Message}".Output(); Log.Write(nameof(YCHHelper), $"支付錯誤:{ex.Message}", LogType.System, LogLevel.Crash); return ""; } </span>
(3)資料庫連線欄位的寫法
} /// <summary> /// 新增資料列 /// </summary> /// <param name="colName">列名</param> /// <param name="colType">型別</param> /// <param name="length">長度</param> public void AddColumn(string colName, string colType, int length) { string strFormat = string.Empty == tableSql ? "{0} {1}({2})" : ",{0} {1}({2})"; tableSql += string.Format(strFormat, colName, colType, length); } public void AddColumn(string colName, string colType, int length, bool isAllowNull) { string strFormat = string.Empty == tableSql ? "{0} {1}({2}) {3}" : ",{0} {1}({2}) {3}"; tableSql += string.Format(strFormat, colName, colType, length, isAllowNull ? string.Empty : "not null"); } /// <summary> /// 生成建立表SQL語句 /// </summary> /// <returns>SQL語句</returns> public string GetCreateTableSQL() { tableSql = string.Format("Create table {0} ({1})", tName, tableSql); return tableSql; } 如上所述,是一個動態地生成sql語句的過程,這裡有一個點寫的很妙:<span style="font-family:Microsoft YaHei;font-size:14px;">//建立表SQL語句 private string tableSql = string.Empty; /// 新增資料列 /// </summary> /// <param name="colName">列名</param> /// <param name="colType">型別</param> public void AddColumn(string colName, string colType) { string strFormat = string.Empty == tableSql ? "{0} {1}" : ",{0} {1}"; tableSql += string.Format(strFormat, colName, colType); </span><pre name="code" class="csharp"><span style="font-family:Microsoft YaHei;font-size:14px;"> //這樣的寫法,減少了因為是否需要逗號的邏輯判斷,精簡了程式碼量。</span>
privatestring tableSql = string.Empty;
stringstrFormat = string.Empty == tableSql ? "{0} {1}" : ",{0}{1}";
先讓字串"tableSql"為空,拼串的過程中,如果"tableSql"為空,則拼接後面的引數,如果不為空,在拼接引數之前自動加上“,”,省去了每次拼接新串時加“,”判斷的邏輯程式碼,很輕便。而且上面3個方法過載,整體看起來,程式碼量也不大。
【Summary】
不斷從GitHub或者組裡學習別人寫的程式碼,每次一點點吸收成自己的東西,時間久了,就NB了。