6 Stimmen

Wie man Felder und Eigenschaften am besten benennt

Microsoft sagt Felder und Eigenschaften müssen sich nicht nur durch die Groß- und Kleinschreibung unterscheiden. Wenn sie also wirklich dieselbe Idee repräsentieren, wie sollten sie sich dann unterscheiden?

Hier ist das Beispiel von Microsoft, was man nicht tun sollte:

using System;
namespace NamingLibrary
{    
    public class Foo    // IdentifiersShouldDifferByMoreThanCase    
    {        
        protected string bar;

        public string Bar        
        {            
            get { return bar; }        
        }    
    }
}

Sie geben keine Hinweise darauf, wie dies aussehen sollte. Was machen die meisten Entwickler?

11voto

Jon Skeet Punkte 1325502

Nein, sagt Microsoft öffentlich sichtbare Mitglieder müssen sich nicht nur durch den Fall unterscheiden:

Diese Regel wirkt sich nur auf öffentlich sichtbare Mitglieder aus.

(Das gilt auch für geschützte Mitglieder, da sie für abgeleitete Klassen sichtbar sind).

Das ist also in Ordnung:

public class Foo
{
    private string bar;
    public string Bar { get { return bar; } }
}

Meine persönliche Regel ist, dass ich sowieso keine anderen privaten Felder zulasse, dann ist es kein Problem.

Brauchen Sie wirklich geschützte Felder? Wie wäre es, wenn Sie die Eigenschaft mit einem geschützten Setter versehen, wenn Sie sie von abgeleiteten Klassen aus ändern können möchten?

7voto

Scott Smith Punkte 3591

Das mag einige Entwickler da draußen empört aufschreien lassen, aber ich mag Namenskonventionen, die es mir ermöglichen, Member-Variablen von lokalen Variablen auf einen Blick zu unterscheiden.

Deshalb mache ich oft etwas wie:

public class Foo
{
    protected string _bar;

    public string Bar
    {
        get { return _bar; }
    }
}

...oder...

public class Foo
{
    protected string mBar;    // 'm' for member

    public string Bar
    {
        get { return mBar; }
    }
}

0voto

Cory Charlton Punkte 8721

Ich mag:

protected string _Bar;

public string Bar        
{            
    get { return _Bar; }        
}

0voto

Luhmann Punkte 3802

Ich denke, die meisten Entwickler stellen den Mitgliedsvariablen einen Unterstrich voran:

protected string _bar;

0voto

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X