Szia! A mai lecke nem lesz túl hosszú, de mindenképpen hasznos lesz :) Szó lesz az úgynevezett ternary operátorról .
Ternary jelentése " három részből áll ". Alternatívája a
A feltétel körüli zárójeleket egyébként nem kell megadni: a jobb olvashatóság érdekében hozzáadtuk őket. Ezek nélkül is működik:
A programozóknak szóló bevált gyakorlatokat és ajánlásokat gyűjti össze, amelyek segítségével nemcsak működőképes, hanem könnyen olvasható kódot is írhat.

if-else
már bevált vezérlőfolyamat-utasításnak. Mondjunk egy példát. Tegyük fel, hogy valaki úgy döntött, hogy R-besorolású filmet néz (17 éven aluli szülő vagy felnőtt gyám szükséges). A felügyelő az ajtóban ellenőrzi az életkorát: ha átment a korhatáron, beengedik; ha nem, akkor hazaküldik. Deklaráljunk egy Person
osztályt, és ellenőrizzük ezt egy if-else
utasítással:
public class Person {
private int age;
public Person(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse;
if (person.getAge() >= 18) {
usherResponse = "Everything is in order. Come in!";
} else {
usherResponse = "This film is not suitable for your age!";
}
System.out.println(usherResponse);
}
}
Konzol kimenet:
"Everything is in order. Come in!"
Ha eltávolítjuk a konzolkimenetet, akkor az ellenőrzésünk így néz ki:
if (person.getAge() >= 18) {
usherResponse = "Everything is in order. Come in!";
} else {
usherResponse = "This film is not suitable for your age!";
}
A logika itt nagyon egyszerű: az egyik feltételt ellenőrizzük (életkor >= 18) Az eredmény alapján a változóhoz usherResponse
két karakterlánc egyikét rendeljük hozzá az usher válaszával. Az ilyen helyzetek („egy feltétel – két lehetséges kimenetel”) rendkívül gyakoriak a programozásban. És ezért jött létre a hármas operátor. Segítségével leegyszerűsíthetjük ellenőrzésünket egyetlen kódsorra:
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse = (person.getAge() > 18) ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
System.out.println(usherResponse);
}
Így működik ez az operátor. Háromtagú operátornak hívják, mert 3 összetevőből áll:
- Egy feltétel (
person.getAge() > 18
) - Két lehetséges kimenetel ( "Minden rendben van. Gyere be!" és "Ez a film nem felel meg a korodnak!" )
person.getAge() > 18 ?
– Ez a személy 18 évesnél idősebb? Ezután írjuk az első értéket . Ez az érték akkor használatos, ha a feltétel kiértékelésetrue
:
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
Ez a személy 18 évesnél idősebb? Ha igen, állítsa a usherResponse
változót "Minden rendben van. Gyere be!" Ezután jön a " :
" szimbólum és a második érték . Ez az érték akkor használatos, ha a feltétel kiértékelésefalse
:
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
Ez a személy 18 évesnél idősebb? Ha igen, állítsa a usherResponse
változót "Minden rendben van. Gyere be!" . Ha nem, állítsa a usherResponse
változót "Ez a film nem felel meg az életkorodnak!" Általában így néz ki a háromtagú operátor logikája. feltétel ? 1. eredmény : 2. eredmény 
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
System.out.println(usherResponse);
}
Tehát mit kell használni? Egy if-else
nyilatkozat vagy a hármas operátor? A teljesítmény szempontjából nincs különbség. Pontosabban talán van is, de ez jelentéktelen. A legnagyobb szempont itt a kód olvashatósága. A megírt kódnak nemcsak megfelelően kell működnie, hanem könnyen olvashatónak is kell lennie . Hiszen lehet, hogy más programozók, kollégái "örökölték"! Ha nehéz megérteni, az megnehezíti a dolgukat, és az Önét is (5 percenként futnak hozzád magyarázatért). Az általános ajánlás a következő: ha a feltétel egyszerű és könnyen ellenőrizhető, akkor a hármas operátort károsodás nélkül használhatja. Ezzel csökkentheti a kód mennyiségét és számátif-else
nyilatkozatok (és lehet, hogy már sok van belőlük). De ha a feltétel összetett és több lépésből áll, jobb, ha egy if-else
utasítást használ. Például egy háromtagú operátor használata rossz ötlet ebben az esetben:
String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
Nem azonnal látszik, mi történik itt! A kód nagyon nehezen olvashatóvá vált . És mindez a bonyolult állapot miatt:
- Ha valaki 18 évesnél idősebb, van jegye (vagy ingyenes bérlete), és nincs kisgyermeke, akkor bejöhet.
- Ha a feltételnek csak egy része is hamis, akkor nem tudja.
if-else
. Igen, a kódunk nagyobb lesz, de sokkal olvashatóbb lesz. És a kollégáid sem tenyérrel néznek szembe, ha öröklik ezt a kódot :) Végül ajánlhatok egy jót. Az órán érintettük a kód olvashatóságát. Robert Martin „Clean Code” című, klasszikussá vált könyve ennek a témának szól. 
További olvasnivalók: |
---|
GO TO FULL VERSION