我写了一个小API
来允许用户控制电源。 PowerController
对象可以打开或关闭电源端口:
PowerController.SwitchOn(1)
PowerController.SwitchOff(3)
PowerController
可以通过指定1到4之间的整数来切换四个不同端口的电源。用户还可以使用以下方式回读所有四个端口的状态:
PowerController.GetPortStatus()
此函数返回一个布尔数组,其中包含4个端口中的每个端口的true / false值。我的API
的用户不喜欢他们必须指定基于1的索引来打开或关闭端口这一事实,但必须使用基于0的索引来检查给定端口的状态。返回端口状态的最佳方法是什么,以便用户可以使用在打开或关闭端口时使用的相同的1索引号?
答案 0 :(得分:1)
您可以返回Dictionary<int, bool>
,其中Key是端口的从1开始的索引,Value是端口的状态。这样,用户可以使用基于1的索引,如下所示:
Dictionary<int, bool> portsStatus = PowerController.GetPortStatus();
bool statusOfPort1 = portsStatus[1];
答案 1 :(得分:0)
如果我掌握了你的想法,那么在运行这种方法时
PowerController.GetPortStatus()
只返回一个数组,其中数组的索引是PORT,而Value(0,1)是一个标志:1- ON,0 - OFF
例如: 返回new int {-1,0,0,0,1}(只有端口4处于活动状态)
答案 2 :(得分:0)
我会提供PowerController.GetPortStatus()的替代方法,比如额外的静态函数:
main
通过这种方式,您的用户可以通过基于1的方式访问此数据,这也将保留已编写的代码,从而提供向后兼容性。
答案 3 :(得分:0)
您必须与用户保持一致;你不能要求他们在这里使用0和在那里使用1。
无论你选择哪个都没关系,因为你应该有一个类和/或枚举你的不同状态。
使用类和枚举比布尔和索引更好,它更易读,而且更有趣。
或者,如果您真的想使用索引,请确定它是基于0还是1。根据他们的选择,将/ substract 1添加到每个索引,以使其适合您的系统。
他们想要一个基于1的索引,但你有一个布尔数组(我坚持不是超级好),你可以让他们使用他们的基于1的索引,每次使用时只需减去1,所以这是一个基于0的索引。 :)
许多解决方案都有效,最后一个非常容易。但我建议像我(以及可能还有其他人)提到的更深层次的重构。