C# 不同开发人员之间OOP方法的混淆

C# 不同开发人员之间OOP方法的混淆,c#,class,oop,C#,Class,Oop,从去年开始,我一直在使用.net和c#开发web应用程序,但在OOP原则的实现方面,我的脑海中仍有一些困惑 1) 我从面向对象的书籍中学到的是,每个类都应该有其特定的方法,但是当我遇到一位高级开发人员的代码时,我发现开发人员创建了一个单独的业务层,其中一个业务层类包含所有类的所有方法 这种使用包含我们应用程序中使用的所有方法的单独业务类的方法是由任何设计模式或任何其他资源证明的,还是仅仅是一种糟糕的设计 请详细阐述您的答案,因为这也可以帮助其他新手…没有一种体系结构可以遵循,例如,在构建严格的S

从去年开始,我一直在使用.net和c#开发web应用程序,但在OOP原则的实现方面,我的脑海中仍有一些困惑

1) 我从面向对象的书籍中学到的是,每个类都应该有其特定的方法,但是当我遇到一位高级开发人员的代码时,我发现开发人员创建了一个单独的业务层,其中一个业务层类包含所有类的所有方法

这种使用包含我们应用程序中使用的所有方法的单独业务类的方法是由任何设计模式或任何其他资源证明的,还是仅仅是一种糟糕的设计


请详细阐述您的答案,因为这也可以帮助其他新手…

没有一种体系结构可以遵循,例如,在构建严格的SOA系统时,很常见的情况是模型类仅是数据,而不是任何方法。而所有业务逻辑类都存在于不同的名称空间中。此外,当您通过网络发送域类时,通常会在专门用于SOA的不同程序集中为此目的创建专用类


我上面描述的体系结构直接来自微软的VS体系结构指导包。

体系结构是一门艺术,而不是一门科学。有好的架构和坏的架构,但没有一个正确的架构

例如,您的高级开发人员可能已经在更复杂的数据访问层之上创建了一个Facade(设计模式),以简化数据访问。例如,您可以有十几个实体用于订购产品,并且您希望为订购产品时需要执行的所有操作创建一个外观

只要看看体系结构,并尝试分析自己,如果你认为它可以更好。你知道的架构越多,你的判断就会越好,但架构很少是黑白的

而且,仅仅因为某人是高年级的,并不一定意味着他们知道自己在做什么,或者他们没有犯错误

此外,可以在EF中进行继承:

在Programmers.SEFor 1上可能更好。)您的意思是这些类只保存状态信息(属性),而没有方法,并且在业务层中有一个巨大的静态函数类吗?如果是这样的话,你应该和Jeff Atwood联系一下编写恐怖代码…Asad,阅读SOLID。特别是“S”。每个类应仅包含与该类相关的属性/方法。一个单一的业务层类,每个类都有每个方法,这真是令人讨厌。。。。我说真讨厌@阿萨德马利克:的确。对象应该封装特定于该对象的功能。
Car
对象可能有一个名为
Drive()
的方法,该方法在调用时会修改汽车的状态。拥有类似于垃圾场的东西。DriveCar(Car carInstance)是一团乱,它把
汽车
对象的责任放在了错误的地方。分离关注点并将责任放在有意义的地方是关键。@ken2k:那么,您使用ORM的经验似乎非常局限于关系映射的对象。它们可以通过部分类将DTO功能与业务功能分开,但业务对象本身确实应该封装它们的业务功能。DTO本身并不是业务对象,它们只是数据结构。好的,你能详细介绍一下在线库存管理和报告系统的体系结构吗?让我们从你的想法开始?然而,MVC是一个很好的模型,但是视图模型与域模型不同,换句话说,您应该尝试将您的模型与其视图需求分开,从业务角度设计您的模型。对于视图创建专用视图模型类,请查看MVVM。