前言html
因为最近工做重心的转移,原来和几个同事一块儿开发的项目也已经上线了,而新项目就是在现有的项目基础上进行优化延伸扩展。打个比方,如今已经上线的项目行政案件的Web管理网站(代码还没那么多相比较即将要作的刑事案件吧),而新项目是刑事案件的Web管理网站,以后行政和刑事这两个网站是要合并的。前段时间也和同事以及上司的讨论结果就是新建一套项目,考虑将原有系统各类组件进行从新封装、优化、提高扩展,而后先开发刑事案件的网站,待刑事案件开发完毕将原有项目按照刑事案件的思路从新整合。程序员
最近刚开始进行查看老代码也发现太多的问题,感受无从下手,有些东西当时都是只是实现了功能而已,因为本身经历和经验都还颇有限。因此打算来学习一下,无独有偶发现了这本书,哈哈,本身感受也很不错,因此想在此作下笔记。编程
为何要来看这本书数组
写此书的做者在书中也有明确的记录。做者一直在思考一个问题:就是到底什么样的编程书籍可以帮助入门者快速进阶?所谓“入门者”指的是已经可使用一门语言来编写程序,可是不太明白如何编写高质量代码的人。做者回忆本身开发生涯的入门阶段发现,那时候经常被如下三类问题所困扰。安全
第一类来自于语言自己。多线程
一、如何格式化字符串才是最高效的?闭包
二、基本类型间或其余CLR类型间的转换怎样才算是最高效的?架构
三、for和foreach有什么区别,什么时候该用for,什么时候又该用foreach?框架
四、什么是Dispose模式,为何要释放资源,如何释放资源?异步
五、多线程应该选择何种方式来开启和结束,各线程之间为何要同步,如何同步,如何锁定资源?
第二类来自于设计框架,若是你对编程充满热爱,相信你的大脑很快就会充满如下这些问题:
一、使用单例模式仍是静态类,为何有了静态类还须要单例模式?
二、该使用静态方法仍是实例方法,它们的本质区别是什么?
三、如何使用异常才是最正确的,何时抛出异常,何时“吃掉”异常,为何须要自定义异常?
四、如何避免过多的条件判断分支?
五、如何保证程序的数据安全和通讯安全?
第三类问题最多见,可能来自于编码习惯和编程思想。
一、一个文件只包含一个类比较好,仍是一个文件能够包含多个类?
二、如何命名才是专业级别的?
三、应该使用抽象类仍是接口?
四、到底什么才是真正的面向对象编码,我这样编程够面向对象吗?
五、什么是单元测试,如何编写单元测试?
若是你也曾问过本身相似的问题,说明你已经为专业程序员作好了准备了。固然若是你仍是苦于找不到答案的话,或许你也能够来阅读下此书,相信你会收获颇丰的。本身大体看了一下此书,感受做者仍是花了不少心思的,不少知识讲解的仍是都很不错的,在此也只是但愿更多的人受益,固然不喜勿喷额。
本书大纲目录
第一部分 语言篇
一、第一章 基本语言要素
http://www.cnblogs.com/aehyok/p/3624478.html[1-3]
建议一、正确使用字符串
建议二、使用默认转型方法
建议三、区别对待强制转型与as和is
http://www.cnblogs.com/aehyok/p/3629760.html[4-9]
建议四、TryParse比Parse好
建议五、使用int?来确保值类型也能够为null
建议六、区别readonly和const的使用方法
建议七、将0值做为枚举的默认值
建议八、避免给枚举类型的元素提供显式的值
建议九、习惯重载运算符
http://www.cnblogs.com/aehyok/p/3631483.html[10-12]
建议十、建立对象时须要考虑是否实现比较器
建议十一、区别对待==和Equals
建议十二、重写Equals时也要重写GetHashCode
http://www.cnblogs.com/aehyok/p/3634984.html[13-15]
建议1三、为类型输出格式化字符串
建议1四、正确实现浅拷贝和深拷贝
建议1五、使用dynamic来简化发射实现
二、第二章 集合和LINQ
http://www.cnblogs.com/aehyok/p/3637504.html[16-19]
建议1六、元素数量可变的状况下不该使用数组
建议1七、在多数状况下使用foreach进行循环遍历
建议1八、foreach不能代替for
建议1九、使用更有效的对象和集合初始化
http://www.cnblogs.com/aehyok/p/3641896.html[20-22]
建议20、使用泛型集合来替代非泛型集合
建议2一、选择正确的集合
建议2二、确保集合的线性安全
http://www.cnblogs.com/aehyok/p/3657862.html [23-25]
建议2三、避免将List<T>做为自定义集合类的基类
建议2四、迭代器应该是只读的
建议2五、谨慎集合属性的可写操做
http://www.cnblogs.com/aehyok/p/3674866.html [26-28]
建议2六、使用匿名类型储存LINQ查询结果
建议2七、在查询中使用Lambda表达式
建议2八、理解延迟求值和主动求值之间的区别
http://www.cnblogs.com/aehyok/p/3712725.html[29-31]
建议2九、区别LINQ查询中的IEnumerable<T>和IQueryable<T>
建议30、使用LINQ取代集合中的比较器和迭代器
建议3一、在LINQ查询中避免没必要要的迭代
三、第三章 泛型、委托和事件
http://www.cnblogs.com/aehyok/p/3719825.html [32-34]
建议3二、老是优先考虑泛型
建议3三、避免在泛型类型中声明静态成员
建议3四、为泛型参数设定约束
http://www.cnblogs.com/aehyok/p/3725313.html[35-37]
建议3五、使用default为泛型类型指定初始值
建议3六、使用FCL中的委托声明
建议3七、使用lambda表达式代替方法和匿名方法
http://www.cnblogs.com/aehyok/p/3730417.html[38-41]
建议3八、当心闭包中的陷阱
建议3九、了解委托的实质
建议40、使用event关键字对委托施加保护
建议4一、实现标准的事件模型
http://www.cnblogs.com/aehyok/p/3737426.html[42-45]
建议4二、使用泛型参数兼容泛型接口的不可变性
建议4三、让接口中的泛型参数支持协变
建议4四、理解委托中的协变
建议4五、为泛型类型参数指定协变
四、第四章 资源管理和序列化
五、第五章 异常和自定义异常
http://www.cnblogs.com/aehyok/p/3750122.html[58-60]
建议5八、用抛出异常代替返回错误代码
建议5九、不要在不恰当的场合下引起异常
建议60、从新引起异常时使用inner Exception
http://www.cnblogs.com/aehyok/p/3761583.html[61-64]
建议6一、避免在finally内撰写无效代码
建议6二、避免嵌套异常
建议6三、避免“吃掉”异常
建议6四、为循环增长Tester-Doer模式而不是将try-catch置于循环内
六、第六章 异步、多线程、任务和并行
第二部分 架构篇
七、第七章 成员设计
八、第八章 类型设计
九、第九章 安全性设计
第三部分 编码规范及习惯
十、第十章 命名规范
十一、第十一章 代码整洁
十二、第十二章 规范开发行为
总结
从书的开头看起到目录,这本书真真的深深的吸引了我,好像就如做者所说,正中下怀同样。做者所想的那三类问题,有些问题我曾经的确也考虑过,要去找为何,可是后来放弃了,或者遗忘了,不过今天终于又让我看到了这似曾相识的感受,此次我要将这些问题一一的剖解,但愿本身能多多的学习书中的知识和奥妙吧。
看了上面的,也许不少人和我有一样的想法,要好好来看看这本书,那么我但愿你们能够将看书后的一些想法或者问题,发布出来让你们一块儿来探讨一下,让我等菜鸟也能够多多的见识见识。暂时我也在考虑要不要入手一本,这不刚刚在网上下载的PDF。因为此书的章节并无关联性,也能够是你须要那些知识,直接看那些章节就能够了。因此本身打算在工做中遇到问题能够直接对症下药了。