编纂高质量代码改善C#程序的157只建议

by admin on 2018年10月22日

 第一片段 语言篇

第1节 基本语言元素 / 2
建议1:正确操作字符串 / 2
提议2:使用默认转型方式 / 6
建议3:区别对待强制转型以及as和is / 9
建议4:TryParse比Parse好 / 12
建议5:使用int?来确保值类型也可啊null / 15
建议6:区别readonly和const的运用办法 / 16
建议7:将0值作为枚举的默认值 / 19
建议8:避免给枚举类型的素供显式的值 / 20
建议9:习惯重载运算符 / 22
建议10:创建对象时得考虑是否实现比较器 / 23
建议11:区别对待==和Equals / 27
提议12:重写Equals时为如更写GetHashCode / 29
提议13:为项目输出格式化字符串 / 32
提议14:正确贯彻浅拷贝和深拷贝 / 36
建议15:使用dynamic来简化反射实现 / 40

第2章 集合和LINQ / 43
建议16:元素数量可变的情下未应允运用频繁组 / 43
提议17:多数情下下foreach进行巡回遍历 / 45
提议18:foreach不可知替代for / 51
建议19:使用还有效之目标以及集合初始化 / 53
提议20:使用泛型集合代替非泛型集合 / 54
建议21:选择对的集合 / 57
建议22:确保集合的线程安全 / 61
提议23:避免将List作为自定义集合类的基类 / 64
提议24:迭代器应该是光读的 / 67
提议25:谨慎集合属性的可写操作 / 68
提议26:使用匿名类型存储LINQ查询结果 / 70
建议27:在询问中采用Lambda表达式 / 73
建议28:理解延迟求值和积极向上求值之间的区分 / 75
建议29:区别LINQ查询中之IEnumerable和IQueryable / 78
提议30:使用LINQ取代集合中的比较器和迭代器 / 80
建议31:在LINQ查询中避免不必要的迭代 / 83

第3段 泛型、委托以及波 / 86
建议32:总是先考虑泛型 / 86
提议33:避免以泛型类型受到声明静态成员 / 88
建议34:为泛型参数设定约束 / 90
提议35:使用default为泛型类型变量指定初始值 / 92
建议36:使用FCL中之寄托声明 / 94
提议37:使用Lambda表达式代替方法以及匿名方式 / 96
提议38:小心闭包中的陷阱 / 99
提议39:了解委托的本色 / 103
建议40:使用event关键字为委托施加保护 / 106
建议41:实现规范的轩然大波模型 / 108
提议42:使用泛型参数兼容泛型接口的不可变性 / 109
建议43:让接口中的泛型参数支持协变 / 111
建议44:理解委托中之协变 / 112
提议45:为泛型类型参数指定逆变 / 114

第4段 资源管理以及序列化 / 116
建议46:显式释放资源要连续接口IDisposable / 116
建议47:即使提供了显式释放方法,也理应当终结器中提供隐式清理 / 119
提议48:Dispose方法应允许受数调用 / 120
提议49:在Dispose模式受到承诺领一个被保障之虚方法 / 121
提议50:在Dispose模式面临许诺分别对待托管资源同非托管资源 / 123
建议51:具有可放飞字段的门类或者具备本机资源的项目应该是可自由的 / 124
建议52:及时放出资源 / 125
建议53:必要常常许拿不再动用的对象引用赋值为null / 127
提议54:为无用字段标注不可序列化 / 131
建议55:利用定制特性减少而序列化的字段 / 136
提议56:使用持续ISerializable接口更活地控制序列化过程 / 137
建议57:实现ISerializable的子类型应负担父类的序列化 / 140

第5节 异常以及于定义格外 / 144
建议58:用废弃来好代替返回错误代码 / 144
建议59:不要以非适宜的场合下引发那个 / 147
建议60:重新引发那个时以Inner Exception / 150
建议61:避免以finally内做无效代码 / 151
建议62:避免嵌套异常 / 157
建议63:避免“吃掉”异常 / 160
提议64:为循环增加Tester-Doer模式而休是将try-catch置于循环内 / 161
建议65:总是处理不捕获的怪 / 162
建议66:正确捕获多线程中之死 / 166
建议67:慎用从定义格外 / 168
提议68:从System.Exception或外周边的基本好中派生异常 / 170
建议69:应采取finally避免资源泄漏 / 172
提议70:避免在调用栈较逊色之职记录非常 / 175

第6段 异步、多线程、任务与互 / 177
建议71:区分异步和多线程应用场景 / 177
提议72:在线程同步中利用信号量 / 180
提议73:避免锁定不得当的合对象 / 184
提议74:警惕线程的IsBackground / 188
建议75:警惕线程不会见就启动 / 189
建议76:警惕线程的预先级 / 191
提议77:正确停止线程 / 193
提议78:应避免线程数量过多 / 194
建议79:使用ThreadPool或BackgroundWorker代替Thread / 196
建议80:用Task代替ThreadPool / 198
提议81:使用Parallel简化同步状态下Task的动 / 202
建议82:Parallel简化但不同等于Task默认行为 / 204
建议83:小心Parallel中之陷阱 / 205
建议84:使用PLINQ / 208
建议85:Task中的怪处理 / 209
提议86:Parallel中的死处理 / 214
提议87:区分WPF和WinForm的线程模型 / 216
提议88:并行并无连续速度更快 / 220
提议89:在连行方法体中小心翼翼使用锁 / 222

才能够出人头地的丁于思考“何谓实在?”、“如何知道好知道什么?”、“人之本色是呀?”、“何谓好?”等等这些题材时常,往往能得出超出常人的真理,所以他们成为了红的哲学家,但是哲学家在生活中就怪周全呢?

老二片 架构篇

第7回 成员计划 / 226
提议90:不要吧抽象类提供公开的构造方法 / 226
提议91:可见字段应该重构为属性 / 226
提议92:谨慎用数组或集合作呢属性 / 227
建议93:构造方法应初始化主要性能和字段 / 228
提议94:区别对待override和new / 229
提议95:避免以构造方法中调用虚成员 / 235
提议96:成员应优先考虑公开基类型或接口 / 236
提议97:优先考虑用基类型或接口作为参数传递 / 237
提议98:用params减少重复参数 / 237
提议99:重写时未承诺运用子类参数 / 238
提议100:静态方法和实例方法没有分别 / 239
建议101:使用扩展方法,向现有项目“添加”方法 / 240

第8回 类型设计 / 243
提议102:区分接口和抽象类的应用场合 / 243
建议103:区分成及延续的采用场合 / 245
建议104:用多态代替条件语句 / 248
提议105:使用个人构造函数强化单例 / 251
提议106:为静态类添加静态构造函数 / 253
建议107:区分静态类和单例 / 255
提议108:将项目标识为sealed / 255
提议109:谨慎采用嵌套类 / 256
建议110:用类似来顶替enum / 257
建议111:避免双向耦合 / 260
建议112:将现实世界中之目标抽象为接近,将只是复用对象圈起来便是命名空间 /
262

第9章 安全性设计 / 264
提议113:声明变量前考虑最充分值 / 264
提议114:MD5不再安全 / 265
建议115:通过HASH来说明文件是否为篡改 / 268
建议116:避免用无对称算法加密文件 / 269
提议117:使用SSL确保通信中之数额安全 / 273
提议118:使用SecureString保存密钥等地下字符串 / 284
建议119:不要动自己之加密算法 / 289
建议120:为次集指定强称 / 289
建议121:为应用程序设定运行权限 / 291

齐你看了这些哲学家的特别,你绝对不见面这样想了。请圈——十非常名牌哲学家的十异常不行癖!

其三有些 编码规范与习惯

第10章 命名规范 / 296
提议122:以.为命名空间命名 / 296
提议123:程序集不必和命名空间及名 / 296
提议124:考虑以命名空间被利用复数 / 297
提议125:避免因此FCL的类名称命名自己之路 / / 297
提议126:用名词和名词组给项目命名 / 298
提议127:用形容词组给接口命名 / 299
提议128:考虑给叫生类的名字为基类名字作后缀 / 300
建议129:泛型类型参数要为T作为前缀 / 300
建议130:以复数命名枚举类型,以单数命名枚举元素 / 301
提议131:用PascalCasing命名公开元素 / 302
提议132:考虑就此类名作为性能名 / 302
建议133:用camelCasing命名私有字段和有些变量 / 303
建议134:有极地动前缀 / 304
建议135: 考虑使用肯定性的短语命名布尔属性 / 305
建议136:优先采取后缀表示已发项目的新本子 / 306
提议137:委托以及波类应丰富上级后缀 / 307
提议138:事件以及委托变量使用动词或形容词短语命名 / 308
提议139:事件处理器命名采用组合措施 / 309

第11段 代码整洁 / 311
建议140:使用默认的拜访修饰符 / 311
建议141:不知底该不欠用大括如泣如诉时,就因此 / 312
提议142:总是提供有含义之命名 / 314
提议143:方法抽象级别应于相同层次 / 315
建议144:一个措施就做同桩事 / 316
提议145:避免了长之章程和过长的类 / 317
提议146:只对外公布必要的操作 / 318
提议147:重构多单相关属性为一个类 / 319
提议148:不另行代码 / 320
提议149:使用表驱动法避免了长之if和switch分支 / 321
提议150:使用匿名方式、Lambda表达式代替方法 / 324
提议151:使用事件访问器替换公开的事件成员变量 / 325
提议152:最少,甚至是决不注释 / 326
提议153:若委来特别,则须要诠释 / 326

第12段 规范开发作为 / 327
建议154:不要过度设计,在快中体会重构的意 / 327
提议155:随生产代码一起提交单元测试代码 / 336
提议156:利用特色也应用程序提供多单版本 / 342
提议157:从写第一独界面开始,就开展自动化测试 / 344

 

1、叔本华(1788-1860)——爱留卷毛狗**

其三本华是朝气蓬勃及的流浪儿,他觉得自己非属另外地方,也无属任何人。甚至他的故土德国底格旦斯克对客吗从没多可怜意义;叔本华失去父亲后,发现自己对其他人基本无呀感情,甚至对客的妈也这样。关于这点,我们得以起他的悲观主义哲学看出。**

老三本华的悲观与人性引导他因而卷毛狗弥补自己欲的伴随。从生时代直到去世,叔本华养了众条狗。它们的讳如出一辙,都给阿特玛(印度宗教中指灵魂),昵称为同,叫巴茨。为什么这么古怪,所有的狗叫同一个名?叔本华原意是为赞扬它,因为“Atma”一乐章源于自印度,在梵语《薄伽梵歌》中,它的意思指自己或超验灵魂。这些卷毛狗或许寄托在叔本华的江湖情感及哲学理念。

2、萨特(1905-1980)——害怕海洋甲壳类生物

萨特是同一位多产作家,在政治上也老积极。他生平中呢众球星辩护过,比如卡尔·马克思、菲德尔·卡斯特罗与切·格拉瓦。这些在历史上举足轻重的人选都吃萨特的思辨所影响。

萨特对友好之知充满信心,但他起只短,即害怕甲壳类动物。这是盖,小时候萨特于同帧油画吓怕。画里生平等止爪子伸出海洋,试图抓人。从那以后,萨特对甲壳纲动物与生物近乎闻的品质变。他一度跟相爱很老之西蒙·波伏娃在相同修江河被玩时叫盖类海洋动物吓得深。他觉得黑的深水里生一致条巨大的章鱼,会跳出水面把他关进和里溺死。还有一样涂鸦,他服用迷幻药后,看见怪上虾一直跟着他,怎么都甩不丢掉。他这种恐惧还表现于外重重文学作品中,比如《阿尔托纳的裁判》、《艾罗斯特拉特》和《恶心》。

3、黑格尔(1770-1831)——最喜爱服装

黑格尔13秋经常母亲死,童年时刻几乎为文艺占据。成年晚,他的活着由神学院、写作与当贵族家庭之家庭教师组成。45春之前,黑格尔怀有美满的喜事、幸福之家庭,还有一样客对的做事——编辑一份读者喜爱的文学刊物《海德堡记》。

可是他呢生突出的怪癖。黑格尔专门钟情于睡衣和黑色贝雷帽。在家里做事经常,总会用睡衣穿在光天化日穿越底服外面,头上戴一暨超大的黑色贝雷帽。一糟糕,朋友爱德华·甘斯(德国记者)顺道来访,发现黑格尔穿在睡衣戴在贝雷帽,在书房山一样的相同积乱之舆论间慢悠悠地活动在,很享受这种着装带来的意趣。

4、伏尔泰(1694-1778)——喜欢咖啡

伏尔泰是启蒙时期大名鼎鼎哲学家之一,以精明与讥讽为世人称颂。但是,如果每天他并未喝下去那么多咖啡,也许他虽未会见那么敏感、幽默。无论在家或同朋友当巴黎底普罗科普咖啡馆,伏尔泰每天要喝20顶40杯子咖啡。他本着咖啡一往情深,甚至无医生“喝咖啡太多伤身”的侑。

他尚时不时高价购上国外的一流咖啡享用。1800年,迈丁格尔(德国师)的著作《德语语法》出版,书里引用了伏尔泰本人的原话:“我了解它应该是一致栽慢性毒药,我喝了85年,但还未曾那个为。”

5、尼采(1844-1900)——钟爱水果

24东经常,不谙世事的尼采被任命为巴塞尔大学古典历史哲学院院长。他著作等身,是受到景仰的哲学家。然而在当下一体成功之外,一连串医疗问题危害着他的毕生。

为了缓解慢性头痛、持续恶心、消化不良带来的痛苦,尼采尝试了挺多种药物与见仁见智的饭食。讽刺的凡,尼采偏好水果好可能是促成他消化不良的来头。

1884年,尼采在罗斯山待过一定长之一段时间。据那里的旅社老板说,尼采每天的食一成不变:早餐一块牛排,其余都是水果。他不但打店及地面意大利小贩那里进货水果,还收取朋友每天一篮一篮寄来之水果。据说,尼采好几糟当相同龙里就吃了将近3千克(6.5镑)水果,真可谓水果超级爱好者。

6、马克思(1818-1883)——强迫症

《共产党宣言》是同一管里程碑式的编著,马克思是那个合著者之一。尽管人们以为他是20世纪最富有影响力的理论家之一,马克思的个人在却混乱不堪。部分由在于经济窘迫,另一样片由在马克思的心性,他像非常已经有强迫症,高强度地劳作让他的强效率总是不可知坚持不懈,精疲力竭和疾病经常让他只能放下手里就做了大体上底干活。

可是,强迫式的法子太能证实他心灵之焦急。他依靠这种措施发出哲学著作需要的思维。工作经常,他会晤将一个想法写于张上,然后站起来,在桌旁频繁来往。等交想到什么,他会飞速坐下,写有想到的东西,然后重新是过程。毫无疑问,一整天的工作经常让马克思精疲力竭,而强强度的行事正是有强迫症的动因之一。

7、克尔恺郭尔(1813-1855)——家庭诅咒

克尔恺郭尔25东经常,他的老人家及五只弟兄姊妹都回老家了。之前,父亲针对他痛悔说,自己命中注定要看在他的小子们——包括克尔恺郭尔,先他老去;因为克尔恺郭尔的翁小时候咒骂过上帝是个小男孩,罪孽会报应于他儿子身上。克尔恺郭尔完全信赖父亲看女人当了厄运的布道,也信任自己会倒。

尽管他的大非常让1838年,那时克尔恺郭尔还存得优秀的,但他仍旧相信自己让诅咒了,并且上帝会充分早以他带走。这种想法激发克尔恺郭尔大量作,以便夭折前说得了所有,完成使命。他当爸爸非常后不久乎往勾勒的同一按开作序时说:“罪恶必定牵连全家,上帝必定惩罚全家;它终会消失,被上帝全能的手除去,就比如流逝的道。”

后来,克尔恺郭尔的畏惧真的成了具体。他1855年过世,年单纯42秋。

8、康德(1724-1804)——严苛的日程

“沉迷”对康德而言是同一种植生活方式。康德从小就体弱多病,善感忧郁,然而,他针对性常见日程安排有所鲜明且持久的僵硬。1783年,康德买下了同处于公馆,紧接着便认为必须抓好日程安排。他严格的日程自是起,直到他1804年寿终正寝。

外的时光很确切:5点前须清醒来,喝一样海茶,抽一开烟;然后准备课程、写作,7点始发教。11碰课程结束晚,他连续写,直到下午1点——他的午餐时间。午饭后,无论晴朗还是下雨,康德还如去柯尼斯堡市主导散步——传奇般的一个时。这项运动经年不更换,据说他的邻里可以就此修正钟表时间。他逛的不二法门后来吧被称“哲学家的路”。

9、加缪(1913-1960)——害怕夭折

加缪出名的黄色,但为走红地有沉思。他成长于特困家庭——家里没电没有和。苛刻的太婆是一家之主,用同一漫漫牛鞭管理家庭。尽管开始之存如此艰难,加缪还是成功地拿到了足以给他及高中的奖学金。可是17秋经常,他几乎死为肺结核,不得不休学一年。病好之后,他坚持转学校;进入阿尔及尔大学之前,他即便曾是一样号出版了创作之女作家了。

除此之外死里逃生的本事和过去之做到,加缪迷信自己会“夭折”。他既语一号女友,他感到“邪恶就飘洒在氛围里”。对他而言,这种恐怖被他沉迷于一切死亡。他不只随身携带一员情人写的绝命书,还于相同号美国女朋友被他依托《入殓师月刊》。

由内心充满悲观与恐惧,加缪决定一定要当十分前就写作。在外看来,即使获诺贝尔文学奖也是相同种凶兆——他看这奖是事业终结的印。他天天不感觉生存在的下压力,想快到位自己之长篇巨制,这种总想着物化之思想不断萦绕在他,折磨着他,直到他杀。1960年1月4日,加缪死让同场车祸,年单纯46岁。

10、笛卡尔(1596-1650)——钟情于“对眼”女郎

笛卡尔是当代哲学的大,他把物质、精神区分开来,而且留下了同样词至今仍给哲学家传唱的名言——“我思故我以”。与他保持通信的挚友来有权有势的女子,比如瑞典的克里斯蒂娜女皇和英格兰流亡之伊丽莎白公主。出现于外私生活着之女都大不一样,而且位置显赫,血统尊贵。笛卡尔一生未婚,只出一个亲骨肉——与妻子一样各类阿姨所特别的私生女。奇怪的是,直到成年,他一直钟情于外斜视的姑娘。用现在之讲话讲,就是发头斗鸡眼的阴。

笛卡尔在同等封闭为克里斯蒂娜女皇的信里解释:他反省自己怎么强调对眼姑娘,最终发现是坐他年少时沉迷的女孩发雷同双对眼睛。他说:“我容易上了一个年华以及我差不多的女孩……她的眼珠有一点点近乎中间;也就是说,我看在其那么双无神的双眼经常,在自大脑里就是留下了这样的印象,所以后来生的事就同这差不多了——在深丰富一段时间里,我同看见对眼的丫头就是怦然心动,不爱别的女孩尽管好她们,就是以他俩生其一毛病;而且我好并不知道这就是是问题所在。”

笛卡儿自己总说,初恋在他脑子中留的印记形成了这种无合常理的恋爱。准确地游说,他的下意识引起了这般的发。他甚至用随意意志和早于弗洛伊德的无形中理论以好自夫不理智的怪癖中解放出来,论于到其说,恐怕没有人较得过。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图