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

我想允许Garage用户在特定的给定conditionOfVehicle条件下接收所有licensePlate的列表。


该方法的返回类型应该是什么?字符串的IList(正是要求所说明的)与Vehicle的IList(允许客户查看汽车的更多属性,从而提高可扩展性)
我们甚至被允许退还车辆?这将允许用户更改我们可能不希望他做的事情。 (假设客户端可以访问“车辆”,因为它正在使用构建器来接收车辆,然后调用Garage.AddVehicle(vehicle)将其添加到车库中)


谢谢

最佳答案

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


  始终在真正需要它们时实施它们,而不是在您真正需要它们时
  只是预见到您需要它们。


如果要求说“用户需要licensePlates列表”,则只需返回用户需要的内容,而不必试图预见他们可能需要的内容。否则,您将浪费时间进行预测,添加了可能的问题(按用户更换车辆),使代码对于用户(他们希望获得licensePlates)和维护人员(他们都不知道新要求的来源)都是出乎意料的,最糟糕的是-用户可能不会使用新的“功能”。

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


  如果您可以在简单的解决方案和复杂的解决方案之间进行选择,那么
  选择复杂性将是愚蠢的。


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

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

10-11 02:20