Forum: Python, returvärden

Forum huvudsida -> Programmering -> Python, returvärden

Sidor: 1

Till botten

Independence 16:25 - 27:e Augusti 2007 | Post #1
Administratör
Inlägg: 1800


Skicka PM
Jag satt och pillade lite på ett program som jag använder till Blinkenshell här om dagen, och insåg att jag är väldigt inkonsekvent på hur jag använder returvärden.
Det brukar börja med att jag har en funktion som utför någonting, och att den returnerar True/False beroende på om det går bra eller inte. Sedan inser jag att jag vill kunna säga exakt vilket av 4 olika som fel har inträffat.
Ibland returnerar jag då en massa strängar, typ "Ok" om det går bra och annars ett "beskrivande" felmeddelande. Sedan kollar jag i den anropande funktionen om svaret är "Ok", om inte så printar jag ut strängen som returneras till användaren. Denna metod känns ju dock lite skakig, om jag här t ex skulle bestämma mig för att ändra så att funktionen returnerar "Det gick bra" istället för "Ok" så skulle ju det hela trilla ihop om jag glömde att ändra på alla andra ställen i koden.
Då har jag istället på vissa ställen olika typer av sifferkoder som returneras. 0 vid ok, 1,2,3 vid olika felmeddelanden och sedan en lista som mappar 1,2,3 till olika strängar med felmeddelanden som man kan printa till användaren.
Ibland blir det även en liten kombination, vanligtvis att jag returnerar en speciell sträng (troligtvis någon maniuplation av indata till funkionen) om saker gick bra, eller None om det vart fel.
Hur gör ni, vilken metod tycker ni är bäst? (Skriv gärna metoder som jag inte använt här också!) Ska man helt konsekvent köra på en, tex sifferkoder som mappas till felmeddelanden i en lista, eller ska man blanda lite och ta den som passar?
Jag tycker själv att sifferkoder känns mest skalbar och stabil, men det känns också lite overkill ibland. Ofta kan man ju slippa undan med mindre kod, och det är ju alltid bra.
Diskussionen är självklart inte bara för Python, men det var det jag råkade skriva på just nu såSmiley

Edit: Kom på att man kan skicka exceptions också, något som jag inte är så duktig med måste jag erkänna.

-------------------------

Vi är riddarna som säger fiskbulle!



Senast redigerad 16:28 - 27:e Augusti 2007


ozamosi 16:33 - 27:e Augusti 2007 | Post #2
Administratör
Inlägg: 1129


Skicka PM
Meh... Du kan ju inte lägga till exceptions i en Edit, precis när jag skulle berätta att de är lösningen på all världens problemSmiley (vilket de förmodligen inte är, men ändå)

-------------------------
Ljusblå



Independence 16:45 - 27:e Augusti 2007 | Post #3
Administratör
Inlägg: 1800


Skicka PM
Tror jag ska övergå till bara True/False (eller sträng/False) och exceptions. Det känns nog finare än en sån där lista med sifferkoder osv ändåSmiley

-------------------------

Vi är riddarna som säger fiskbulle!





InDigo176 17:47 - 27:e Augusti 2007 | Post #4
Medlem
Inlägg: 72


Skicka PM
Läskig lösning:
Man kan ju returnera en tuple där del 1 är True eller False (bra eller dåligt) och del 2 är en beskrivning i en sträng Smiley

-------------------------
Sebban

Senast redigerad 17:47 - 27:e Augusti 2007


FunkyChicken 22:56 - 27:e Augusti 2007 | Post #5
Nyhetsredaktör
Inlägg: 800


Skicka PM
Riktiga enums istf för hemsnickrade listor? Eller finns kanske inte. Men exceptions måste väl vara standard.




Independence 11:47 - 28:e Augusti 2007 | Post #6
Administratör
Inlägg: 1800


Skicka PM
Vad jag vet så finns inte enums i Python

-------------------------

Vi är riddarna som säger fiskbulle!





Sidor: 1

Forum huvudsida -> Programmering -> Python, returvärden
Atom feed

Du får inte posta i den här tråden | Till toppen