业务逻辑类的正确接口
本文关键字:接口 业务 | 更新日期: 2023-09-27 17:58:04
在UI与业务逻辑分离的程序中;我有一个车库,里面有一个车辆清单(licensePlate,coniditionOfVehicle)
我想允许车库的用户在特定的车辆条件下收到所有许可证的列表。
-
该方法的返回类型应该是什么?字符串IList(确切地说是需求状态)与车辆IList(允许客户查看汽车的更多属性,从而提高可扩展性)
-
我们甚至可以退货吗?这将允许用户更改我们可能不希望他更改的内容。(假设客户端可以访问"车辆",因为它正在使用生成器接收车辆,然后调用Garage.AddVehicle(车辆)将其添加到车库)
感谢
有一个YAGNI(You Arent Gonna Need It)原则,它规定:
总是在你真正需要的时候实施,而不是在你只要预见到你需要他们。
若要求说"用户需要许可证列表",那个么只需返回用户需要的内容,而不必试图预见他们可能需要的内容。否则,你会在预测上浪费时间,增加可能的问题(用户更换车辆),你会让你的代码对用户(他们希望获得许可证)和维护人员(他们不知道新需求来自哪里)都出乎意料,最糟糕的是,新的"功能"可能不会被用户使用。
你试图通过返回整车实例来违反的另一个原则是KISS(保持简单,愚蠢):
如果你可以在简单的解决方案和复杂的解决方案之间做出选择,那么选择复杂性是愚蠢的。
返回字符串列表是一个更简单的解决方案,可以满足要求。没有必要给您的系统增加不必要的复杂性。