Java 传递最小参数好吗?
假设我有一辆对象车,有五个参数,{numwheels,color,miliety,horspower,maxSpeed}。 我有一个方法需要这些值中的3个。 两个选项中哪一个被认为是最佳实践? 传递封闭对象并减少参数的数量更好吗,还是只将简单的最小数据传递给一个方法(例如:方法2中不会访问numwheels和color)Java 传递最小参数好吗?,java,design-patterns,coding-style,Java,Design Patterns,Coding Style,假设我有一辆对象车,有五个参数,{numwheels,color,miliety,horspower,maxSpeed}。 我有一个方法需要这些值中的3个。 两个选项中哪一个被认为是最佳实践? 传递封闭对象并减少参数的数量更好吗,还是只将简单的最小数据传递给一个方法(例如:方法2中不会访问numwheels和color) 选项1传递整个对象: void compute(Car c, Person p) { return c.mileage + c.horsepower + c.maxSp
void compute(Car c, Person p) {
return c.mileage + c.horsepower + c.maxSpeed + p.age;
}
void compute(int mileage, int horsepower, int maxSpeed, int age) {
return mileage + horsepower + maxSpeed + age.;
}
注意:由于某种原因,假设compute不能作为Car类的一部分。请在回答时牢记这一假设 我建议第三种选择:在Car中添加“compute”方法 这就是所谓的“说,不问”
请参见最好传递封闭对象,因为计算中所需参数数量的任何更改都不会影响将来的方法签名 实际上,您可以接受接口类型,例如,
Vehicle
。这允许同样的方法在以后计算自行车
,喷气机等的数据
public int compute(Vehicle veh) {
return veh.computePerformance();
}
其中Car
实现方法如下
public int computePerformance() {
return mileage + horsepower + maxSpeed;
}
其思想是编写易于扩展的代码。我建议第二种选择
为什么?
假设一:其他类使用您的计算方法来计算里程,例如“类所有者”
假设二:假设明天您的计算方法还需要来自class Car的一个属性来计算里程年龄
如果您选择选项一:那么您必须在方法compute中再引入一个参数,这将导致在调用您的方法的其他类中出现编译问题。在本例中为“类所有者”
如果您选择选项二:您可以灵活地更新您的计算方法实现,而不影响使用此方法的任何其他类,这可能是由您的品味决定的。遵循约定总是有帮助的,所以我认为使用较少的参数更常见、更有意义,最重要的是更灵活(更改Car
类中的字段不会更改方法签名)假设我们compute
需要另一个名为truck的对象,并且由于某种原因不能成为car的一部分?@JavaDeveloper可能会制作一个抽象超类Vehicle,并在其中实现一个非抽象方法compute
。将Car、Truck和所有您需要的东西都从中继承(或者如果您希望稍后在子类中实现它,则将其抽象化)。然后所有子类都将自动具有compute
。实际上,您可以将里程
、马力
和最大速度
字段全部移动到超类。@Shashank假设计算
需要另一个与该类继承人身份无关的类人员。问题的关键不是学习继承,而是传递更多的参数和传递单个对象。如果您必须在这两个选项之间做出选择,那么传递单个对象总是更好。@Shashank回答!最好传递封闭对象,因为计算中所需参数数量的任何更改都不会影响将来的方法签名。-这就是答案!