Just nu i M3-nätverket
Gå till innehåll
marb

Var deklarera variabler?

Rekommendera Poster

Under en kod-review vi gjorde på jobbet påpekades det att jag deklarerade dom flesta variablerna jag använde i början på funktionerna. Killen som påpekade ansåg att man skulle deklarera dom när dom först användes.

 

 

Är nyfiken på vad ni har för åsikter angående detta.

 

 

//Martin

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag brukar deklarera variablerna strax innan de används, jag tycker det blir mera lättläst kod. (Om nu programspråket/kompilatorn tillåter det).

 

Men det har egentligen ingen betydelse, helt en smaksak.

Men är man flera programmerare i ett projekt är det bra om man gör på samma sätt.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag brukar för det mesta deklarera mina variabler på ett och samma ställe. Oftast högst upp i funktionen.

 

På så vis får man liksom en palett med variabler att arbeta med.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Det kom en skola när c++ kom, där man påtalade att variabler skulle deklareras i "sista sekund" och detta hade att göra med sättet som de första kompilatorerna reserverade minnet på stacken för variabler om jag inte minns fel, och att detta resulterade i något minneseffektivare kompilerad kod i slutändan. Detta till skillnad från de tidigare rena c-kompilatorerna som gjorde saker på ett annat sätt. Som gammal assemblerprogrammerare har jag dock svårt att se hur detta har något annat än med kompileringsprocessen att göra och ur den synvinkeln känns grupperad deklaration mer vettig.

 

Organisatoriskt tycker jag att det är det självklart att lägga alla deklarationer i början av logiska block och med ex. .Net är det så man skall jobba. Dels finns den rent sammanfattande aspekten av detta, men viktigare är att du minimerar scope-misstag, som i miljöer som .net förvisso fångas upp redan vid kompileringen men i andra miljöer kan skapa svårupptäckta buggar.

 

[inlägget ändrat 2007-10-20 13:13:33 av Anjuna Moon]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag håller med om att variabler skall deklareras där de används. Ännu tydligare: en variabel skall definieras precis utanför det scope den används. Om två variabler används i samma scope, deklareras den som som har längst synlighet (används längst ned i koden) först. Ju längre en variabel är synlig (i scope) desto bättre namn på variabeln dessutom, för att så att säga bättre komma ihåg intentionen av variabeln. Om en variabel är kortlivad kan man (ofta) förstå variabelns intention genom den omkringliggande koden.

 

Om en variabel bara används i en liten del av en funktion, brukar jag desutom använda extra måsvingar för att så att säga minska variabelns scope. (I princip visar detta var man kan skapa nya funktioner, vilket man ibland inte orkar).

 

Result används över hela funktionen, alltså deklareras och initieras den tidigt. Final är bra att att använda för att visa att variabeln inte byter värde under resans gång.

 

function Result foo()
{
    final Result result = new Result()
    ..

   {  // maybe a separate function (for now use a separate clause instead
     NameGenerator gen = new NameGenerator();
     String name = gen.generateRandomName();
     result.setName(name);
   }
    // name not used anymore (going out of scope)

   final int age; 
   {
       // only used to caluclate age
       AgeCalc calc  = new AgeCalc();
       age = calc.calc(new Date());
   }

   result.setAge(age);
   // do something more with age
   for (int i = 0; i < age; i++) {
      .. have no imagination
   }

  return result;

}

 

 

 

 

[inlägget ändrat 2007-10-30 16:37:30 av zaphman]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...