Effective C# 读书笔记 第一章
2008-07-01 12:07
260 查看
原则一:
尽可能的使用属性(property),而不是数据成员(field)。
Always use properties intead of accessible data member.
原因:
1.Net对属性的支持远远大于对成员的支持,你可以对属性进行数据绑定,设计时说明等很多数据成员不被支持的内容。
2.数据安全性检测;在对数据检测时,如果发现数据不满足条件,最好以抛出异常的形式来解决,千万不要设置默认值,这是很危险的事情
3.线程同步对实例的属性可以进行线程同步,而与访问者无关
4.属性可以是抽象的,而数据成员不能是抽象的,这为我们设计出兼容性更强,扩展性更强的类提供了好的解决方案。
5.属性可以以接口的形式表现。接口里不能定义数据成员,这在一定程度上限制我们的设计。请用属性来解决这个问题吧。
6.基于属性的索引。索引器是C#语法的特殊内容,而索引器正是通过属性来完成的,如果你想为你的类添加一个索引器,除了用属性你还能用什么呢?
7.最后一点,也是比较重要的。不要直接把公共成员转化成属性。
using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace TestProperty
6
102
103
104
105
106
107
原则二:
为你的常量选择readonly而不是const
readonly称为运行时常量
const称为编译时常量
比较:
1.编译时常量只能是基本类型 枚举或者是字符串,如果是引用类型则其值必须设为null。 对于运行时常量无此限制。
2.编译时常量在定义是赋值。 运行时常量在定义时赋值,或者在构造函数里赋值。
3.编译时常量自身有静态的属性,所以不能再用static进行修饰。 运行时常量可以用static修饰,也可以不用static。
4.编译时常量在编译时被替换到code里了,运行时常量是在运行时去读取常量的值。所以如果改了const,那么所有的code都要重新编译。
5.编译时常量性能更好一些。
尽可能的使用属性(property),而不是数据成员(field)。
Always use properties intead of accessible data member.
原因:
1.Net对属性的支持远远大于对成员的支持,你可以对属性进行数据绑定,设计时说明等很多数据成员不被支持的内容。
2.数据安全性检测;在对数据检测时,如果发现数据不满足条件,最好以抛出异常的形式来解决,千万不要设置默认值,这是很危险的事情
3.线程同步对实例的属性可以进行线程同步,而与访问者无关
4.属性可以是抽象的,而数据成员不能是抽象的,这为我们设计出兼容性更强,扩展性更强的类提供了好的解决方案。
5.属性可以以接口的形式表现。接口里不能定义数据成员,这在一定程度上限制我们的设计。请用属性来解决这个问题吧。
6.基于属性的索引。索引器是C#语法的特殊内容,而索引器正是通过属性来完成的,如果你想为你的类添加一个索引器,除了用属性你还能用什么呢?
7.最后一点,也是比较重要的。不要直接把公共成员转化成属性。
using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace TestProperty
6
102
103
104
105
106
107
原则二:
为你的常量选择readonly而不是const
readonly称为运行时常量
const称为编译时常量
比较:
1.编译时常量只能是基本类型 枚举或者是字符串,如果是引用类型则其值必须设为null。 对于运行时常量无此限制。
2.编译时常量在定义是赋值。 运行时常量在定义时赋值,或者在构造函数里赋值。
3.编译时常量自身有静态的属性,所以不能再用static进行修饰。 运行时常量可以用static修饰,也可以不用static。
4.编译时常量在编译时被替换到code里了,运行时常量是在运行时去读取常量的值。所以如果改了const,那么所有的code都要重新编译。
5.编译时常量性能更好一些。
相关文章推荐
- 关于Java变量、数组、对象的声明、初始化与访问方式-----《疯狂Java突破程序员基本功的16课》读书笔记----第一章
- 第一章 读书笔记
- 读书笔记 第一章到第三章
- 《怪诞行为学2》读书笔记,第一章 金钱的诱惑:为什么巨额奖金带不来高业绩?
- 《R语言实战》读书笔记--第一章 R语言介绍
- 《精通Visual C++ 实效编程280例》读书笔记(第一章 窗口)
- effective STL 读书笔记——第一章:容器
- 《系统分析师UML实务手册》读书笔记--第一章
- 第一章:重构,第一个案例(读书笔记系列2)
- 《产品经理手册》读书笔记--第一章《产品经理的战略规划框架》1.3
- 【笔记】Java核心技术 卷1 基础知识 第一章 读书笔记
- 高性能MySQL(第二版)第一章 基础篇——读书笔记
- 【读书笔记】Linux高性能服务器编程(第一篇 第一章 1.2-1.6)
- 《Effective C#》读书笔记——条目5:为类型提供ToString()方法<C#语言习惯>
- 《Effective C#》读书笔记——条目8:推荐使用查询语法而不是循环<C#语言习惯>
- 普林斯顿微积分读本——第一章 函数、图像和直线(读书笔记)
- 《Effective C#》读书笔记——条目13:正确地初始化静态成员变量<.NET资源管理>
- 《MongoDB权威指南》读书笔记 第一章 简介
- 《权力》读书笔记,第一章 业绩决定你的权力地位吗
- 《Thinking in JAVA》读书笔记_第一章_1.2~1.3