Citat:
01011011: X Files mislim da ovo tvoje nije dobro zato sto ukoliko je prva metoda (netacna) false, ostale se nikada nece imati sanse pokrenuti.
A šta se događa sa ostalim funkcijama u njegovom primeru (da li će se izvršiti), ako je prvi poziv postavio
rs na
false ?
Ako je prvi uslov eliminatoran za drugi, a drugi eliminatoran za treci, i tako redom (njegov primer na to ukazuje zbog
if (rs) {...}), onda rešenje koje sam dao ima smisla. Naravno, može da se optimizuje sintaksa kao što reče Shadowed.
Ako je broj funkcija prevelik, onda u C++ obično napravim niz pokazivača na funkcije i provera ide kroz petlju, a siguran sam da i .NET raspolaže nekom
srodnom tehnikom.
Ipak, ono što vidim kao glavni 'nedostatak' prikazanih rešenja je što bool tip ne može da čuva dovoljno informacija o onome šta se zapravo desilo, a korisnika može da zanima. Sećam se situacije dok sam radio u jednoj firmi kada sam imao potrebu da pristupim nekom važnom fajlu, pa je prethodno bilo vrlo bitno da znam u kakvom je on 'stanju' i eventualno javim korisniku. Dakle, umesto FAJL NIJE DOSTUPAN, trebalo je reći i ZAŠTO nije dostupan.
Po sećanju (moguće da nisam tačno postavio redosled):
1) da_li_fajl_postoji() // <--- ovo je eliminatorno, jer ako nema fajla ništa dalje nije važno
2) da_li_je_fajl_readable() // <--- ovo je bilo bitno kada su aktuelne bile i 3,5'' diskete, fajl postoji ali ne može da se čita zbog nekog oštećenja
3) da_li_je_fajl_read_only() // <--- read only osobina
4) da_li_je_file_writable // <--- slčno kao pod 2
5) da_li_je_fajl_okupiran() // <--- već otvoren ekskluzivno od nekog drugog programa
itd...
U prikazanom sistemu je moguće da fajl bude recimo istovremeno i read-only i okupiran, pa je o trebalo sve to javiti. Tada bool tip nije bio dovoljan, pa se išlo na operacije sa bitovima da bi se zabeležilo stanje.
Što se tiče konkretnog pitanja u vezi
return na jedom ili više mesta, moj stil je - na jednom. U konkretnom, pojednostavljenom primeru to je sve neočigledno, ali return usred nekog bloka može da zaobiđe neki deo koda koji ti je bio bitan.