Mój IDE (IntelliJ IDEA) mówi mi, że mam możliwość usunięcia szelki na ten if:Czy należy unikać wielu instrukcji if, takich jak "if (warunek) if (warunek) ..." w Javie?
if (objectIsOfTypeFoo) {
if (objectOfTypeFooIsShared) {
// do something with Object of type Foo knowing that it's shared...
} else {
// do something with Object of type Foo knowing that it's not shared...
}
} else if (objectIsOfTypeBar) {
...
}
Stać:
if (objectIsOfTypeFoo) if (objectOfTypeFooIsShared) {
// do something with Object of type Foo knowing that it's shared...
} else {
// do something with Object of type Foo knowing that it's not shared...
} else if (objectIsOfTypeBar) {
...
}
mogę zrozumieć, jak to ma sens, i kusi, by zgubić wcięcie, ale moim zmartwieniem jest to, że czytelność może ucierpieć. Ten ostatni wygląda czysto, ale czy zaoszczędzona przestrzeń jest warta potencjalnego zamieszania?
Zakładam, że różnica w wydajności między nimi jest banalna, jeśli w ogóle.
I jako pytanie uzupełniające: czy istnieje ograniczenie liczby "jeśli (stan) można zmieścić w pojedynczej linii, a raczej w jakim punkcie staje się zbyt wiele?
Pierwszy przykład jest bardziej czytelny i rzadziej powoduje problemy z powodu pominiętych nawiasów klamrowych - IMHO – MadProgrammer
Różnica w wydajności w czasie wykonywania jest zerowa, ponieważ kod-gen dla obu wersji jest identyczny. Różnica w wydajności podczas kompilacji to koszt leksykowania kilku dodatkowych nawiasów klamrowych. Tak więc zero. Och, i zignoruj IDE: oferuje (moim zdaniem) okropną radę. – dlev
Nigdy nie widziałem, żeby IntelliJ polecił coś takiego. Sprawdziłbym twoje ustawienia stylu. – duffymo