2009-07-09 9 views
0

Ich benutze camel case, die den ersten Buchstaben aller Variablennamen, Funktionen usw. kleingeschrieben hat. Aber die Klassennamen sind groß geschrieben. Sollte ich:Sollte ich Konstruktornamen für meine Klassen groß schreiben?

class Foo 
{ 
    function foo() 
    { 

    } 
} 

oder:

class Foo 
{ 
    function Foo() 
    { 

    } 
} 

die eine bessere Konvention ist? Ich bin verwirrt.

+4

Wird dies nicht von der Sprache bestimmt? –

+0

Ja, das hängt von der Sprache ab. Einige erzwingen es, einige haben andere Namen für einen Konstruktor. –

+0

guten Punkt, ich benutze PHP, die Groß-und Kleinschreibung unterscheidet Funktionsnamen, daher dieses Problem –

Antwort

11

Named Konstruktoren sind PHP 4 Konvention. Und ja, wenn du es so machst, solltest du den Fall der Klasse angleichen.

Aber PHP 4 ist alte Nachrichten in diesen Tagen. PHP 5 ist seit einigen Jahren die De-facto-Version. Und PHP 5 verwendet einen konstanten Konstruktornamen, __construct. Es ist immer das, ungeachtet des Namens der Klasse.

class a 
{ 
    public function __construct() 
    {} 
} 

class b 
{ 
    public function __construct() 
    {} 
} 
+0

Schneller um eine Minute! – jason

+0

Ich mag nicht __construct verwenden. Es ist hässlich. Die Konstruktormethode wird auch in Java verwendet, also mag ich das. Was ist der Vorteil von __construct? –

+0

Verstehe ich das richtig? Du verwendest PHP 5, schreibst aber absichtlich PHP 4 Style Constructors, weil du denkst, dass die PHP 5 Style "hässlich" sind? –

5

Der Name des Konstruktors sollte mit dem Klassennamen übereinstimmen, also Foo. Das ist die Konvention, nicht nur in PHP, sondern in den Sprachen, die es kopiert: Java, C# und C++. In diesen Sprachen wird die Groß-/Kleinschreibung beachtet, daher muss der Name identisch sein.

+3

Nun, Foo ist der alte Name Konstruktor. Der neue Stil verwendet __construct. Aber du hast immer noch recht :) – lavinio

+0

Guter Punkt. In meiner Welt ist PHP 4 die "neue" Version von PHP. Ich bin ein wenig hinter den Zeiten zurück. :-P –

2

Obwohl dies die Konvention in vielen Sprachen ist, wie Java oder C#, ist es nicht so in allen.

Die Groß-/Kleinschreibung hängt von den Konventionen für die Sprache oder Klassenbibliothek in Ihrem Entwicklungskontext ab.

Also, über welche Sprache sprechen wir?

Okay, also PHP. Die Konvention in PHP lautet Großbuchstaben Klassennamen.

Java verwendet auch Aktivierte Klassennamen, aber Methoden innerhalb einer Klasse sind camelcased.

C# natürlich verwirrt Dinge von Aktivierte Klassennamen und das gleiche für Methoden verwenden.

+0

php obwohl ich auch gerne wissen würde, was in java verwendet wird –

1

Viele Sprachen geben Ihnen keine Wahl. Dazu gehören C++, Java und C#. Der Name des Konstruktors ist der Name der Klasse. Daher sollten Sie den Konstruktornamen nur dann groß schreiben, wenn Sie den Klassennamen groß geschrieben haben. (Wenn dies nicht der Fall ist, wird der Compiler es sowieso nicht als Konstruktor erkennen.)

Für andere Sprachen verwenden Sie dieselbe Namenskonvention, die Sie für die übrigen Methoden der Klasse verwenden. Es ist so einfach.

3

Wenn überhaupt möglich, würde ich mit dem zweiten Beispiel gehen. Das heißt, der Fall des Konstruktors sollte mit dem Klassennamen übereinstimmen, da der Konstruktor eine Instanz der Klasse zurückgibt, so dass sie denselben Namen erhalten sollte (aus Konsistenzgründen).

Dies kann persönliche Konvention sein, aber wenn ich eine Klasse „foobarbaz“ haben, erwarte ich sonst der Konstruktor genannt werden „foobarbaz“, nicht „foobarbaz“, „foobarbaz“, „foobarbaz“ oder so etwas.

Allerdings ist es sprachabhängig:

  • Einige Sprachen sind case-sensitive, damit sie dieses Verhalten erzwingen und Fehler aus, wenn das Gehäuse unterscheidet.
  • Bei einigen Sprachen wird die Groß- und Kleinschreibung nicht berücksichtigt.
  • Ich bin mir nicht sicher, aber einige Sprachen können Sie zwingen, den Konstruktor anders zu benennen (nicht sicher, wie der Compiler es als Konstruktor erkennt, aber das ist nicht der Punkt).
6

Ehrlich gesagt, weder.

Sie sollten __construct() verwenden Es sei denn natürlich, Sie sind an die ziemlich archaisch PHP4 angekettet, dann stimmen Sie genau den Namen der Klasse.

Verwandte Themen