Java更多的方法还是某个方法中的更多功能?

时间:2018-10-17 15:54:42

标签: java code-cleanup clean-architecture

我是 Java 编程的新手,目前正在研究用于移动理论机器人的程序。像这样的方法

会更有效/更好吗?
public void turn(String direction, double power) { /* code */ }

或喜欢

public void turnLeft(double power) { /* code */ }
public void turnRight(double power) { /* code */ }

仅是preference/readability还是有一个标准?

3 个答案:

答案 0 :(得分:2)

public void turn(String direction, double power)的问题是方向为String,因此调用方可以传递无效的值。建议在此处使用Enum

enum Direction {
  LEFT, RIGHT,...
}

我会说选择一个主观...但是我更愿意为每个方向选择一种方法。也许枚举实例不止几个,那么只有一种方法是有意义的。如果您添加了一个新的方向(例如ZIGZAG),则无需添加任何新方法(但是您的实现仍需要处理该新的枚举/方向)。

考虑呼叫者将如何呼叫并选择更有意义的呼叫者。

答案 1 :(得分:1)

我建议该方法应取度,而不是向左或向右,并且应取度,无论是顺时针还是逆时针(只要保持在2d的上下文中),就应该是布尔值。

因此方法应具有以下签名

public void turn(boolean clockwise, double degree, double power) { /* code */ }

这样,仅90度的移动就不会限制机器人。

将其拆分为两个方法在逻辑上似乎不正确。

答案 2 :(得分:0)

第二个更具可读性。通常,最好使用自动描述方法或变量。

如果要使用第一种方法,我的提示是使用Enum而不是String。使用Enum可以避免输入错误(左键和左键),并且代码更易读。