zoukankan      html  css  js  c++  java
  • 编写高质量代码改善C#程序的157个建议——导航开篇

    为什么要来看这本书

       写此书的作者在书中也有明确的记录。作者一直在思考一个问题:就是到底什么样的编程书籍能够帮助入门者快速进阶?所谓“入门者”指的是已经可以使用一门语言来编写程序,但是不太明白如何编写高质量代码的人。作者回忆自己开发生涯的入门阶段发现,那时候常常被以下三类问题所困扰。

      第一类来自于语言本身。

      1、如何格式化字符串才是最高效的?

      2、基本类型间或其他CLR类型间的转换怎样才算是最高效的?

      3、for和foreach有什么区别,何时该用for,何时又该用foreach?

      4、什么是Dispose模式,为什么要释放资源,如何释放资源?

      5、多线程应该选择何种方式来开启和结束,各线程之间为什么要同步,如何同步,如何锁定资源?

      第二类来自于设计框架如果你对编程充满热爱,相信你的大脑很快就会充满以下这些问题

      1、使用单例模式还是静态类,为什么有了静态类还需要单例模式?

      2、该使用静态方法还是实例方法,它们的本质区别是什么?

      3、如何使用异常才是最正确的,什么时候抛出异常,什么时候“吃掉”异常,为什么需要自定义异常?

      4、如何避免过多的条件判断分支?

      5、如何保证程序的数据安全和通信安全?

      第三类问题最常见,可能来自于编码习惯和编程思想。

      1、一个文件只包含一个类比较好,还是一个文件可以包含多个类?

      2、如何命名才是专业级别的?

      3、应该使用抽象类还是接口?

      4、到底什么才是真正的面向对象编码,我这样编程够面向对象吗?

      5、什么是单元测试,如何编写单元测试?

    如果你也曾问过自己类似的问题,说明你已经为专业程序员做好了准备了。当然如果你还是苦于找不到答案的话,或许你也可以来阅读下此书,相信你会收获颇丰的。自己大致看了一下此书,感觉作者还是花了很多心思的,很多知识讲解的还是都很不错的,在此也只是希望更多的人受益,当然不喜勿喷额。

    本书大纲目录

     第一部分 语言篇

      1、第一章 基本语言要素

    http://www.cnblogs.com/aehyok/p/3624478.html[1-3]

      建议1、正确使用字符串

      建议2、使用默认转型方法

      建议3、区别对待强制转型与as和is

    http://www.cnblogs.com/aehyok/p/3629760.html[4-9]

      建议4、TryParse比Parse好

      建议5、使用int?来确保值类型也可以为null

      建议6、区别readonly和const的使用方法

      建议7、将0值作为枚举的默认值

      建议8、避免给枚举类型的元素提供显式的值

      建议9、习惯重载运算符

    http://www.cnblogs.com/aehyok/p/3631483.html[10-12]

      建议10、创建对象时需要考虑是否实现比较器

      建议11、区别对待==和Equals

      建议12、重写Equals时也要重写GetHashCode

    http://www.cnblogs.com/aehyok/p/3634984.html[13-15]

      建议13、为类型输出格式化字符串

      建议14、正确实现浅拷贝和深拷贝

      建议15、使用dynamic来简化发射实现

      2、第二章 集合和LINQ

    http://www.cnblogs.com/aehyok/p/3637504.html[16-19]

      建议16、元素数量可变的情况下不应使用数组

      建议17、在多数情况下使用foreach进行循环遍历

      建议18、foreach不能代替for

      建议19、使用更有效的对象和集合初始化

    http://www.cnblogs.com/aehyok/p/3641896.html[20-22]

      建议20、使用泛型集合来替代非泛型集合

      建议21、选择正确的集合

      建议22、确保集合的线性安全

    http://www.cnblogs.com/aehyok/p/3657862.html [23-25]

      建议23、避免将List<T>作为自定义集合类的基类 

      建议24、迭代器应该是只读的

      建议25、谨慎集合属性的可写操作

    http://www.cnblogs.com/aehyok/p/3674866.html [26-28]

      建议26、使用匿名类型储存LINQ查询结果

      建议27、在查询中使用Lambda表达式

      建议28、理解延迟求值和主动求值之间的区别

    http://www.cnblogs.com/aehyok/p/3712725.html[29-31]

      建议29、区别LINQ查询中的IEnumerable<T>和IQueryable<T>

      建议30、使用LINQ取代集合中的比较器和迭代器

      建议31、在LINQ查询中避免不必要的迭代

      3、第三章 泛型、委托和事件

    http://www.cnblogs.com/aehyok/p/3719825.html [32-34]

      建议32、总是优先考虑泛型

      建议33、避免在泛型类型中声明静态成员

      建议34、为泛型参数设定约束

    http://www.cnblogs.com/aehyok/p/3725313.html[35-37]

      建议35、使用default为泛型类型指定初始值

      建议36、使用FCL中的委托声明

      建议37、使用lambda表达式代替方法和匿名方法

    http://www.cnblogs.com/aehyok/p/3730417.html[38-41]

      建议38、小心闭包中的陷阱

      建议39、了解委托的实质

      建议40、使用event关键字对委托施加保护

      建议41、实现标准的事件模型

    http://www.cnblogs.com/aehyok/p/3737426.html[42-45]

      建议42、使用泛型参数兼容泛型接口的不可变性

      建议43、让接口中的泛型参数支持协变

      建议44、理解委托中的协变

      建议45、为泛型类型参数指定协变

      4、第四章 资源管理和序列化

      5、第五章 异常和自定义异常

    http://www.cnblogs.com/aehyok/p/3750122.html[58-60]

      建议58、用抛出异常代替返回错误代码

      建议59、不要在不恰当的场合下引发异常

      建议60、重新引发异常时使用inner Exception

    http://www.cnblogs.com/aehyok/p/3761583.html[61-64]

      建议61、避免在finally内撰写无效代码

      建议62、避免嵌套异常

      建议63、避免“吃掉”异常

      建议64、为循环增加Tester-Doer模式而不是将try-catch置于循环内

      6、第六章 异步、多线程、任务和并行

    第二部分  架构篇

      7、第七章 成员设计

      8、第八章 类型设计

      9、第九章 安全性设计

    第三部分 编码规范及习惯

      10、第十章 命名规范

      11、第十一章 代码整洁

      12、第十二章 规范开发行为

  • 相关阅读:
    Mongo DB intro
    java class 初始化
    Java Multi-Thread
    Java Exception
    PHP基础2
    Java STL
    javascript getElemet 获取元素 (转)
    javascript 异常处理
    javascript 输出
    LinkButton跳转页面及传递参数(转载)
  • 原文地址:https://www.cnblogs.com/asdyzh/p/9824580.html
Copyright © 2011-2022 走看看