Kiriman singkat khusus kanggo kabeh penggemar Star Wars lan Java / JavaRush kanggo ngurmati ulang tahun kaping 40 saka release Episode V saka saga bintang! Kadhangkala sampeyan bisa nemokake akeh perkara sing menarik ing Internet, lan ing dina liyane aku nemoni praktik pemrograman sing rada lucu sing diarani kahanan Yoda . Singkatnya, kondisi Yoda (uga notasi Yoda) minangka gaya pemrograman ing ngendi rong bagéan saka ekspresi perbandingan sing akrab ing pernyataan kondisional dibalik:
sangang enem bagean Saga, kita, tanpa turu, lungguh kanggo nulis sawetara kode kanggo proyek pet kita lan nulis ing ngisor iki:
if (5 == a) {
// do something
}
Gaya iki bisa digunakake ing basa kanthi sintaks kaya C, paling asring ing ekspresi karo if
lan while
.
if (0 == variable) {
// do something
}
while (false == endingCondition) {
// do something
}
Napa ngganti ekspresi konstan ing sisih kiwa operator perbandingan? Ayo nganggep kahanan hipotetis sing, sawise ndeleng maraton kabeh void checkNumber(int a)
{
if (a = 13) // Здесь-то и появляется так называемый unexpected behavior!
{
printf("Number is 13");
}
}
Ing kasus iki, saben-saben sampeyan mbukak program, sampeyan bakal nampa senar Number is 13"
, preduli saka argumentasi liwat а
cara checkNumber(int a)
. Iki dudu sing dikarepake! Kesalahan logis bisa kedadeyan cukup asring ing antarane programer pemula (pracaya aku, aku ngerti). Nanging ing tahap kompilasi, kode kaya 13 = a bakal ngasilake kesalahan, sing mesthi ora bakal dilalekake, amarga nilai integer minangka konstanta lan, mulane, ora bisa diganti (dadi "a").
Ana pro lan kontra kanggo nggunakake kahanan Yoda.
Sisih cahya:
-
Nyegah assignment kanggo variabel nalika goal kita comparison.
-
Ngatasi masalah "Tindakan Null" sing ora aman (
NullPointerException
) // conto saka Wikipedia
Tanpa Yoda:
String myString = null;
if (myString.equals("foobar")) { /* ... */ }
// This causes a NullPointerException in Java
Kanthi Yoda:
String myString = null;
if ( "foobar".equals(myString) ) { // Результат - Ложь
/* не выполняется */
}
Sisih peteng:
- Keterbacaan kode kanggo wong sing bakal ndeleng kode sampeyan dadi luwih rumit, nambah beban ing persepsi kode kasebut.
- Orane katrangan sempit, mung comparison kanggo podo utawa comparison karo pancet digunakake, mriksa null.
- Akeh compiler wis "ndeleng" kasalahan saka jinis iki lan ngelekake ing advance bab ngarsane kesalahan potensial.
GO TO FULL VERSION