Es gibt Situationen, in denen ein in Parameter übergebener Name in einen neuen Typ umgewandelt wird, der Name des übergebenen Objekts jedoch ähnlich bleiben sollte. Für den Fall von Klassenattributen können wir diesen Operator verwenden, aber was ist mit lokalen Variablen in Funktionen? Welche Kodierungskonvention ist weit verbreitet.
Beispiel,
void MyFunc(BaseClass myPara)
{
DerivedClass _mypara = (BaseClass)myPara;
}
oder im gegenteil
void MyFunc(BaseClass _myPara)
{
DerivedClass mypara = (BaseClass)_myPara;
}
oder andere Konventionen
Antworten:
Das Präfixieren von Parametern oder lokalen Variablen mit einem Unterstrich ist in C # nicht sehr idiomatisch, es ist nicht sehr einfach zu lesen und wird nicht oft verwendet (obwohl es legal ist, können Sie dies also tun, wenn Sie möchten).
Der beste Name für den Parameter und die Variable ist ein beschreibender Name. Sie müssen sich überlegen, warum Sie den Typ ändern, was der Grund für die Besetzung ist. Dann sollten Sie in der Lage sein, 2 verschiedene Namen zu finden. Wenn Sie beispielsweise eine "Person" übergeben und in einen "Kunden" konvertiert haben, können Sie in den Variablennamen möglicherweise "Person" und / oder "Kunde" verwenden.
Wenn Ihnen wirklich keine zwei verschiedenen Namen einfallen, würde ich "as" im Namen verwenden (dazu gab es vor einigen Tagen eine Frage auf dieser Site ). Beispielsweise würden Sie "myParaAsDerived" für die lokale Variable verwenden.
Wenn es überhaupt möglich ist, würde ich dies nicht verwenden, und ich würde mir überlegen, welches Problem Sie lösen und welche aussagekräftigen Namen verwendet werden könnten. Wenn alles andere fehlschlägt, ist dies ziemlich lesbar.
quelle
Erstens mit
Ist eindeutig falsch! Da viele C # -Codierungsstandards ein "_" -Präfix für alle Feldnamen verwenden ! Ihr Code muss für andere Programmierer leicht verständlich sein, daher sollte Code nicht so geschrieben werden, dass viele C # -Programmierer in die Irre geführt werden.
In Anbetracht all die Vorteile der kleinen Methoden, ich persönlich sehe keine Notwendigkeit für eine Namenskonvention lokale Variablen von Parametern zu trennen. Wenn Ihre Methoden über so viele Parameter und lokale Variablen verfügen, dass Sie ohne Namenskonvention nicht sagen können, was vor sich geht, treten größere Probleme auf. (Dies wird im Clean Code Book , einem Java-Buch, gut behandelt , aber ich fand es als C # -Programmierer immer noch von großem Nutzen.)
quelle
Wenn Sie ihnen etwas voranstellen möchten, sollten Sie
p_
als Parameter verwenden: Im Allgemeinen würden Sie wahrscheinlich viele Leute ärgern, wenn Sie dies tun. ABER seien Sie konsequent, tun Sie es nicht nur an einem Ort, nur weil Sie zwei verschiedene Namen für Variablen benötigen, denen Sie den gleichen Namen geben möchten.Eine gute allgemeine Regel für die Benennung von Variablen lautet wie folgt:
Wenn Sie nur einen Objekttyp haben, benennen Sie ihn nach seiner Funktion:
Wenn Sie mehrere Namen nach Funktion und Spezialisierung haben:
quelle
m_Whatever = p_Whatever;
- es wäre umständlich, den beiden Bezeichnern bedeutungsvoll unterschiedliche Namen zu geben. Aber ich habe angefangen zu fragen, ob diese Fälle häufig genug sind, um die konsequente Konvention zu rechtfertigen.Mit C # -Namenskonventionen haben Sie:
Und bitte halten Sie sich von der ungarischen Notation fern. Es ist sinnlos und entspricht nicht den C # -Konventionen.
quelle
Das Unterstreichen bei der Benennung von Variablen kann unnötig sein, da wir das Schlüsselwort "this" haben, um spezifisch auf Variablen auf Klassenebene zu verweisen. Wenn Sie mehr über Variablennamenskonventionen von Experten erfahren möchten, empfehlen wir Ihnen einen Blick auf das berüchtigte Papier "Ottingers Regeln für Variablen- und Klassennamen" von Tim Ottinger, ein Artikel, der von dem Mentor für saubere Codierung, Robert C. Martin, unterstützt wird .
Ottinger sagt, dass Ihr Code so gut wie möglich lesbar bleiben muss, wie gut geschriebene Prosa, also ...
public void Function(string p_Parameter1, string p_Parameter2)
... wäre lesbarer als ...
public void Function(string parameter1, string parameter2)
... wobei Parameter1 und 2 beschreibende Namen für die entsprechenden Variablen sind.
Hier ist der Link, auf jeden Fall einen Blick wert: Link
quelle
Ich glaube an das Suffixieren von Parametern: string s_, int i_, etc
Ich glaube auch, dass die Parmnamen so kurz und allgemein wie möglich sein sollten.
Nun zu den Gründen:
Alles hat Nachteile, und ob Sie etwas verwenden oder nicht, hängt stark davon ab, wie es in Ihren aktuellen Stil passt.
quelle
s
undi
sind Kurznamen, da dies nur ein Beispiel ist. IOW Ich glaube, das ist überhaupt nicht ungarisch - ich glaube, Sie interpretieren einen Kurznamen falsch, der nur der Klassiker ist,string s
oderint i
ich kann mir keinen besseren Namen vorstellen, aber mit aufgeklebten Unterstreichungssuffixen .