Я предпочитаю использовать локальные переменные, а не несколько вызовов одного и того же метода.
/*
* 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();
}
- Я считаю, что первый способ будет выполнять крошечный бит быстрее
- Я думаю, что второй способ нарушает принцип СУХОЙ
- Я нахожу первый способ более удобочитаемым и более легким для отладки (... ОК незначительно, потому что я мог бы перешагнуть)
- Я не хочу иметь дело с возможностью изменения состояния объекта.
Что вы предпочитаете и почему?