不计代价的简化代码

开博的第一篇总要有些诚意,分享一个自己写的远程桌面工具: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 

 

第一篇博客,有点张口结舌,望看客见谅,我仅希望结识些志同道合的朋友。

posted @ 2015-12-08 09:07  维思德软件  阅读(1907)  评论(1编辑  收藏  举报