[Python] Flow Control vraag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Xuj
  • Registratie: November 2009
  • Laatst online: 05-06 11:08
Beste Tweakers,

Nu zit ik niet zozeer met een probleem, maar ik vroeg me wel het volgende af.

Gegeven het volgende stukje code.

Python: vraag.py
1
2
3
4
5
def foo(bar):
    if bar:
        return True
    else:
        return False


Nu zouden we die Else er ook af kunnen laten, doen jullie dat ook? Of is dit iets wat code-leesbaarheid vermindert en dus daar zou moeten blijven.

Zoals ik al zei, niet echt een probleem. Vroeg me alleen af wat normaal gedaan wordt.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Kwestie van smaak. In dit geval zou ik trouwens wel zoiets doen, als dat mag in Python:
Python:
1
2
def foo(bar):
    return bar

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Jeanpaul145
  • Registratie: Juli 2007
  • Laatst online: 15-07 14:52
Xuj schreef op vrijdag 29 oktober 2010 @ 16:12:
Beste Tweakers,

Nu zit ik niet zozeer met een probleem, maar ik vroeg me wel het volgende af.

Gegeven het volgende stukje code.

Python: vraag.py
1
2
3
4
5
def foo(bar):
    if bar:
        return True
    else:
        return False


Nu zouden we die Else er ook af kunnen laten, doen jullie dat ook? Of is dit iets wat code-leesbaarheid vermindert en dus daar zou moeten blijven.

Zoals ik al zei, niet echt een probleem. Vroeg me alleen af wat normaal gedaan wordt.
In dit geval kan je de else achterwege laten, maar dat is natuurlijk niet altijd zo.
Als je code achterwege kan laten is het meestal een goed idee dit te doen als je in een 1-mans project bezig bent.
Werk je in een team dan zou ik zonder meer aanraden de style van het team te hanteren (wat de voorkeur dan ook moge zijn).

Maar ik zou het eerlijk gezegd anders aanpakken:
Python: vraag_v2.py
1
2
def foo(bar):
    return bool(bar)


Let op de cast naar een boolean value; Als je dit niet doet kan foo() (wat eigenlijk gewoon de identiteitsfunctie wordt in mijn voorbeeld) "vreemde" waarden returnen als er in bar iets anders dan een bool wordt gestopt.

[ Voor 17% gewijzigd door Jeanpaul145 op 29-10-2010 16:23 ]

:j


Acties:
  • 0 Henk 'm!

  • Xuj
  • Registratie: November 2009
  • Laatst online: 05-06 11:08
Hmm... Zoiets dacht ik al.

Het stukje code is opgezet voor deze vraag en ziet er daarom zo uit.
Het kan inderdaad ook zo in Python.

Acties:
  • 0 Henk 'm!

Verwijderd

In dit specifieke geval zou het dus niks uitmaken en maakt het inderdaad de code wat overzichtelijker aangezien er een duidelijke constructie is. Als je echter wat meer code in en rondom de constructie gaat krijgen wil je het ook liever in een if-else constructie (ook dit i.v.m. de leesbaarheid) en is het misschien zelfs nodig (stel dat je met Integers als returnTypes werkt dan kan dit niet alleen 1 of 0 zijn maar ook 2.

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17:56

Robtimus

me Robtimus no like you

In Eclipse (Java dus) krijg ik waarschuwingen als ik zo'n else laat staan. Dus ja, ik laat hem meestal wel.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Persoonlijk laat ik de else er altijd bij staan ja. Dan is het bij grotere blokken code veel overzichtelijker of je alle cases wel/niet afvangt.

In veel gevallen zal het bij mij dan ook een 'if...elif...else raise TypeError' zijn.

Blog [Stackoverflow] [LinkedIn]

Pagina: 1