2008-11-19 12 views

Antwort

2

In C++ zumindest sollten Sie vermeiden Konstanten Kapitalisierung Verwechslung mit #defines zu vermeiden, die kanonisch werden aktiviert.

0

Das ist der offizielle und de-facto-Standard für die Benennung von Konstanten in der Java-Sprache. Wenn Sie also Java nicht als archaische Sprache betrachten, ist die Antwort vermutlich nein.

+0

Also, weil Java vor über einem Jahrzehnt etwas von C/C++ genommen hat, bedeutet das, dass wir die Praxis fortsetzen müssen? –

+0

Ich habe nicht vorgeschlagen, dass Sie die Praxis fortsetzen sollten, ich habe lediglich darauf hingewiesen, dass diese Konvention immer noch weit verbreitet ist und daher nicht als obskur angesehen werden kann. –

12

Sie sollten tun, was die Konvention in der Sprache/Plattform ist, die Sie verwenden. Zum Beispiel sollten .NET-Konstanten pascaliert sein, z.

SomeConstant 

In anderen Sprachen ist es wahrscheinlich anders.

0

Welche Sprache?

Nein, aber Sie sollten sie in eine Klasse oder einen Namespace einfügen.

1

Wenn Sie eine vorhandene Codebasis hinzufügen oder beibehalten, tun Sie, was sie tun, um Personen nicht zu verwirren. Wenn dies ein neues Projekt ist, vereinbaren Sie eine Vereinbarung mit Ihrem Team und machen Sie das.

Wenn es Ihr eigenes Projekt ist, tun Sie, was Sie gewohnt sind.

2

Eigentlich kann dies nicht sprachunabhängig sein. Einige Sprachen haben eine Tradition, Großbuchstaben zu verwenden, andere nicht. Zum Beispiel ist in Großbuchstaben C++ in der Regel für Enums und definiert nur, während Java Großbuchstaben liberaler verwendet.

2

Persönliches Gefühl ist, dass Namenskonventionen sollten etwas bedeuten, und sind gut, solange sie Bedeutung bieten. Anders als das Beste ist es, Konventionen der Sprache zu befolgen, in der Sie arbeiten. Ansonsten, anstatt für den Leser zu vereinfachen, verdecken Sie (leicht). Zum Beispiel in Java

THIS_CONSTANT 

ist eine gängige Möglichkeit, statische Finale zu schreiben. Andere Sprachen haben unterschiedliche Stile.

1

Ich kapitalisieren meine Konstanten nicht. In der Tat verwende ich "const" so proaktiv, dass es keinen Sinn macht, sie zu kapitalisieren. Zum Beispiel:

const size_t size = v.size(); 
for(size_t i = 0; i < size; ++i) ... 

Diese Verwendung von ‚const‘ kann nutzlos erscheinen, aber es gibt Vertrauen, dass ‚Größe‘ ist eine Momentaufnahme dieser Größe des Vektors zu diesem Zeitpunkt. Der Compiler wird sicherstellen, dass dies für den gesamten Bereich gilt.

Ich kapitalisiere jedoch meine MACROS. Die Verwendung von #define zum Deklarieren von Konstanten ist jedoch ein anderes Thema.

0

Ich kapitalisiere und verwende Unterstreichung für .Net, Java und PHP.

0

Ich bevorzuge Konstanten, um Großbuchstaben zu sein, es sei denn, es gibt einen Grund nicht zu.

4

Die All-Caps-Konvention wurde für Makros erfunden, wo es einen guten Grund gab zu schreien: "Achtung! Ein Makro!" (Es gibt viele Möglichkeiten, Unordnung zu stiften.) Eine Konstante auf der Ebene der Sprache ist eine zahmere Bestie, aber die Konvention blieb bestehen.

Verwenden Sie Ihr Urteil; Wo es eine starke Konvention gibt, wie ich es in der Java-Welt vermute, ist es eine Verschwendung von Energie, um dagegen anzukämpfen.

5

Effektive Java empfiehlt Ihnen uns Großbuchstaben und Unterstriche für static final Werte, die unveränderlich sind. Ansonsten sind sie nicht konstant.

heißt

public static final String ID_FOO_BAR = "org.acme.foo.bar"; 
public static final List<String> sList = new List<String>(); 
public static final List<String> LIST = Collections.unmodifiableList(sList); 
public static final String[] sArray = new String[] {"foo", "bar", "baz" }; // FindBugs complains, if this is public. 
public static final List<String> ARRAY = Arrays.asList(sArray); 

Hier ist das Zitat:

Vereinbarungsgemäß haben solche Felder Namen von Großbuchstaben aus, mit Unterstrichen durch getrennte Wörter. Es ist wichtig, dass diese Felder entweder primitive Werte oder Verweise auf unveränderbare Objekte enthalten.

... Wenn andersartige Objekte wie Konstanten aussehen, werden sie als solche verwechselt.

+0

Werden Logger als "private static final" deklariert, um als LOGGER deklariert zu werden? –

+0

Sie wollen, dass ich Monade sage, oder? Ich bin mir nicht sicher tbh: Ich könnte Argumente in beide Richtungen machen. – jamesh

+1

Ich denke, dass "Logger" eher als "Logger" und nicht als "LOGGER" bezeichnet werden sollte, da das Schreiben in Kleinbuchstaben einfacher ist. Außerdem ist die Formatierung in der IDE für Variablen, die als "statisch" deklariert sind, normalerweise kennzeichnend. –

Verwandte Themen