У програмирању, Јода услови или Јода нотација је стил програмирања у којем су два дела израза обрнута у односу на типични ред у услову. Јода услов поставља константан део израза на леву страну условне изјаве. Назив за овај стил програмирања потиче из франшизе Ратови звезда, од измишљеног лика по имену Јода, који говори енглески језик са нестандардном синтаксом.
Јода услови део су стандарда кодирања Симфонија и Вордпреса.
Пример Обично би се условна изјава написала као: if ($value == 42) { /* ... */ } // Чита се: "Ако је вредност $value једнака 42..." Јода услови описују исти израз, али обрнуто: if (42 == $value) { /* ... */ } // Чита се: "Ако је 42 једнака вредности $value..." Константа се пише лево од оператора поређења, а променљива, чија се вредност успоређује са константом, с десне стране. Овај ред упоредив је са нестандардним енглеским језиком којим прича Јода, који је отприлике облика објекат-субјекат-глагол (нпр. „Девет стотина година кад напуниш, изгледаћеш не тако добро.“).
Предност Постављање константне вредности у израз не мења понашање програма (осим ако вредности нису лажне — погледати испод). У програмским језицима који за доделу користе један знак једнакости ( = ), а не за поређења, могућа грешка је ненамерно додељивање вредности уместо писања условне изјаве. if (mojBroj = 42) { /* ... */ } // Ово додељује 42 променљивој mojBroj уместо провере услова Коришћењем Јода услова: if (42 = mojBroj) { /* ... */ } // Ово је синтаксна грешка и неће бити компајлирано Пошто је 42 константна и не може се мењати, ова грешка ће бити ухваћена од стране компајлера. Boolean mojBoolean = true; if (mojBoolean = null) { /* ... */ } // Ово ствара NullPointerException, али пролази компајлирање Такође се могу избећи неке врсте несигурног понашања null-а. String mojString = null; if (mojString.equals("foobar")) { /* ... */ } // Ово изазива NullPointerException у јави Са Јода условима: String mojString = null; if ("foobar".equals(mojString)) { /* ... */ } // Ово је нетачно, као што је и очекивано
Критике Критичари Јода услова виде недостатак читљивости као недостатак који надмашује горе описане предности. Неки програмски језици, као што је Свифт, не дозвољавају додељивање променљивих унутар услова, дефинишући да додељивања не враћају вредност, у ком случају је немогуће направити такву грешку. Многи преводиоци показују упозорење за код, као што је if (myNumber = 42) (нпр. опција ГЦЦ компајлера -Wall предлаже заграде око доделе која се користи као услов), што упозорава програмера на могућу грешку. У динамичким језицима, као што је јаваскрипт, линтер, као што је ЕСЛинт, може упозорити на доделу унутар услова.
Предност избегавања понашања null-а такође се може сматрати недостатком, јер се грешке null показивача могу сакрити и појавити се много касније у програму.
Референце
Спољашње везе united-coders.com: What are Yoda Conditions? Examples in Java New programming jargon Mentions Yoda Conditions in a list of new programming jargon Coding in Style Probable origin of the term Yoda Conditions in Java Potential pitfalls of the technique Yoda conditions very harmful seems to be How this technique can do much more harm than good
Категорија:Ратови звезда Категорија:Програмирање