| Czytelne instrukcje warunkowe | 
| Wpisany przez Patryk yarpo Jar | |||
| piątek, 30 lipca 2010 17:56 | |||
| 
	Prosta instrukcja if czy switch. No przecież tu nie da się zrobić niczego lepiej. No, niekoniecznie. Da radę i zaraz to pokażę. 
 Instrukcja ifMyślę, że nie potrzebuje zbyt długo tłumaczyć jak działa if. Ale chciałbym pokazać, co można zrobić, aby był czytelniejszy. Pamiętaj - kod pisze się raz, a czyta wiele razy. Warto zatem odpowiednio go napisać. 
 No i co tu jest nie tak? Przeciez komentarz ladnie opisuje wszystko, mamy wciecia, mamy wszystko czego potrzebujemy... No właśnie, ale czy nie da się lepiej? 
 Krok 1 - wyrzuć magiczne liczby
 Prawda, że już czytelniej. W sumie można teraz usunąć komentarz. Nie podobają mi się jeszcze 2 rzeczy. 
 Krok 2 - kolejność porównań i jednoznacznośćIle razy zdarzył ci się taki błąd: 
 i przez godzinę szukałeś błędu. To jest bezsensowne, bo jeśli do `$tmp' przypiszesz 3 to warunek będzie spełniony. Zawsze. Dlatego warto zamienić kolejność: najpierw stała, potem zmienna. Tak jak tu: 
 
 Dodatkowo w językach skryptowych często występują dwa operatory porównania: "jest równe" (==) i "jest identyczne" (===). Jeśli coś piszesz, to powinieneś wiedzieć, jakiego typu coś będzie i jaka jest oczekiwana wartość. W takich sytuacjach powinieneś porównywać właśnie z taką wartością i wykorzystywać operator "jest identyczny". 
 Krok 3 - Osobna funkcja (metoda)Bardzo często się zdarza, że taki warunek staje się niejako "stanem". I występuje w kilku miejscach. Jest niewiele rzeczy gorszych od powtarzającego się kodu. Z takim kodem najpiej jest... wrzucić go do funkcji (metody) i wywoływać. O ile w obiekcie ma to większe uzasadnienie (szczególnie, jeśli warunek opiera się na właściwościach obiektu), o tyle w kodzie strukturalnym jest to czasem utrudnienie - jeśli do funkcji przekazujesz 5 parametrów, to przestaje to być czytelne. 
 Tu trochę na siłę jest wprowadzona jest funkcja `maxConnectionAttemptsAndWrongPass()'. Ale chciałem pokazać zasadę. 
 | 

 English
English Arabic
Arabic Bulgarian
Bulgarian Croatian
Croatian Czech
Czech Danish
Danish Dutch
Dutch Finnish
Finnish French
French German
German Greek
Greek Hindi
Hindi Italian
Italian Japanese
Japanese Korean
Korean Norwegian
Norwegian Polish
Polish Portuguese
Portuguese Romanian
Romanian Russian
Russian Spanish
Spanish Swedish
Swedish Catalan
Catalan Filipino
Filipino Hebrew
Hebrew Indonesian
Indonesian Latvian
Latvian Lithuanian
Lithuanian Serbian
Serbian Slovak
Slovak Slovenian
Slovenian Ukrainian
Ukrainian Vietnamese
Vietnamese Albanian
Albanian Estonian
Estonian Galician
Galician Hungarian
Hungarian Maltese
Maltese Thai
Thai Turkish
Turkish Persian
Persian Afrikaans
Afrikaans Malay
Malay Swahili
Swahili Irish
Irish Welsh
Welsh Belarusian
Belarusian Icelandic
Icelandic Macedonian
Macedonian Yiddish
Yiddish Armenian
Armenian Azerbaijani
Azerbaijani Basque
Basque Georgian
Georgian Haitian Creole
Haitian Creole Urdu
Urdu Chinese (S)
Chinese (S) Chinese (T)
Chinese (T)
