在 UI 与业务逻辑分离的程序中;我有一个车库,包含车辆列表(licensePlate,coniditionOfVehicle)
我希望允许 Garage 的用户收到特定给定车辆条件下所有车牌的列表。
该方法的返回类型应该是什么?字符串的 IList(与需求完全一致)与车辆的 IList(允许客户端看到汽车的更多属性,从而提高可扩展性)
我们是否可以归还车辆?这将允许用户更改我们可能不希望他做的事情。 (假设客户端可以访问“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/