编写高质量代码改善C#程序的157个建议——建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间
2015-08-21 18:32
676 查看
建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间
在我们身边的世界中,对象是什么?对象就是事物,俗称“东西”。那么,什么东西算得上是一个对象呢?对象有属性、有行为。以动物为例,比如猫(Cat)。Cat可以有Name,这就是属性;Cat有一个恶习ScratchSofa(挠沙发),这就是行为。我们把这些属性和行为结合起来,就称为一个类型:
当然,类型只是规范了某类对象,它提炼出了接口、规范了协议,而真正的对象是要生产出来的。比如Tom猫,必须生产(即new)出来,才会在现实世界(可以理解为CLR运行时)中真正存在(即分配内存)。代码如下:
软件中的任何“东西”都可以用这个思路去理解。
当我们编码时,将CLR当成一个现实世界,并时刻考虑将某些具有共同属性和行为的对象抽象成一个个类型,这时我们就迈出了面向对象的第一步。
现实生活中的对象可以归类,这往往是一种树形结构。我们将生物归纳为动物和植物。
CLR中的对象也是与之相同的道理,以WinForm中的窗体为例,我们将系统中的窗体分为后台管理窗体和报表前台窗体。
在编码过程中,我们将类型用包(文件夹)管理起来,就有了“命名空间”的概念。命名空间中的每一个节点,如“后台管理窗体”,就代表一个分类。在该节点下,是属性和行为比较近的一组类型。如果不将类型分组分类,混乱马上就会出现。当然,在敏捷开发中不要求一开始就将所有的类型或命名空间都定义出来,随着每一次迭代的进行,可以通过重构将类型的组织结构整合得更加合理。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
在我们身边的世界中,对象是什么?对象就是事物,俗称“东西”。那么,什么东西算得上是一个对象呢?对象有属性、有行为。以动物为例,比如猫(Cat)。Cat可以有Name,这就是属性;Cat有一个恶习ScratchSofa(挠沙发),这就是行为。我们把这些属性和行为结合起来,就称为一个类型:
class Cat { public string Name { get; set; } public void ScratchSofa() { Console.WriteLine("{0}在挠沙发",Name); } }
当然,类型只是规范了某类对象,它提炼出了接口、规范了协议,而真正的对象是要生产出来的。比如Tom猫,必须生产(即new)出来,才会在现实世界(可以理解为CLR运行时)中真正存在(即分配内存)。代码如下:
Cat tom =new Cat(); tom.Name = "Tom"; tom.ScratchSofa();
软件中的任何“东西”都可以用这个思路去理解。
当我们编码时,将CLR当成一个现实世界,并时刻考虑将某些具有共同属性和行为的对象抽象成一个个类型,这时我们就迈出了面向对象的第一步。
现实生活中的对象可以归类,这往往是一种树形结构。我们将生物归纳为动物和植物。
CLR中的对象也是与之相同的道理,以WinForm中的窗体为例,我们将系统中的窗体分为后台管理窗体和报表前台窗体。
在编码过程中,我们将类型用包(文件夹)管理起来,就有了“命名空间”的概念。命名空间中的每一个节点,如“后台管理窗体”,就代表一个分类。在该节点下,是属性和行为比较近的一组类型。如果不将类型分组分类,混乱马上就会出现。当然,在敏捷开发中不要求一开始就将所有的类型或命名空间都定义出来,随着每一次迭代的进行,可以通过重构将类型的组织结构整合得更加合理。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
相关文章推荐
- C#实现由四周向中心缩小的窗体退出特效
- C# FTP操作类
- 编写高质量代码改善C#程序的157个建议——建议111:避免双向耦合
- C#中的重写和覆盖的区别
- C# foreach 中获取索引index的方法
- 编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
- C#中抽象类与接口的区别
- 编写高质量代码改善C#程序的157个建议——建议109:谨慎使用嵌套类
- Csharp: create word file using Open XML SDK 2.5
- C# 学习笔记(一) -- 基本语法
- C#实现多线程下载文件的方法
- 编写高质量代码改善C#程序的157个建议——建议108:将类型标识为sealed
- vs2013 c# 中调用 c 编写的dll出错的可能错误
- 编写高质量代码改善C#程序的157个建议——建议107:区分静态类和单例
- 实现单例模式C#版本
- 编写高质量代码改善C#程序的157个建议——建议106:为静态类添加静态构造函数
- c#用户控件的生命周期
- c#方法重载,可选参数,命名参数。
- c#方法重载,可选参数,命名参数。
- 记一次C#的web模拟登录抓取