Hej detta är en helt onödig fråga och en smaksaksfråga men jag är intresserad. "this. innan globala variabler". this. bör väl kunna medföra minst lika mycket som _ och m, Jag personligen kör med _ för medlemsvariabler, mkt för att många av MS exempel och genererade kod för så för att hålla samma guideline som dem för att underlätta för andra. Dvs varför ha olika notations dialekter och inte köra med en gemensam? Själv föredrar jag detta när jag skriver i C# Fredrik, Johan, Kodstandard _ eller this?
Detta gäller för medlemsvariabler i en klass.
När jag provade ReSharper för något år sedan så ville den ta bort alla "this." eftersom det var rendundant och jag körde med _ för att visa att det var en medlemsvariabel detta körde jag med fram till någon månad sedan då jag testade Microsoft Source Analysis (ett liknande verktyg av Code Analysis fast denna kontrollerar formateringen av koden samt kommenteringen). Microsoft Source Analysis vill att man har this. innan globala variabler och när man anropar metoder inom klassen.
private string name;
Skall anropas:
alt1 this.name =
alt2 _name =
alt1 this.DoJob();
alt2 DoJob();
En annan fråga har this något med prestandan att göra? Jag antar inte det, men har den det?
Jag tror jag gillar this.name och this.DoJob(); eftersom då blir det ett konsekvent sätt att fort se när man kodgranskar aha den här variabeln eller den här metoden finns inuti klassen. Jag har visserligen sätt varianter av _DoJob(); som visar att metoden är inom klassen men det är jättefult tycker jag.Sv: Kodstandard _ eller this?
är en motsägelse eftersom globala variabler inte tillhör någon instans.
I C# kan bara medlemmar i klassen (eller i en basklass) anropas så alla anrop är ju inom klassen.
Vet inte om det är en uttalad guide men prefixet "_" brukar användas på fält som inte skall användas direkt för att det finns en property.
dvs:
Ta bort alla "this". Det tillför inget.
Använd _ för medlemsvariabler som inte skall användas direkt.
Några brukar använda ett prefix på alla medlemsvariabler (t.ex. m eller m_) för att skilja dem från argument i koden.
private string mVar1;
public void fund(string var2) {
mVar1 = var2;
}Sv:Kodstandard _ eller this?
Läser jag koden och ser
this.name eller _name så antar jag att båda är medlemsvariabler. Dock kan det vara lite farligt om någon döper sin lokala variabel till _något.
Och det jag menade med att om man kör med this. så kan man även använda det på metoder för att tydligt flaggar här anropar jag en medlemsmetod.
m dock varnar ju t.ex. Code analysis för eftersom den anser att hungarian notation inte är något vi bör använda.
Läser jag koden ochSv: Kodstandard _ eller this?
this. använde jag mkt i börjen men slutade med pga _ dock önskade jag att MS la till en färg på dessa i VS .Net... Att jag har _ är för att snabbt förstå att här i min kod använder jag en medlemsvariabel. Men hade man haft en färg på dem så hade det ökat läsbarheten ännumera och man hade kunnat slippa _ så vida andra IDE kör färgkod på dem oxå. Återstår o se om detta kommer häna i VS .Net, skicka in en post till MS om detta och fick svar, bra idé... Men sen såg jag inte så mkt mer av det. :-( och i VS .net 2008 kom det inte med. Trist.
Mvh JohanSv: Kodstandard _ eller this?
private string _var1;
public void MethodName(string str) {
_var1 = str;
}
Sitter jag med VB, blir det följande
Private string StrVar1
Public Sub MethodName(ByVal pStr As String)
StrVar1 = pStr;
End Sub
Enda gångerna jag använder mig av this eller Me är när jag anropar properties inom klassen. Av någon orgundlig anledning. :)
Sv:Kodstandard _ eller this?
varför hungarian notation i VB? Det är ju rätt onödigt och inte så snyggt alltid heller.
Hungarian notation kan mer eller mindre passa dynamiska språk för att tydliggöra varianter dock har vi ju så bra IDE idag att en mus over visar typen, samt bra namngivelser förklarar för oss vad det är för typ.
name är oftast inte int.
number är oftast inte string etc...
_ är to m mer vanligt i VB än C# bara för att VB inte är case sensative medans C# är det.
Dvs man kan ha lokala members som name och sen prperties med samma namn med stor pokstav. Name. I VB la man till _ på name för att just lösa detta problem på ett annat sätt men utan att behöva den onödiga hungarian notationbeskrivningen dvs. str, int etc framför en variabel namn.
Mvh JohanSv: Kodstandard _ eller this?
Det är en skada som ligger kvar sedan ASP 3.0 tiden, då satt jag i notepad resp. crimson editor och skrev, där hade man inget sådant lyx. :) Dock sitter jag än idag kvar med lite ASP 3.0-system som arbetsgivarna inte riktigt har planer på att göra om till .NET. Inte än i alla fall.
Så Johan, du får helt enkelt komma och slå mig på fingrarna när jag skriver med hungarian notation :D