Laden...

[gelöst] c# Stilfrage - Variablen Deklaration/Initialisierung

7 Antworten
1,893 Aufrufe
Letzter Beitrag: vor 17 Jahren
[gelöst] c# Stilfrage - Variablen Deklaration/Initialisierung

Hi!

Ich muss jetzt mal eine wichtige Frage stellen, bevor sich bei mir was für den Rest meines Lebens falsch einbürgert 😉

Ist es besserer c# Stil, Variablen, die ausschließlich innerhalb einer Function verwendet werden als privates außerhalb der Funktion (z.B. direkt hinter der Klassendeklaration) zu deklarieren, oder sollten diese in der Funktion deklariert werden. In Java galt so weit ich weiß letzteres als soll. Bei vielen .NET Klassen seh ich aber ersteres.

Wie ist das nun?

Variablen sollten nur da deklariert werden, wo sie auch gebraucht werden. Wenn also z.B. eine Variable nur innerhalb einer Methode benötigt wird, sollte diese auch nur in der Methode deklariert werden und nicht innerhalb der Klasse. Wird aber eine Variable für eine Kasse benötigt (weil sie für mehrere Methoden benötigt wird), gehört diese natürlich dann in die Klasse.

Bei vielen .NET Klassen seh ich aber ersteres.

Nenn mal bitte ein Beispiel.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

EDIT: da war jemand schneller als ich 😁

servus...

also ich kanns dir nicht 100%ig sagen

aber mein stil ist so:

wenn ich eine variable ausserhalb einer funktionen auch noch brauchen deklariere ich sie ausserhalb.
brauch ich diese nur wärend dem ablauf der funktion dekleriere ich sie in der funktionen.

also ich würde sagen je nach situation 😁

gruß

**Nur die Kenner können mit 10 Fingern bis 1023 zählen !!**
private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}

ah, ok (nach einem Beispiel such ich später noch mal). Ich finde das macht auch Sinn.

Ich hab aber noch eine Frage:

Sollte eine Variable möglichst auch gleich instantiiert werden

Microsoft.CSharp.CSharpCodeProvider cSharp = new Microsoft.CSharp.CSharpCodeProvider();

oder sollte die Deklaration und Instatiierung getrennt erfolgen, damit z.B. die Zeilen nicht zu lang werden?

Hi,
es gibt zugar eine Code Metric, also eine Maßeinheit für die Qualität des Codes, die sich nach der Anzahl der gemeinsamen Felder richtet (Lack of Cohesion in Methods). Von daher sollten Methoden, die sich keine Felder der Klasse teilen, in andere Klassen überführt werden oder statisch gemacht werden (viele Hilfsfunktionen sind so). Wenn du nun die lokalen Variablen eine Methode als Felder deklarierst, machst du diese Metric kaputt. 🙂

Sollte eine Variable möglichst auch gleich instantiiert werden

Microsoft.CSharp.CSharpCodeProvider cSharp = new Microsoft.CSharp.CSharpCodeProvider();  

oder sollte die Deklaration und Instatiierung getrennt erfolgen, damit z.B. die Zeilen nicht zu lang werden?

Im Gegensatz zu früher sollte man Variablen erst dann deklarieren und initialisieren wenn man sie braucht. Eine getrennte Deklaration macht man nur dann Sinn, wenn man sie wirklich brauch (häufig sowas wie: int a; if(x) a = 5; else a = 42; a++).
Wenn dir diese Zeile zu lang ist:

using Microsoft.CSharp; // :)
using CSCP = Microsoft.CSharp.CSharpCodeProvider; // Alias für die Klasse
var cSharp = new Microsoft.CSharp.CSharpCodeProvider(); // Mit C# 3 Compiler

variablen vor der ersten anweisung zu deklarieren macht in c# keinen sinn. die idee, es so zu machen ist wahrscheinlich noch von pascal inspiriert, dort war das noch pflicht.

loop:
btst #6,$bfe001
bne.s loop
rts

alles klar, dann weiß ich ja jetzt Bescheid! Ich hätte es vermutlich auch so gemacht - ist am logischsten.

Danke!