`
0428loveyu
  • 浏览: 30818 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

《编写高质量代码 改善C#程序的157个建议》 - 书摘精要

 
阅读更多
(P6) String.Format方法在内部使用StringBuilder进行字符串的格式化;

(P8)

System.Convert还支持将任何自定义类型转换为任何基元类型,只要自定义类型继承了IConvertible接口就可以;

System.BitConverter提供了基元类型与字节数组之间相互转换的方法;

(P11)

如果类型之间都上溯到了某个共同的基类,那么根据此基类进行的转型(即基类转型为子类本身)应该使用as;子类与子类之间的转型,则应该提供转换操作符,以便进行强制转型;

转型操作符实际上就是一个方法,类型的转换需要手工写代码完成;

(P12) as操作符有一个问题,即它不能操作基元类型。如果涉及基元类型的算法,就需要通过is转型前的类型来进行判断,以避免转型失败;

(P13) 引发异常这个过程会对性能造成损耗;

(P15) 语法T?是Nullable<T>的简写,两者可以相互转换;

(P16)

??最大的用处就是将可空类型的值赋值给对应的基元类型进行简化;

const和readonly的本质区别如下:
const是一个编译期常量,readonly是一个运行时常量;
const只能修饰基元类型、枚举类型或字符串类型,readonly没有限制;

(P20) 创建枚举的理由之一,就是为了代替使用实际的数值;

(P22) CLR支持在类型中,通过使用operator关键字定义静态成员函数来重载运算符;

(P25) 泛型出来后,就建议尽量不使用所有非泛型集合类;

(P28) 在FCL中,string的比较被重载为针对“类型的值”的比较,而不是针对“引用本身”的比较;

(P29)

对于引用类型,要定义“值相等性”,应该仅仅去重载Equals方法,同时让“==”表示“引用相等性”;

由于操作符“==”和“Equals”方法从语法实现上来说,都可以被重载为表示“值相等性”和“引用相等性”。所以,为了明确有一种方法肯定比较的是“引用相等性”,FCL中提供了Object.ReferenceEquals方法。该方法比较的是:两个示例是否是同一个示例。

(P31) GetHashCode方法应该基于那些只读的属性或特性生成HashCode;

(P32) Object的ToString方法会返回当前类型的类型名称;

(P38) 在浅拷贝过程中,应该将字符串看成是值类型;

(P42) 始终使用dynamic来简化反射实现;

(P44) 在元素数量可变的情况下不应使用数组;

(P49) foreach用于遍历一个继承了IEmuerable或IEmuerable<T>接口的集合元素;

(P55)

泛型使用一对<>括号将实际的类型括起来;

非泛型集合在System.Collections命名空间下,对应的泛型集合则在System.Collections.Generic命名空间下;

(P73) 任何LINQ查询都能通过调用扩展方法的方式来替代;

(P74) Lambda表达式是一个简单的委托,运算符“=>”左边代表的是方法的参数,右边的是方法体;

(P97) 委托也是一种类型,跟任何FCL中的引用类型没有差别;

(P98) Lambda表达式操作符“=>”的左侧是方法的参数,右侧是方法体,其本质是匿名方法;

(P103) 委托是方法指针;委托是一个类,当对其进行实例化的时候,要将引用方法作为它的构造方法的参数;

(P118) 如果类型需要显式释放资源,那么一定要继承IDispose接口;

(P135) 要让事件不能被序列化,需使用改进的特性语法[field:NonSerialized];

(P160) 直接 throw exception 而不是 throw 将会重置堆栈信息;

(P179) 异步模式借助于线程池,极大地节约了CPU的资源;

(P180) 锁定使用关键字lock和类型Monitor,两者没有实质区别,前者其实是后者的语法糖;

(P181) EventWaitHandle和Semaphore提供的都是单应用程序域内的线程同步功能,Mutex提供了跨应用程序域阻塞和解除阻塞线程的能力;

(P187) 类型的静态方法应当保证线程安全,非静态方法不需实现线程安全;

(P189) 用Thread创建的线程默认是前台线程,也就是IsBackground属性默认是false;

(P223) 锁其实就是让多线程变成单线程(因为同时只允许有一个线程访问的资源);

(P226)

抽象类可以有构造方法,即使没有为抽象类指定构造方法,编译器也会为我们生成一个默认的protected构造方法;

抽象类的构造方法不应该是public或internal的;

抽象类设计的本意只能让子类继承,而不是用于生成实例对象;

抽象类只需对子类可见就行;

(P228)

类型的属性应该在构造方法调用完毕之前完成初始化工作;

如果字段没有在初始化器中设置初始值,那么它就应该在构造方法中初始化;

(P229)

初始化器属于编译器的语法糖,它在经编译后,在构造方法的最开始处执行;

可以将初始化器理解为构造方法的一部分;

(P229)

如果子类中的方法前面带有new关键字,则该方法被定义为独立于基类的方法;

如果子类中的方法前面带有override关键字,则子类的对象将调用该方法,而不是调用基类方法;

(P231)

子类override父类的方法,即使子类转型为父类,调用的还是子类的方法;

子类new了父类的方法,故子类方法和基类方法完全没有关系了,只要子类被转型为父类,则针对子类调用的都是父类方法;

(P239) 静态方法在加载时机和内存使用上与实例方法完全一致;

(P241)

扩展方法必须在静态类中,且该类不能是一个嵌套类;
扩展方法必须是静态的;
扩展方法的第一个参数必须是要扩展的类型,而且必须加上了this关键字;
不支持扩展属性、事件;

(P245) 抽象类解决的是“Is a”,接口解决的是“Can do”;

(P253) 单例应该同时是一个sealed类型;

(P255) 对静态引用类型的初始化应该使用静态构造方法。但是,如果一个静态类只有值类型的变量,则可以放宽这种限制;

(P257) 如果必须出现一个嵌套类,应该将其实现为private;

(P301) 只要是泛型,就应该以T作为前缀命名;

(P311)

类型成员的修饰符默认是private;

类或接口的默认修饰符为internal;

(P339) 架构模式是为了让单元测试变得更方便;
分享到:
评论

相关推荐

    改善C#的157个建议编写高质量代码.zip

    这份资料《改善C#的157个建议》提供了一系列实用的技巧和最佳实践,旨在帮助开发者提升代码的可读性、性能和维护性。以下是一些核心知识点的概述: 1. **命名规范**:遵循一致的命名规则是提高代码可读性的基础。如...

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

    以上就是针对"C#编写高质量代码改善C#程序的157个建议"的详细解析,涵盖多个方面,旨在帮助开发者构建出更稳定、高效、易于维护的C#应用程序。通过实践这些建议,不仅可以提高个人编程技能,也能提升整个项目团队的...

    编写高质量代码:改善C#程序的150个建议完整版

    《编写高质量代码:改善C#程序的150个建议》是一本专注于提升C#编程实践的书籍,旨在帮助开发者优化代码,提升软件项目的整体质量和可维护性。这本书的建议覆盖了从基本语法到高级设计模式,从代码组织到调试技巧的...

    提高代码质量的157个建议

    在编程领域,代码质量至关重要,它直接影响到软件的可维护性、可扩展性和性能。针对C#编程语言,以下是从“提高代码质量的157个建议...阅读“编写高质量代码改善C#程序的157个建议”PDF,将提供更为详细和全面的指导。

    编写高质量代码之C#、C++_nodrm.azw3

    《编写高质量代码:改善c#程序的157个建议》是c#程序员进阶修炼的必读之作,包含的全部都是c#编码的最佳实践,从语言本身、程序的设计和架构、编码规范和编程习惯等三大方面对c#程序员遇到的经典问题给出了经验性的...

    编写高质量代码改善c程序的157个建议911910 (1).epub

    本书适合那些有一定C#基础,并希望在技术上得到大幅提升的程序员。 本书并没有讲述C#中的...书中的大多数建议实战性很强,要完全理解其中的奥妙,首先应该动手写一写示例程序,或许在调试程序的过程中就会得到启发。

    编写高质量代码:改善C#程序的157个建议

    《编写高质量代码:改善C#程序的157个建议》是一本专注于提升C#编程实践的书籍。这本书深入探讨了在开发过程中如何通过优化代码结构、提高代码可读性、减少潜在错误以及提升性能来改善C#程序的质量。下面我们将依据...

    改善C#的157个建议编写高质量代码_源代码合集

    改善C#的157个建议编写高质量代码_源代码合集,这些实例均采用4.0框架,请运行使用Release模式;部分TIP由于简单未给出源码;这157个建议的源码涉及到语言篇、集合和LINQ、泛型、委托和事件、资源管理和序列化、异常...

    改善C#程序的157个建议.pdf

    改善C#程序的157个建议.pdf

    编写高质量代码:改善C#程序的157个建议.pdf

    由于我无法直接获取文件内容,因此我将基于您提供的标题、描述和标签来生成关于如何编写高质量C#...在学习和应用这些知识点的过程中,可以参考《编写高质量代码:改善C#程序的157个建议》这本书来获得更多细节和实例。

    c#代码--编写高质量c#程序

    c#代码--编写高质量c#程序c#代码 --编写高质量c#程序

    编写高质量代码:改善C#程序的157个建议(书+源码)

    《编写高质量代码:改善C#程序的157个建议》是一本专注于提升C#编程实践的书籍,它为开发者提供了丰富的指导,旨在帮助他们写出更高效、更易读、更易于维护的代码。这本书结合了理论与实践,涵盖了从基本编程习惯到...

    《编写高质量代码:改善c#程序的157个建议》第1章和第6章

    本书是一本关于如何编写高质量C#代码的工具书,列举的问题非常典型,给出的建议也非常实用,其中的每一条建议都有可能在我们编写下一行代码的时候用到。你可以将此书搁置在案头,以便有需要的时候随时查阅。

    改善C#程序的157个建议

    通过阅读《编写高质量代码:改善C#程序的157个建议》,开发者不仅可以提升个人编程技能,还能学习到如何写出更加健壮、高效且易于维护的C#代码,这对于团队协作和项目长期发展至关重要。书中的实例和实践建议将帮助...

    编写高质量代码:改善C程序代码的125个建议

    马伟的《编写高质量代码(改善C程序代码的 125个建议)》是华章“编写高质量代码”系列的第7本,之前已经出版C++、C#、Java、Pvthon、 ObjectiVe-c、Javascript相关*作。在通往“C语 言技术殿堂”的路上,本书将为你...

    编写高质量C#程序的建议

    以下是一些有助于改善C#程序的建议,根据提供的文件名“编写高质量代码改善C#程序的157个建议”,我们将探讨其中的一些关键点: 1. **遵循编码规范**:保持代码一致性至关重要。使用命名约定,如PascalCase命名类,...

    《编写高质量的CSharp程序的157个建议》- 读书笔记

    这是本人在阅读《编写高质量的CSharp程序的157个建议》所作的一些笔记,包含了本书的基本知识要点,后面关于一些编程规范的内容就没有也没必要记录。有些要点是按我自己的理解写的(如委托的实质问题),只是便于...

Global site tag (gtag.js) - Google Analytics