对象应该是什么样的?

时间:2009-08-27 05:13:34

标签: .net design-patterns

我一直在争论如何最好地创建我的课程。

我的意思是为什么我们不总是创建一个实现INotifyPropertyChanged和IDataErrorInfo的类,以便我们想要“if”我们可以直接在我们的表单中绑定,为什么我们不总是用属性装饰它们以便如果我们想要我们可以在WCF中使用该类吗?

我的意思是除了明显的额外代码,更多的测试不会给我们更好的灵活性吗?

我总是听到 - “创造一次”并使用“无处不在”,但我也与'YAGNI'保持一致(你不需要它)。

我想这里的问题是“商务舱”的概念,而不是可以重复使用?我们是否说'创造最基本的'现在有效,并在需要时建立它?

[R

4 个答案:

答案 0 :(得分:1)

我认为通常最好让您的课程更专注于一小组特定任务,而不是创建可在各种场景中使用的对象。例如,您可能拥有包含所有数据层特定属性/行为的数据层对象,包含所有表示层内容的表示层对象以及服务层对象等。

如果你的课程太“无所不能”,你最终会在不同的层中创建大量的依赖关系,这使得将来更改变得更加困难。谷歌搜索“单一责任原则” - 这是OO的“固体”原则之一。

答案 1 :(得分:0)

我创建了很多很多类,这些类离UI很远。每次实施这些界面都会是一个沉重的负担,而且奖励很少。

答案 2 :(得分:0)

首先,程序员很懒,我们的修改是自动化无聊的任务。 (不,我不是负面的)我们通常编写类来服务于一个特定的目的,它指明了什么类型的额外位进入它。您正在问面向方面编程试图回答的基本问题。我班上班了吗?我的班级是数据容器吗?我的班级是否可以观察到?根据使用情况,这些方面可以是所有这些内容。或者它可能只是其中之一。

答案 3 :(得分:0)

如果你这样做,你在哪里划线?你打算把你的所有课程都排除在外吗,因为有一天你可能想把它们从某个地方扔掉?你打算将它们全部序列化吗?

您可以考虑的另一种方式是语言设计者已经为您做出了决定 - 所有类都自动从Object继承,其中包含“常规”对象所需的所有内容。

最后,不要将代码重用与编写不必要的代码混淆。一般来说,你应该只编写你现在需要的代码,但要设计它以便将来使用/更改。