我更喜欢使用局部变量而不是多次调用同一个方法。
/*
* I prefer this
*/
Vehicle vehicle = person.getVehicle()
if (vehicle instanceof Car) {
Car car = (Car) vehicle;
car.openSunroof();
} else if (vehicle instanceof Bike) {
Bike bike = (Bike) vehicle;
bike.foldKickstand();
}
/*
* Rather than this
*/
if (person.getVehicle() instanceof Car) {
Car car = (Car) person.getVehicle();
car.openSunroof();
} else if (person.getVehicle() instanceof Bike) {
Bike bike = (Bike) person.getVehicle();
bike.foldKickstand();
}
- 我相信第一种方法会执行得更快一些
- 我认为第二种方式违反了DRY原则
- 我发现第一种方式更具可读性和更易于调试(...可以忽略不计,因为我可以跳过)
- 我不想处理对象状态改变的可能性
你更喜欢哪个,为什么?
最佳答案
出于您提到的所有原因,我更喜欢第一个版本。特别是(只是为了阐明你的第四点),这意味着你肯定会得到一致的结果......如果getVehicle()
,你可能会在第二个版本中得到非常糟糕的结果。返回了 Car
在第一次通话时,然后是 Bike
在第二...
性能方面并不困扰我(例如,我会很高兴地反复调用 List.size()
),但可读性、一致性和不重复都更为重要。从本质上讲,第一个片段比第二个片段更有效地传达了“获取值(value),然后使用它”的想法。
所以是的,我同意你...有人向你推荐第二种形式吗?
关于Java编码风格,局部变量与重复方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2228392/