在具有与业务逻辑分离的UI的程序中;我有一个车库,包含一个车辆列表(licensePlate,coniditionOfVehicle)
我想允许Garage的用户在特定的条件下接收所有licensePlates的列表.OvVehicle。
该方法的返回类型应该是什么?字符串的IList(正是要求所述)与车辆的IList(允许客户看到汽车的更多属性,从而提高可扩展性)
我们甚至被允许退回车辆?这将允许用户改变我们可能不希望他做的事情。 (假设客户可以访问" Vehicle",因为它使用Builder接收车辆,然后调用Garage.AddVehicle(车辆)将其添加到车库)
< / LI> 醇>由于
答案 0 :(得分:2)
有YAGNI (You Arent Gonna Need It)原则声明:
在您真正需要它们时始终实施,而不是在您实施时 只是预见到你需要它们。
如果要求说“用户需要许可证列表”和“#39;然后简单地返回用户需要的东西而不试图预见他们可能需要什么。否则你在预测上浪费时间,你正在添加可能的问题(用户更换车辆),你的代码对于用户(他们期望licensePlates)和维护者(他们不知道新要求来自何处)都是意料之外的来自),最糟糕的事情 - 新功能&#39;可能没有被用户使用。
您试图通过返回整车实例来违反的另一个原则是KISS (Keep It Simple, Stupid):
如果您可以选择简单的解决方案和复杂的解决方案,那么 选择复杂性将是愚蠢的。
返回字符串列表是更简单的解决方案,满足要求。没有必要为您的系统添加不必要的复杂性。