Я не знаю, что лучшие практики в моем случае исключения:Лучшая практика - обработка
1:
public class garage {
private List<Car> cars = new ArrayList<Cars>();
public String getCarSeatSomething(String carName, String brandName) {
for(Car car : cars){
if(car.getName().equals(carName)){
Seats seats = car.getSeats();
List<Brand> brands = seats.getBrands();
for(Brand brand: brands){
if(brand.getName().equals(brandName)){
return brand.something();
}
}
}
}
return null;
}
...
}
У меня есть много способа, как это, так что я буду иметь некоторый избыточный код это решение.
Кроме того, в моей программе это не «нормально», что мы не находим машину, поэтому я думаю, что мне нужно использовать Exception no?
2:
public class Garage {
private List<Car> cars = new ArrayList<Car>();
public Something getCarSeatSomething(String carName, String brandName) {
Car car = searchCar(carName);
if(car == null)
return null;
else{
Seats seats = car.getSeats();
return seats.getSomething(brandName);
}
}
...
}
public class Seats {
private List<Brand> brands = new ArrayList<Brand>();
protected Something getSomething(brandName){
Brand brand = searchBrand(brandName);
if(brand == null)
return null;
else
return brand.something();
}
...
}
Меньше избыточного кода и меньше кода для каждого метода класса гаража, так как поиск только в searchBrand и searchCar. Но у меня всегда есть проблема исключений.
Итак, мое последнее решение заключается в том, чтобы бросать исключение в методы searchBrand и searchCar, добавлять броски во все методы (например, getCarSeatSomething), которые используют searchBrand/searchCar и пытаться ... уловить, когда я использую эти методы (например, getCarSeatSomething).
Верно ли это? Если нет, у вас есть лучшие идеи?
Напишите код, чтобы использовать значения - и избегайте исключений, за исключением случаев, когда происходит нечто исключительное (и часто не восстанавливаемое на немедленном уровне). В основном, спросите их: что происходит, когда запрос * не * может быть выполнен? кто виноват? что, как ожидается, будет сделано по этому поводу? – user2864740
Если я не нахожу машину, например, я должен ее зарегистрировать. Это ошибка вызывающего абонента, а не объекта, который содержит автомобили. – kaoziun
«избегайте ** исключений **, ** кроме ** когда что-то ** исключительное ** происходит» - awesome :-) – Leo