2009-07-24 3 views
3

Ich frage mich, warum Java mit seinen vielen Sicherheitsfunktionen und Einschränkungen es Entwicklern ermöglicht, einen Klassennamen mit einem Kleinbuchstaben zu beginnen, obwohl es eine extrem dumme Idee wäre, dies zu tun.Warum ist die Großschreibung von Klassennamen in Java (und anderen) nur ein Vorschlag und keine Regel?

Oder habe ich einen Fall übersehen, in dem dies nützlich sein könnte? Oder ist es einfach ein Fall, den Programmierer nicht herumzukommandieren?

+0

Dies ist das erste Mal, dass ich jemanden gehört habe, der nach Java macht * MEHR * wählerisch :) –

+0

javac ist wirklich lax. (BTW: -Xlint?) –

+0

Ehrlich gesagt, kann ich verstehen, dass es eine Konvention ist, aber ich verstehe wirklich nicht, warum es nicht so weit ist, "dumm" zu folgen. Ehrlich gesagt, der dümmste Code, den ich gelesen habe, ist, wo Konventionen befolgt werden und auf diese Weise verlassen werden, zB: "IbmConstructorses" statt "IBMConstructor" Oder wenn ein markenrechtlich geschützter App-Name mit einem Kleinbuchstaben-Präfix beginnt, wie _iBooks_, lass ihn verwenden 'iBooksView' nicht' IBooksView'. – user1944491

Antwort

2

Es ist, weil es gedacht wurde, dass eine Programmiersprache Konventionen in den vorherigen Jahren nicht erzwingen sollte. Aber jetzt ändert sich die Szene ein wenig und es herrscht eine günstige Atmosphäre für "Konventionen über Konfiguration" wie in Ruby on Rails.

In Zukunft werden wir vielleicht mehr der Convention-basierten Programmiersprachen/Frameworks sehen, die sich aus den Programmiermustern und Best Practices über die Zeiten ergeben.

2

Viele Dinge sind dumme Ideen - und die meisten von ihnen werden nicht vom Compiler erzwungen.

In der End - Klasse, Methode und Variablennamen Großschreibung ist eine Frage der Konvention, und dies gilt in den meisten Sprachen.

+0

Ja, es ist eine Frage der Konvention (d. H. Codierungsstandards), aber das ist kein Grund, warum es notwendig gewesen wäre, die Regel auf diese (schlampige) Art zu implementieren. –

0

Wahrscheinlich ein großer Faktor in diesem ist, dass, wenn Sie jemals so etwas an irgendeinem Punkt im Sprachenverlauf erlauben, Sie es nicht ändern möchten, um vorhandenen Code zu brechen.

+0

Es wäre in Ordnung gewesen, so zu starten, und später die Einschränkung zu entfernen, gab es ein Problem damit (sagen wir, Schnittstelle zu einer anderen Sprache). –

0

Es gibt eine Reihe von Möglichkeiten, wie die JLS Schlamperei ermöglicht. Reihenfolge der Modifikatoren zum Beispiel. Das wahrscheinlich schlimmste Vergehen ist die Einrückung, obwohl dies von der Grammatik nicht vernünftig gehandhabt werden kann. Ein besonderes Problem bei Klassennamen ist, dass, IIRC, in der Grammatik nicht klar ist, welche Bezeichner Klassen-/Schnittstellennamen sind und welche nicht. Strenge bei Deklarationspunkten ist möglich, macht aber den Rest der Grammatik komplizierter.

Wahrscheinlich kommt es auf Zeitdruck an. Und schon damals galt Java als herrisch. Die Leute waren damit beschäftigt, C und C++ mit allen möglichen Konventionen zu schreiben (normalerweise anders als in Bibliotheken), was zu allerlei Verwirrung führte, aber das schien sie nicht zu interessieren.

0

Perl hat eine "Use Strict" -Richtlinie, die einige (aber nicht diese) Best Practices durchsetzt. Warum fügen Sie nicht die Option -strict in javac hinzu, die diese Best-Practice-Konventionen für den kompilierten Code erzwingt? Dies könnte immer noch die Verwendung von .jar- oder .class-Bibliotheken erlauben, die nicht dem Standard folgen, sondern ihn für alles Neue erzwingen, das kompiliert wird (.java) ... Oder noch besser, standardmäßig einschalten und eine -relaxed-Direktive bereitstellen die Vollstreckung abzuschalten, damit alle dazu ermutigt werden, dem Standard näher zu folgen, ohne diejenigen zu bestrafen, die aus irgendeinem Grund nicht dazu in der Lage sind.