• Reset your password

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log in
Hjem
Linuxin 2025

Breadcrumb

  • Hjem
  • forums
  • Programmeringssprog og if-sætningninger - "negative" eller "positive"

Hvad kan du med 100% sikkerhed sige, at du har stemt?

Resultater

1
0% (0 stemmer)
2
0% (0 stemmer)
Schrödinger
100% (1 stemme)
Antal stemmer: 1
Af froksen | 12.11.2016 09:27

Programmeringssprog og if-sætningninger - "negative" eller "positive"

Programmering

Hej alle jer gode mennesker



Jeg har et spørgsmål, som egentlig ikke har specifikt noget at gøre med GNU/Linux. Men i diverse programmeringssprog, nu særlig fokus på C++/Qt, hvad er så "best practice" når man anvender if-sætninger. Er det at anvende den "positive" eller "negative" tilgang.



Altså hvis dette sker, så gør dette - eller at hvis dette ikke sker, da afslut (return). Herunder to simple kodeeksempler (kunne f.eks. være i en metode)



"Positive"



if(a==0)

{

//Gør dette

}





"Negative"



if(a != 0)

{

return;

}



//Gør dette, hvis er nul.





Jeg er bevidst om, at der kan være grunde til at anvende det ene eller det andet. Men er der nogen fordele eller ulemper ved den ene frem for den anden? Nu tænker jeg særligt på memory, og læsbarhed.



På forhånd tak.

  • Log in to post comments

Kommentarer6

8 år 6 måneder siden

Permalink

Indsendt af denmagisketangopirat den 12. november 2016 kl. 14:21

Permalink

Jeg mener at have læst et

Jeg mener at have læst et sted at den menneskelige hjerne har nemmest ved at forstå den "positive" logik.



F.eks. manden er høj er bedre end manden er ikke lav.

  • Log in to post comments

8 år 6 måneder siden

Permalink

Indsendt af johnnyec den 13. november 2016 kl. 10:59

In reply to Jeg mener at have læst et by denmagisketangopirat

Permalink

re: Jeg mener at have læst et

Noget er der nok om det. Jeg skulle på et tidspunkt besvare en spørgeskemaundersøgelse fra kræftens bekæmpelse. Der skulle jeg på en liste med 20 ting vælge de 10 jeg syntes var _mindst_ vigtige.



Det kortsluttede min hjerne så meget at jeg efter et par forsøg helt opgav at besvare undersøgelsen :-o

  • Log in to post comments

8 år 6 måneder siden

Permalink

Indsendt af denmagisketangopirat den 12. november 2016 kl. 14:26

Permalink

Nu nærlæste jeg lige dit

Nu nærlæste jeg lige dit spørgsmål igen og i dit eksempel handler nok ikke så meget om positiv og negativ logik, men mere om flere "return" i en funktion.



Se derfor denne:

http://softwareengineering.stackexchange.com/questions/18454/should-i-r…




  • Log in to post comments

8 år 6 måneder siden

Permalink

Indsendt af froksen den 13. november 2016 kl. 12:49

Permalink

@denmagisketangopirat, det

@denmagisketangopirat, det giver vel egentlig OK mening, at den positive tilgang er lettere læselig egentlig. Kan være, at man skal anvende det lidt mere :)

Men ja, mit eksempel er nok (kan jeg se) ret meget som i det link du har henvist til. Så det kigger jeg lige lidt nærmere på. :)

  • Log in to post comments

8 år 6 måneder siden

Permalink

Indsendt af Kristho den 15. november 2016 kl. 15:19

Permalink

Det er et lidt svært

Det er et lidt svært spørgsmål, fordi det ikke som sådan handler om hvorvidt man bruger den positive eller den negative tilgang.



Min holdning er at man skal vurdere det i hvert enkelt tilfælde. Det kommer an på om man er tilhænger af at returnere hurtigt eller returnere én gang.



f.eks.:



public int CalculateSomething(int x, int y) {

if (x == 0) {

return 0;

}

if (y == 0) {

return 0;

}



return x + y;

}





Her har jeg lavet "guard-clauses", så vi hurtigst muligt får returneret fra funktionen, hvis parametrene ikke overholder vores pre-conditions (at x og y ikke må være 0). Det gør det også lettere at forstå når man læser koden, fordi man kan tage tingene ét statement ad gangen i stedet for at skulle jonglere med ANDs og ORs.



Men når det så er sagt, så tror jeg det er rigtigt, at den positive tilgang er nemmere at forstå - for mig er det bare det mindste af problemerne :D



(Bemærk: Jeg er normalt C# udvikler, så min kode er ikke C++ - men tror du fanger pointen alligevel ;) )


  • Log in to post comments

8 år 6 måneder siden

Permalink

Indsendt af thorbjørntux den 18. november 2016 kl. 20:03

Permalink

Early returns

Kristho har en pointe her, for det er et 'filosofi'-spørgsmål. Dog vil jeg gerne reklamere for early returns (i C++)



Jeg synes at



if (a) {

calcb(a);

if (!b) {

for (something) {



}

}

}





er rodet i forhold til f.eks



if (!a)

return;

calcb(a);

if (b)

return;

for (something) {



}





Min påstand er at det med early returns er lettere at matche braces og læse koden ...



PS: C++ og Qt .... fantastisk valg ;)

  • Log in to post comments

Svar søges

2 stk Jolla C2 sælges 0
Den er go 0
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

Det første forumindlæg efter installation af Forum-modulet 8
Test 1
Vanilla OS 12
Nye forum-indlæg viser sig kun 1 gang 1
Vil alle forumindlæg vise sig to gange 1
Hjælp til remote terminal vindue? 3
PCLinuxOS 19
Kan ikke boote på installation 24
80-20 reglen 1
Skærmlys fader ud på min bærbare 8
32 bit distro på max 700mb der stadig understøttes 26
Har vi nogen Linux konsulenter i Slagelse området? 3
Virkelig 7
gnome-software? 3
Archer T2U AC600 Wireless Dual Band USB Adapter 26
En farverig APT 3.0 udgivelse imponerer med sine nye funktioner 2
Unix's fødsel 2
Linux Mint 13
"Intet realistisk alternativ" - mig i r*ven 1
German state moving 30,000 PCs to LibreOffice 6

Copyright © 2025 Company Name - All rights reserved

Developed & Designed by Alaa Haddad