webForumDet fria alternativet

Hungarian notation?

64 svar · 3 206 visningar · startad av johannormen · sida 2 av 4

spangoMedlem sedan juni 20008 205 inlägg
#21

Gladh skrev:

int i = 1; är faktiskt inte mycket mer läsbar än var i = 1;. Eftersom ingen vet vad i egentligen är för variable. Är det åldern på någon, eller hur mycket pengar du har på ett konto, eller kanske det bara är ett index som skall räknas upp...

Nä, men det beror på att du inte ser koden där den deklareras (vilket iofs är ett argument för att variabler ska deklareras där de första gången används, inte alla först i metoden som vissa förespråkar). Namn blir inte bättre för att de är längre. Or did I miss the memo? ;)

for (int customerListIndex = 0; customerListIndex < customerList.Length; ++customerList)
    if (customerList[customerListIndex].IsObsolete) customerList[customerListIndex] = null;
// versus
for (int i = 0; i < customerList.Length; ++i)
    if (customerList[i].IsObsolete) customerList[i] = null;
NickemannenMedlem sedan aug. 20003 575 inlägg
#22

spango skrev:

Nä, men det beror på att du inte ser koden där den deklareras (vilket iofs är ett argument för att variabler ska deklareras där de första gången används, inte alla först i metoden som vissa förespråkar). Namn blir inte bättre för att de är längre. Or did I miss the memo? ;)

for (int customerListIndex = 0; customerListIndex < customerList.Length; ++customerList)
    if (customerList[customerListIndex].IsObsolete) customerList[customerListIndex] = null;
// versus
for (int i = 0; i < customerList.Length; ++i)
    if (customerList[i].IsObsolete) customerList[i] = null;

Håller med är det bara en forslinga som är någorlunda kort är det ju helt ok med ett i. Eftersom man ser vad i är i huvudet och hur i används.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#23

jag har äntligen börjat komma ifrån detta med Hungarian Notation, sitter förtillfället hos en arbetsgivare, som jag då även sagt upp ifrån, med CASP (Classic ASP, ASP 3.0) och där använder jag flitigt hungarian notation.

Men i och med att jag sitter hemma typ varje dag i C#, så har jag börjat använda camel Casing och Pascal Casing, så de skall användas.

Har även börjat använda mig av underscore framför fält (visst heter det så). ex (bara för att illustrera):

private string _message  = "Standardmeddelande";
...  
public void Send() { 
 ... 
 EmailMessage email = new EmailMessage();
 email.Message = _message; 
}

Förut använde jag:

private string message = "Standardmeddelande";
...  
public void Send() { 
 ... 
 EmailMessage email = new EmailMessage();
 email.Message = this.message; 
}

Den nya arbetsgivaren kommer jag att börja göra Vb.net hos. Brrr.. håller på hemma och försöker varva mellan C# och Vb, har även tanken att skriva om en av mina föreningars hemsidor bara för att vässa Vbn lite grann.

Men förvirrad är jag .. jag saknar delegate, jag saknar de enkla typkonverteringarna från C#, och allt annat postivt som gör koden mindre rörig :e

Nog om mitt nya jobb.. det är inte därför jag svarar här. :)

JAreMANNENMedlem sedan aug. 20002 272 inlägg
#24

Även jag kör Classic ASP i arbetet och där är det Hungarian Notation som gäller.
Antar att det hänger med sen "begynnelsen" i applikationerna så därför ärvs det vidare i projektet :)
Är det nya projekt så slopas det dock.

Det lilla jag sitter med C#/.NET så tillämpas camel/Pascal Casing.

GeinMedlem sedan sep. 20005 700 inlägg
#25

Fredde Mannen skrev:

Har även börjat använda mig av underscore framför fält (visst heter det så). ex (bara för att illustrera):

private string _message  = "Standardmeddelande";
...  
public void Send() { 
 ... 
 EmailMessage email = new EmailMessage();
 email.Message = _message; 
}

Förut använde jag:

private string message = "Standardmeddelande";
...  
public void Send() { 
 ... 
 EmailMessage email = new EmailMessage();
 email.Message = this.message; 
}

Varför använder du leading underscore? Har ni inte nyckelordet this i dött nät?

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#26

Gein skrev:

Varför använder du leading underscore? Har ni inte nyckelordet this i dött nät?

Jag skrev ju att jag använde this, men av någon orsak har jag börjat gå över till leading underscore..

Kanske beror på för att jag tycker det är sexigare än this i dött nät. Och framför allt är leading underscore, mycket sexigare än: Me i Vb dött nät :)

johannormenMedlem sedan sep. 200888 inlägg
#27

Ang i variabel i looper:
Problemet med i är att det är lite magiskt, dvs anonymt. Jag är själv lite lat ibland gällande detta att inte skriva fullt ut vad i betyder vilket man borde.

Arbetar mer och mer på att bli av med i och x dock är det enkelt och smidigt att använda dem om man vill visa demo kod där koden i sig inte gör nått.

Ang this.:

Jag personligen körde this. från början tyckte det var snyggt. Nu är min åsikt annorlunda, this. är lika mkt smuts som att använda hungarian notation. Det är 5 tecken kladd framför mina fält respektive metoder.

this.name
this.lastname
this.password
this.number

vs

name
lastname
password
number

tycker det är lätt snyggast utan... Och framför allt tydligare.

Ang _ eller m_ så använder jag själv _ jag gillar det egentligen inte men MS är envisa och vill inte lägga färgkod på dessa members så det är ett sätt att visa att mina metoder nyttjar class scopes members.

Har lagt in feedback två ggr till VS .Net rörande sätta färg på detta då många JAVA IDE redan har det. Vi får väl hoppas folk rörstar på denna idé..:

grå-lila färg eller nått... SÅÅÅÅ snyggt ... slippa massa untandagsnotationer.

Mvh Johan

SPiNMedlem sedan mars 20007 896 inlägg
#28

'this' är ju så självförklarande det bara blir. Att variabeln är en instans-variabel, och inte en metod- eller block-variabel.

Och att använda 'i' i en loop är också självförklarande... 'i' är helt enkelt en förkortning på 'index', vilket man i 99 fall av 100 är ute efter att använda när man loopar. Att istället skriva 'indexForMyArrayWithSerialKillers' är ju helt enkelt dumt.

johannormenMedlem sedan sep. 200888 inlägg
#29

SPiN skrev:

'this' är ju så självförklarande det bara blir. Att variabeln är en instans-variabel, och inte en metod- eller block-variabel.

Och att använda 'i' i en loop är också självförklarande... 'i' är helt enkelt en förkortning på 'index', vilket man i 99 fall av 100 är ute efter att använda när man loopar. Att istället skriva 'indexForMyArrayWithSerialKillers' är ju helt enkelt dumt.

Beror faktiskt på.
Ex magic numbers kan många tycka är självklara oxå.

var name = arrayOfSomething[2];

Där 2 är magic number vilket man skall undvika... För vad i hela världen är egentligen 2?

this. är smuts o känns lite amatörmässigt (IMO) samma med notationen my<något>... usch o fy...... Syntax som inte behövs i en OOP värld. De tillför egentligen inget direkt mervärde mer än att this. ger trevlig intellisensen... Som tur är rensar bla ReSharper bort alla this. Så det kan vara till en fördel att använda this. för att koda snabbare men sen städa bort dem när man är klar.

Kan dock förstå de som kör this. istället för att ha ex _ eller m_ bara för att VS .Net IDE inte har ett bra sätt att tydligöra members. men jag föredrar faktiskt _ istället för att ha massa redundant kod.

SPiNMedlem sedan mars 20007 896 inlägg
#30

Att använda 'this' är ju lika redundant som att använda '_'. :OO Det är ju absolut inte självklart att alla fält eller metoder med underscore innan refererar till en instans-variabel/-metod alla gånger. Tänk vad snopen du blir när någon gör så här:

public void DoIt() {
     var m = GetIt();
     var _p = GetItFromM(_m);
     ...

    ...
     _ConvertMyScribbles(_t);
}

Du som var så inne på att namnge variabler på rätt sätt har ju nu ingen aning om _t är en lokal variabel eller en variabel för hela instansen. Ett krasst exempel, det behöver du inte påpeka, men du förstår nog var jag vill komma. ;)

'this' underlättar ju allt sådant, i och med att det är ett nyckelord. Det går inte att använda this utan att man pekar på en instansvariabel, då skriker kompilatorn - vilket inte är fallet med underscore.

Syntax som inte behövs i en OOP värld.

Jag håller absolut med om notationen 'my' innan resten av variabelnamnet - det är förkastligt. Men 'this' är ju faktiskt sprunget ur just OOP-världen, för att referera tillbaka till den aktuella instansen.

johannormenMedlem sedan sep. 200888 inlägg
#31

SPiN skrev:

Att använda 'this' är ju lika redundant som att använda '_'. :OO Det är ju absolut inte självklart att alla fält eller metoder med underscore innan refererar till en instans-variabel/-metod alla gånger. Tänk vad snopen du blir när någon gör så här:

public void DoIt() {
     var m = GetIt();
     var _p = GetItFromM(_m);
     ...


    ...
     _ConvertMyScribbles(_t);
}

Du som var så inne på att namnge variabler på rätt sätt har ju nu ingen aning om _t är en lokal variabel eller en variabel för hela instansen. Ett krasst exempel, det behöver du inte påpeka, men du förstår nog var jag vill komma. ;)

'this' underlättar ju allt sådant, i och med att det är ett nyckelord. Det går inte att använda this utan att man pekar på en instansvariabel, då skriker kompilatorn - vilket inte är fallet med underscore.

Jag håller absolut med om notationen 'my' innan resten av variabelnamnet - det är förkastligt. Men 'this' är ju faktiskt sprunget ur just OOP-världen, för att referera tillbaka till den aktuella instansen.

Ja ett ottroligt kass exempel :P men har sin nytta med det du vill visa.
Med _ på members menar jag självklart instans variablerna. Dvs aldrig deklarera lokala metod scopes variabler med _

Som kodare hos en organisation förväntar jag mig att man alltid har en guideline som alla följer... På så vis bör inte ovan kod kunna uppstå. Gör den det så har man slarvat och en code review (vilket jag tycker alla borde ha) skall då rätta till detta. Om man inte har en guideline bör man stoppa Pipen och ta fram en sådan så alla kodar med samma dialekter...

Det är skillnad på redundans o redundas just this. är ett anrop som dessutom har flera tecken, medans _ är en del av ett namn. Båda indikerar vart de lever men smutsar ner olika mkt i koden.

Jag gillar egentligen inte _ men det lätt före this. och me. ... Jag vill som sagt ha en färgkod på instans members...

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#32

Ja en färgkod vore inte dumt för instans medlemmar.

Dock tycker jag mig att C# har bättre färgkodning än vad Vb har, i alla fall i Express varianterna. Lite utanför huvudämnet dock. :)

GeinMedlem sedan sep. 20005 700 inlägg
#33

Fredde Mannen skrev:

Jag skrev ju att jag använde this, men av någon orsak har jag börjat gå över till leading underscore..

Kanske beror på för att jag tycker det är sexigare än this i dött nät. Och framför allt är leading underscore, mycket sexigare än: Me i Vb dött nät :)

Aha, läste förbi ditt kod exempel från förr. Trodde väl lite naivt att man aldrig var så dum att man gick från this till _ ;)

johannormen skrev:

Ja ett ottroligt kass exempel :P men har sin nytta med det du vill visa.
Med _ på members menar jag självklart instans variablerna. Dvs aldrig deklarera lokala metod scopes variabler med _

Som kodare hos en organisation förväntar jag mig att man alltid har en guideline som alla följer... På så vis bör inte ovan kod kunna uppstå. Gör den det så har man slarvat och en code review (vilket jag tycker alla borde ha) skall då rätta till detta. Om man inte har en guideline bör man stoppa Pipen och ta fram en sådan så alla kodar med samma dialekter...

Det är skillnad på redundans o redundas just this. är ett anrop som dessutom har flera tecken, medans _ är en del av ett namn. Båda indikerar vart de lever men smutsar ner olika mkt i koden.

Jag gillar egentligen inte _ men det lätt före this. och me. ... Jag vill som sagt ha en färgkod på instans members...

I Eclipse så syns alla instansvariabler med en blå färg som standard. Vill jag vara övertydlig (eller om det redan finns en scope-variabel med samma namn) så skriver jag this.variabelnamn. Men oavsett hur jag gör så syns det direkt att det är en instansvariabel.

Jag använder ofta samma variabelnamn i konstruktorerna där det är befogat. Typ:

public class Car {

    Engine engine

    public Car(Engine engine) {
        this.engine = engine;
    }
}

Betydligt snyggare och mindre rörigt än underscore imho.

johannormenMedlem sedan sep. 200888 inlägg
#34

Gein skrev:

Aha, läste förbi ditt kod exempel från förr. Trodde väl lite naivt att man aldrig var så dum att man gick från this till _ ;)

I Eclipse så syns alla instansvariabler med en blå färg som standard. Vill jag vara övertydlig (eller om det redan finns en scope-variabel med samma namn) så skriver jag this.variabelnamn. Men oavsett hur jag gör så syns det direkt att det är en instansvariabel.

Jag använder ofta samma variabelnamn i konstruktorerna där det är befogat. Typ:

public class Car {

    Engine engine

    public Car(Engine engine) {
        this.engine = engine;
    }
}

Betydligt snyggare och mindre rörigt än underscore imho.

Fördelen du har är att du får annan färg på dem :)
Det får inte vi i VS .Net :( inte än i alla fall...

BlixtsystemsMedlem sedan maj 2005704 inlägg
#35

Gein skrev:

Betydligt snyggare och mindre rörigt än underscore imho.

Kan inte alls hålla med.
Har kört en del med "this.variabelnamn" men tycker det blir betyligt enklare att läsa men underscore.
Är man konsekvent så ser man genast sammanhanget med underscore men "this." blir ju som ett extra lager man skall gå igenom för att komma till själva varibeln och det gör i mitt tycke att koden går betyligt trögare att läsa.

GeinMedlem sedan sep. 20005 700 inlägg
#36

Blixtsystems skrev:

Kan inte alls hålla med.
Har kört en del med "this.variabelnamn" men tycker det blir betyligt enklare att läsa men underscore.
Är man konsekvent så ser man genast sammanhanget med underscore men "this." blir ju som ett extra lager man skall gå igenom för att komma till själva varibeln och det gör i mitt tycke att koden går betyligt trögare att läsa.

Som jag skrev så färgmarkeras alla instansvariabler, i den IDE vi använder på jobbet, oavsett om man skriver this eller inte. Därför utelämnar jag oftast this om det inte behövs.

Men även fast det är på det viset så tycker jag att this är mer tilltalande än underscore.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#37

Gein skrev:

Aha, läste förbi ditt kod exempel från förr. Trodde väl lite naivt att man aldrig var så dum att man gick från this till _ ;)

jag tror det nog främst har med att jag endast sitter hemma och skriver i C#. Och känner mig fram på vad de olika Naming Conventions säger.

jag tycker inte att det är dumt eller så med att använda this eller ex Me i vb då. :)

Men givetvis måste jag ju rätta mig efter den kodstandard som lyder under det företag man jobbar åt, så vida inte man kan komma med en förklaring och ett varför till att ex. _ skulle vara bättre än this.

Det finns ju i alla fall klart och tydligt olika vägar, huvudsaken är väl att det funkar inom företaget.

Ta mig inte på allvar nu... se nedan. :stud

Tänk er;
this.subject det är 4 tecken mer än _subject

tänk om vi nu måste använda det 10 ggr i klassen vi skapar. Ja, då har vi 30 extra tangent nedtryckningar, bara för subject. Det borde resultera i att fingrarna får jobba ett antal ggr mer än att inte använda _ :P :P *tihi*

jag är tröööööött

johannormenMedlem sedan sep. 200888 inlägg
#38

Fredde Mannen skrev:

jag tror det nog främst har med att jag endast sitter hemma och skriver i C#. Och känner mig fram på vad de olika Naming Conventions säger.

jag tycker inte att det är dumt eller så med att använda this eller ex Me i vb då. :)

Men givetvis måste jag ju rätta mig efter den kodstandard som lyder under det företag man jobbar åt, så vida inte man kan komma med en förklaring och ett varför till att ex. _ skulle vara bättre än this.

Det finns ju i alla fall klart och tydligt olika vägar, huvudsaken är väl att det funkar inom företaget.

Ta mig inte på allvar nu... se nedan. :stud

Tänk er;
this.subject det är 4 tecken mer än _subject

tänk om vi nu måste använda det 10 ggr i klassen vi skapar. Ja, då har vi 30 extra tangent nedtryckningar, bara för subject. Det borde resultera i att fingrarna får jobba ett antal ggr mer än att inte använda _ :P :P *tihi*

jag är tröööööött

hehe... Det råder klart delade meningar ang this. eller ej...
Men du har nämt det viktigaste rörande svaret på ämnet...

Det viktiga är att alla i organisationen gör på samma sätt. vare sig det är this. eller ej.

BlixtsystemsMedlem sedan maj 2005704 inlägg
#39

Gein skrev:

Som jag skrev så färgmarkeras alla instansvariabler, i den IDE vi använder på jobbet, oavsett om man skriver this eller inte. Därför utelämnar jag oftast this om det inte behövs.

Men även fast det är på det viset så tycker jag att this är mer tilltalande än underscore.

Lyxigt med färgmarkerade instansvariabler, men det är väl lite skönt med kod som inte är beroende av specifik IDE funktionalitet för att vara tydlig?

Med "this." tycker jag dock man offrar för mycket läsbarhet medans ett underscore är ett enkelt sätt att markera att det är instansvariabel som inte alls stör mig varken att skriva eller läsa. Enligt mig är det nästan lika smidigt som färgmarkering men oberoende av IDE...men smaken är som baken.

Peter SMedlem sedan dec. 20025 483 inlägg
#40

Blixtsystems skrev:

Med "this." tycker jag dock man offrar för mycket läsbarhet medans ett underscore är ett enkelt sätt att markera att det är instansvariabel som inte alls stör mig varken att skriva eller läsa. Enligt mig är det nästan lika smidigt som färgmarkering men oberoende av IDE...men smaken är som baken.

Men som tidigare påpekats gör ju prefixet this det än mer självklart att det är en instansvariabel. Det går inte att ta miste på.

Underscore som prefix är precis lika redundant som "str", "int", "cb" eller något annat, och är verkligen något som "kladdar ned koden" (till skillnad från this).

Men det är ju såklart bara min åsikt (och lite OT).

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)