Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Lemik
Založen: 30. 07. 2007 Příspěvky: 138
|
Zaslal: 26. březen 2008, 12:04:34 Předmět: |
|
|
Sice to přímo nesouvisí s IDE, ale nechci zakládat extra topic.
Mám otázku pro ty, co používají ternární operátor( ?: styl php a c++ ).
Jakým způsobem ho zapisujete, myšleno pro co nejlepší přehlednost kódu
zkoušel jsem zatím podobné patvary:
kód: |
bez úprav:
$user = isset( $_SESSION ) ? $_SESSION[ 'user' ] : 'unknown' ;
první možnost
$user = isset( $_SESSION ) ?
$_SESSION[ 'user' ] :
'unknown' ;
další:
$user = isset( $_SESSION )
?
$_SESSION[ 'user' ]
:
'unknown' ;
a dál:
$user = isset( $_SESSION )
?
$_SESSION[ 'user' ]
:
'unknown' ;
či ještě hůř:
$user = isset( $_SESSION )
?
$_SESSION[ 'user' ]
:
'unknown' ;
|
( představte si to se zvýrazněním syntaxu, oparátory tučně )
Nemáte někdo lepší nápad? |
|
Návrat nahoru |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 26. březen 2008, 12:12:11 Předmět: |
|
|
Pokud se to vejde na jeden řádek, tak používám tvar "bez úprav", jinak "první možnost". Ty další tvary mi přijdou strašně ukecaný a nepřehledný - to už by bylo imho přehlednější napsat if. |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 26. březen 2008, 13:11:35 Předmět: |
|
|
A já jen doplním Augiho pravidlo - v dnešních IDE se všechno vejde na jeden řádek, a tím se řídím _________________
|
|
Návrat nahoru |
|
|
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 26. březen 2008, 13:35:41 Předmět: |
|
|
pokud to vleze na jeden radek pak ternarni operator - jinak tam ternarni IMHO nema co delat a ma to byt IF aby to bylo visualne jasne |
|
Návrat nahoru |
|
|
Weny Sky
Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 26. březen 2008, 16:38:50 Předmět: |
|
|
jj vsechno na jeden radek, treba :
kód: |
out_URL = url.length() > 30 ? std::string("...") + ((url = url.substr(url.length()-27)), url.substr(url.find("/") == std::string::npos ? 0 : url.find("/"))) : url.c_str(); |
|
|
Návrat nahoru |
|
|
Tringi
Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 26. březen 2008, 18:52:54 Předmět: |
|
|
Ternární operátor používám jen ve zjevných případech a pokud se díky němu kód jen trochu znepřehlední, pak silně zvažuju nahrazení ifem.
Řeším jím ale pouze výrazovité konstrukce, nikdy ne tok a logiku kódu.
Ternární operátor taky zvažuju, zpřehlední-li funkci, zde např ušetřím až 4 řádky :
kód: |
return p ? p->result : false;
|
Co se týče zalamování, pak asi takto:
kód: |
return p ? p->result
: false;
|
nebo, jsou-li názvy operandů delší, takto:
kód: |
return pointer_to_something
? pointer_to_something->result
: false;
|
Dále, nevím jak moc velká prasárna to je, ale někdy jej používám i takhle:
kód: |
std::printf ("%u: %s\n",
faults,
faults ? "FAILED" : "passed");
|
_________________ WWW | GitHub | TW |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 26. březen 2008, 20:03:39 Předmět: |
|
|
Ternarny operator nepouzivam. If staci. (A namiesto loopov pouzivam if + goto, to je kvalitka Jokin' ) _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 26. březen 2008, 20:22:06 Předmět: |
|
|
if - elseif - ... - elseif - else, mělo by to být zarovnané do sloupců:
kód: |
return x > y ? x+y :
y > z ? y+z :
z > x ? x+z :
0;
|
Na jeden řádek pouze pokud je jenom ?: _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 26. březen 2008, 22:31:45 Předmět: |
|
|
A to odsazujes 7 mezerami nebo mas v editoru nejake "inteligentni" odsazovani? _________________ Award-winning game developer |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 26. březen 2008, 23:15:16 Předmět: |
|
|
Mezerami. (tabulátor se chová skoro jako tab, akorát dělá mezery místo \t) _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
ladik-BigBoss
Založen: 28. 07. 2007 Příspěvky: 162
|
Zaslal: 27. březen 2008, 00:27:57 Předmět: |
|
|
nijak casto ternarni operator nepouzivam. posledne jsem ho musel pouzit v makru ve skolnim ukolu, na odsazeni kaslat, hlavni je dobry komentar protoze neprehledny kod je porad neprehledny kod at tam das mezer kolik chces:
kód: |
// (meze)? ((hodnota_bitu)? (vraceni 1) : (vraceni 0)) : (chyba, 1))
// operator carky vraci 1, protoze Error je typu void a GetBit musi nabyvat
// nejake hodnoty z pohledu kompilatoru
#define GetBit(p,index) \
((index>=0 && index<(sizeof(p)*8))? \
((p[index/(sizeof(unsigned long)*8)]&(1<<(index%(sizeof(unsigned long)*8))))?1:0) : \
(Error("Index %ld mimo rozsah 0..%ld\n", (long)index, (long)(sizeof(p)*8)), 1))
// end GetBit
|
|
|
Návrat nahoru |
|
|
Al
Založen: 23. 10. 2007 Příspěvky: 196
|
Zaslal: 31. březen 2008, 20:59:28 Předmět: |
|
|
Já píšu na jeden řádek vše, co se do něj jen vejde... |
|
Návrat nahoru |
|
|
Yossarian
Založen: 28. 07. 2007 Příspěvky: 274 Bydliště: Šalingrad
|
Zaslal: 31. březen 2008, 23:49:58 Předmět: |
|
|
ladik-BigBoss napsal: |
nijak casto ternarni operator nepouzivam. posledne jsem ho musel pouzit v makru ve skolnim ukolu, na odsazeni kaslat, hlavni je dobry komentar protoze neprehledny kod je porad neprehledny kod at tam das mezer kolik chces:
kód: |
// (meze)? ((hodnota_bitu)? (vraceni 1) : (vraceni 0)) : (chyba, 1))
// operator carky vraci 1, protoze Error je typu void a GetBit musi nabyvat
// nejake hodnoty z pohledu kompilatoru
#define GetBit(p,index) \
((index>=0 && index<(sizeof(p)*8))? \
((p[index/(sizeof(unsigned long)*8)]&(1<<(index%(sizeof(unsigned long)*8))))?1:0) : \
(Error("Index %ld mimo rozsah 0..%ld\n", (long)index, (long)(sizeof(p)*8)), 1))
// end GetBit
|
|
[OT] a ted to ukradnu, necham pristim prvakum do ijc a ty pujdes pred komisi, cha![/OT] |
|
Návrat nahoru |
|
|
ladik-BigBoss
Založen: 28. 07. 2007 Příspěvky: 162
|
Zaslal: 1. duben 2008, 08:42:39 Předmět: |
|
|
[ot] Ha! a ja ti pak nakopu prdel tak ze te doma nepoznaj! [/ot]
navic takovy snippet by me asi pred disciplinarku nedostal |
|
Návrat nahoru |
|
|
|