最近刚开始进行查看老代码也发现太多的问题,感觉无从下手,有些东西当时都是只是实现了功能而已,由于自己经历和经验都还很有限。所以打算来学习一下,无独有偶发现了这本书,哈哈,自己感觉也很不错,所以想在此做下笔记。
为什么要来看这本书
写此书的作者在书中也有明确的记录。作者一直在思考一个问题:就是到底什么样的编程书籍能够帮助入门者快速进阶?所谓“入门者”指的是已经可以使用一门语言来编写程序,但是不太明白如何编写高质量代码的人。作者回忆自己开发生涯的入门阶段发现,那时候常常被以下三类问题所困扰。
第一类来自于语言本身。
1、如何格式化字符串才是最高效的?
2、基本类型间或其他CLR类型间的转换怎样才算是最高效的?
3、for和foreach有什么区别,何时该用for,何时又该用foreach?
4、什么是Dispose模式,为什么要释放资源,如何释放资源?
5、多线程应该选择何种方式来开启和结束,各线程之间为什么要同步,如何同步,如何锁定资源?
第二类来自于设计框架,如果你对编程充满热爱,相信你的大脑很快就会充满以下这些问题:
1、使用单例模式还是静态类,为什么有了静态类还需要单例模式?
2、该使用静态方法还是实例方法,它们的本质区别是什么?
3、如何使用异常才是最正确的,什么时候抛出异常,什么时候“吃掉”异常,为什么需要自定义异常?
4、如何避免过多的条件判断分支?
5、如何保证程序的数据安全和通信安全?
第三类问题最常见,可能来自于编码习惯和编程思想。
1、一个文件只包含一个类比较好,还是一个文件可以包含多个类?
2、如何命名才是专业级别的?
3、应该使用抽象类还是接口?
4、到底什么才是真正的面向对象编码,我这样编程够面向对象吗?
5、什么是单元测试,如何编写单元测试?
如果你也曾问过自己类似的问题,说明你已经为专业程序员做好了准备了。当然如果你还是苦于找不到答案的话,或许你也可以来阅读下此书,相信你会收获颇丰的。自己大致看了一下此书,感觉作者还是花了很多心思的,很多知识讲解的还是都很不错的,在此也只是希望更多的人受益,当然不喜勿喷额。
第一部分 语言篇
1、第一章 基本语言要素[1-3]
建议1、正确使用字符串
建议2、使用默认转型方法
建议3、区别对待强制转型与as和is
建议4、TryParse比Parse好[4-9]
建议5、使用int?来确保值类型也可以为null
建议6、区别readonly和const的使用方法
建议7、将0值作为枚举的默认值
建议8、避免给枚举类型的元素提供显式的值
建议9、习惯重载运算符
建议10、创建对象时需要考虑是否实现比较器[10-12]
建议11、区别对待==和Equals
建议12、重写Equals时也要重写GetHashCode
建议13、为类型输出格式化字符串[13-15]
建议14、正确实现浅拷贝和深拷贝
建议15、使用dynamic来简化发射实现
2、第二章 集合和LINQ[16-19]
建议16、元素数量可变的情况下不应使用数组
建议17、在多数情况下使用foreach进行循环遍历
建议18、foreach不能代替for
建议19、使用更有效的对象和集合初始化
3、第三章 泛型、委托和事件
4、第四章 资源管理和序列化
5、第五章 异常和自定义异常
6、第六章 异步、多线程、任务和并行
第二部分 架构篇
7、第七章 成员设计
8、第八章 类型设计
9、第九章 安全性设计
第三部分 编码规范及习惯
10、第十章 命名规范
11、第十一章 代码整洁
12、第十二章 规范开发行为
总结
从书的开头看起到目录,这本书真真的深深的吸引了我,好像就如作者所说,正中下怀一样。作者所想的那三类问题,有些问题我曾经的确也考虑过,要去找为什么,但是后来放弃了,或者遗忘了,不过今天终于又让我看到了这似曾相识的感觉,这次我要将这些问题一一的剖解,希望自己能多多的学习书中的知识和奥妙吧。
看了上面的,也许很多人和我有同样的想法,要好好来看看这本书,那么我希望大家可以将看书后的一些想法或者问题,发布出来让大家一起来探讨一下,让我等菜鸟也可以多多的见识见识。暂时我也在考虑要不要入手一本,这不刚刚在网上下载的PDF。由于此书的章节并没有关联性,也可以是你需要那些知识,直接看那些章节就可以了。所以自己打算在工作中遇到问题可以直接对症下药了。