2012-06-08 5 views
20

Nie widzę korzyści z tej praktyki kodowania. Projekt, nad którym teraz pracuję, jest pełen tych stwierdzeń, więc nie jest to jeden błąd.Po co używać `return x == 5? true: false; `?

Inny przykład:

return getNumberOfBooks() > 5 ? true : false; 

I jeszcze:

return isRed() ? true : false; 
+10

:-D To bardzo muc h przypomina to, co zrobili moi koledzy z klasy programistycznej w liceum. Jak na przykład 'for (i = 0; i <3; i ++) {if (i == 1) puts (" 1 "); else if (i == 2) puts ("2"); else stawia ("3"); } '. Ergo, wydaje mi się, że to nieporozumienie, że wartość boolowska, która wychodzi z porównania, jest tak dobra, jak wartość określona przez stałe. – Imp

+1

Ktoś miał fascynację potrójnymi wyrażeniami. –

+9

@Imp: Jak na ironię, wynik będzie wynosił "3", "1", "2". – Makoto

Odpowiedz

48

Nie ma absolutnie żadnego powodu, aby to zrobić.

Jest zbędny i utrudnia odczyt kodu.

Poniżej są znacznie łatwiejsze do odczytania:

return (getNumberOfBooks() > 5); 

return isRed(); 
+2

Nawet nawiasy klamrowe '(...)' w pierwszym powrocie nie są potrzebne. – Nawaz

+0

Nie uważam, że * więcej * czytelne. Jestem pewien, że wielu też by tego nie zrobiło. – Nawaz

+0

Oczywiście nie jest _ededed_, ale uważam, że sprawia, że ​​kod jest bardziej czytelny. – jahroy

2

operator Ternary czyni kod prawie nieczytelny, myślał Jego elegancki sposób kodowania, ale nie powinno się zachęcać chyba naprawdę potrzebne

+0

Uzgodniono ...Nadużycie operatora trójskładnikowego doprowadza mnie do szału! – jahroy

+2

yup ..... masz rację ... Każdy głupek może napisać kod, który komputer może przeczytać, ale tylko programiści piszą kody, które człowiek może przeczytać –

+0

... A z jakiegoś powodu tony programistów są dumne pisanie wymyślnego, trudnego do odczytania kodu. Czytelność jest najważniejszą rzeczą przy pisaniu kodu (gdy tylko zacznie działać poprawnie). – jahroy

5

Wydaje że pracujesz nad projektem z programistami początkującymi. Zacznij refaktoryzacji, gdzie zawsze można zobaczyć:

return getNumberOfBooks() > 5 ? true : false; 
return isRed() ? true : false; 

ją zmienić:

return getNumberOfBooks() > 5; 
return isRed(); 
+1

Jeszcze lepiej: 'return (getNumberOfBooks()> 5);' To jest jeszcze bardziej czytelne (według mnie i zgodnie z konwencjami kodowania). – jahroy

+0

@jahroy masz rację, ale to tylko szczegół: P –

2

Oczywiście jest to zbędne redundancji.

Proponuję robić to w Eclipse:

  1. znaleźć wszystko, co pasuje do wyrażenia regularnego "return (coś), prawda? False" i zastąpić go tylko something
  2. i wszystko, co pasuje do wyrażenia regularnego „return (coś) fałsz: true”z (coś)

można delegować pisania tego wyrażenia regularnego do tych, który napisał ten projekt: D