不計代價的簡化代碼


開博的第一篇總要有些誠意,分享一個自己寫的遠程桌面工具:https://github.com/wang9563/RemoteDesktopManage

這也是一年前寫的代碼了,公司里有很多雲主機要管理,同事們找不到合適的工具只好自己寫一個,代碼並不復雜,只是質量就不敢恭維了。起碼這一年來的進步還是有的,只是少了一些志同道合的朋友,這一年中的業余時間也沒干啥正事。僅僅是開篇就忘了如何去寫,索性羅列下自己的積累,想以補拙。

我一般習慣簡化代碼,但多數是盲目的簡化,也偶爾會反編譯查下自己是否簡化合理。

 

比如解決ToString()時,防止NullReferenceException我習慣用變量加上一個空字符串。

曾今的我必然是這么寫的:

public string GetResult(string str)
{
    return str ?? "";
}

當是有些情況下並不能入如常所願:

public string GetResult(object obj)
{
    //return obj ?? "";
    return obj == null ? "" : obj.ToString();
}

用三元運算符總是不爽,雖然自己寫了CodeSnippet,但依舊不甘!

所以我開始這么寫了:

public string GetResult(object obj)
{
    return obj + "";
}

編譯后是這樣的:

 

下面形參是string類型的還好理解,但是上面的 return (obj) 又是什么鬼?

只好轉成IL再看:

哦,string.Concat !!!

 

 哈哈,偉大的編譯器!

還有一次被某位未知大神的代碼驚艷到了:

后面加  的兩行是另一位加的,哼?加個整會拉低逼格?我也順道改了一下。

public string ConvertToChinese(decimal number)
{
    var format = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A").Replace("0B0A", "@");
    var simplify = Regex.Replace(format, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
    var result = Regex.Replace(simplify, ".", match => "負元空零壹貳叄肆伍陸柒捌玖空空空空空空整分角拾佰仟萬億兆京垓秭穰"[match.Value[0] - '-'].ToString());
    return result;
}

綜上所述,我是個不計代價來簡化代碼的人,運行/開發效率有時候確實慢了點,但是看着爽啊~

倒是寫出了那些無法再刪除的代碼,我也只好用 #region #endregion 包起來,並標注上1234,順便學會了快捷鍵:Ctrl + M , Ctrl + O 

 

第一篇博客,有點張口結舌,望看客見諒,我僅希望結識些志同道合的朋友。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM