c# - 业务逻辑类的正确接口(interface)

标签 c# oop

在 UI 与业务逻辑分离的程序中;我有一个车库,包含车辆列表(licensePlate,coniditionOfVehicle)

我希望允许 Garage 的用户收到特定给定车辆条件下所有车牌的列表。

  1. 该方法的返回类型应该是什么?字符串的 IList(与需求完全一致)与车辆的 IList(允许客户端看到汽车的更多属性,从而提高可扩展性)

  2. 我们是否可以归还车辆?这将允许用户更改我们可能不希望他做的事情。 (假设客户端可以访问“Vehicle”,因为它正在使用 Builder 接收车辆,然后调用 Garage.AddVehicle(vehicle) 将其添加到车库)

谢谢

最佳答案

有一个YAGNI (You Arent Gonna Need It)原则指出:

Always implement things when you actually need them, never when you just foresee that you need them.

如果要求说“用户需要许可证板列表”,则只需返回用户需要的内容,而无需尝试预见他们可能需要什么。否则你会在预测上浪费时间,你会增加可能的问题(用户更改车辆),你会让你的代码对用户(他们期望许可证)和维护人员(他们不知道新需求来自哪里)来说都是意外的,最糟糕的是 - 用户可能不会使用新的“功能”。

您试图通过返回整个车辆实例来违反的另一个原则是 KISS (Keep It Simple, Stupid) :

If you have a choice between a simple solution and a complex one, then opting for complexity would be stupid.

返回字符串列表是更简单的解决方案,它满足要求。无需为您的系统添加不必要的复杂性。

关于c# - 业务逻辑类的正确接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23027953/

相关文章:

c# - 在 GitHub 页面中使用 ASP.NET

c# - 如何将新对象插入匿名数组?

java - Spring 业务对象建模

c++ - 从包含的类调用容器类中定义的回调函数的推荐方法是什么?

c++ - 在运算符重载中返回 this 或 *this ?

oop - 多重继承批评

java - Xamarin.Forms WebView 无法与 WebRTC 配合使用

c# - MaxDegreeOfParallelism 是如何工作的?

c# - 如何从 Xamarin.Forms 中的可移植类库项目调用位于 Android 项目内部的方法?

objective-c - 我应该什么时候调用 super ?