原则4:使用条件特性(conditional attribute)代替 #if
[Conditional("DEBUG")] private static void SomeMethod(string param) {}
?
? ? ? ?这里会有一个很微妙的错误。 SomeMethod() 只有在 DEBUG 符号被定义了才会被调用。而且 names.Dequeue() 也是一样的。因为结果不是必须的,所以方法没有调用。任何条件特性的方法不应该有任何参数。使用调用方法来产生参数会有副作用。如果条件不为 ture 这些方法不会被调用。
?
? ? ? ?条件特性比 #if/#endif 产生了更高效的 IL 代码。还有一个好处就是只能使用在函数级别上,这迫使你要更好的组织你的条件代码。编译器使用条件特性帮助我们避免了使用 #if/#endif 的常见错误。条件特性比预处理更能让你你的条件代码分离的更清晰。
?
?
小结:
? ? ? ?更新晚了,昨天晚上写了一半,现在弄完。昨天家里发生了点事情,心里一直不安,感觉挺无奈的。只有对自己说,我要努力,我要顶住。原则4,相对于前面3个原则有点偏门,而且两点少了点,说服力不够。
?
?
? ? ? 欢迎各种不爽,各种喷,写这个纯属个人爱好,秉持”分享“之德!
? ? ? 有关本书的其他章节翻译请点击查看,转载请注明出处,尊重原创!
?
如果您对D.S.Qiu有任何建议或意见可以在文章后面评论,或者发邮件(gd.s.qiu@gmail.com)交流,您的鼓励和支持是我前进的动力,希望能有更多更好的分享。
? ? ? ? 转载请在文首注明出处:http://dsqiu.iteye.com/blog/1979093
更多精彩请关注D.S.Qiu的博客和微博(ID:静水逐风)
?