[C#] Code 小技巧

[Note] Code 小技巧

最近研究的code寫法,與大家討論分享:
string name = "";
這種寫法不好,原因在於可能會誤打空白而不自知,除錯時,反而會遺忘這最簡單的地方,
另外,要講效能,當寫出實字 "" 時,會在記憶體空間紀錄上 "",
雖然c#中,打在多相同的實字,實際上都會指向同一個地方。
建議以下寫法,除了以上根本沒差的一些影響外,最重要的是,不會誤打,描述性好。

string name = string.Empty;

如果用反組譯去看string.Empty會發現它是一個常數,也就是不管寫幾個,他在記憶體中只會有一份,並且是運行期才會產生。
網路上有一篇文章在比較差異,實際上 "" 跟 string.Empty 根本沒有效能差異,但是描述性與不小心手滑就有差異了。
經常會要判別是否為空字串,所以會寫出以下的code

            string name = string.Empty;
            if (name == string.Empty)
            {
                //請輸入姓名
            }

這樣的寫法有一個小危險,沒有判別是否為null,描述性沒有以下寫法好

            string name = string.Empty;
            if (string.IsNullOrEmpty(name))
            {
                //請輸入姓名
            }

另外,如果確定一定有初始值,例如,從控制項抓過來的值(大多控制項當沒有值時,會預設空字串)
大多時候是要判別有值才執行陳述式

            if ( ! string.IsNullOrEmpty(txtName.Text))
            {
                //紀錄名稱
            }

這樣寫也不太好,因為描述性就差了,多一個 not ( ! ),也造成浪費了效能,因此可以這樣寫:

            if (txtName.Text.Length > 0)
            {
                //紀錄名稱
            }

再來的東西就有點爭議了,我的寫法,可能寫法不佳,與大家討論。

            if (isTest == action)
            {
                //執行測試
            }
            else
            {
                //不執行測試
            }

else 根本就是通透(包含許多東西),很容易發生靈異事件,造成小女孩到處亂跑(個人遇到寫code鬼打牆的一種說法,可多看靈異相關影片了解原意)。
再來擴充不易,必須全盤了解,才可以動這個else。(比較優的寫法,會把判斷式內的陳述式在拉一層出去,增加描述性,並且也會比較好閱讀,
當陳述式過多,就會發生要動else時,必須看許多內容物。)

            if (isTest == action)
            {
                //執行測試
                return;
            }
             //不執行測試

這是我目前個人比較習慣的寫法,但這寫法不太好,因為這寫法有爭議,
return會導致不知道什麼時候才是結束時機,有些前輩會建議在最後才寫return。
那就至少要寫成以下的模式,反組譯微軟的code會發現,這是一種慣用手法,
目的在於未來的擴充,不必理會上面判斷式的長城,並且增加閱讀性。

            if (isTest == action)
            //執行測試
            if(isTest != action)
             //不執行測試

 

如文章有錯誤,煩請告知,新人發帖請多包涵

 

創用 CC 授權條款