2009-07-09 15 views
0

J'utilise un boîtier de chameau qui a la première lettre de tous les noms de variables, fonctions, etc minuscules. Mais les noms de classe sont capitalisés. Dois-je utiliser:Dois-je capitaliser les noms de constructeurs pour mes classes?

class Foo 
{ 
    function foo() 
    { 

    } 
} 

ou:

class Foo 
{ 
    function Foo() 
    { 

    } 
} 

Quelle est une meilleure convention? Je suis confus.

+4

N'est-ce pas déterminé par la langue? –

+0

Ouais, cela dépendra de la langue. Certains l'appliquent, d'autres ont des noms différents pour un constructeur. –

+0

bon point, j'utilise PHP qui a des noms de fonction insensible à la casse, d'où ce numéro –

Répondre

11

Les constructeurs nommés sont conformes à la norme PHP 4. Et oui, quand vous le faites de cette façon, vous devriez faire correspondre le cas de la classe.

Mais PHP 4 est une vieille nouvelle de nos jours. PHP 5 est la version de facto depuis plusieurs années. Et PHP 5 utilise un nom de constructeur constant, __construct. C'est toujours ça, quel que soit le nom de la classe.

class a 
{ 
    public function __construct() 
    {} 
} 

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

Plus rapide d'une minute! – jason

+0

Je n'aime pas utiliser __construct. C'est dégueulasse. La méthode constructeur est aussi utilisée en java alors j'aime ça. Quel est l'avantage de __construct? –

+0

Est-ce que je comprends bien? Vous utilisez PHP 5, mais délibérément écrire des constructeurs de style PHP 4, parce que vous pensez que ceux de style PHP 5 sont "moche"? –

5

Le nom du constructeur doit correspondre au nom de la classe, donc Foo. C'est la convention, non seulement en PHP mais dans les langages qu'il copie: Java, C# et C++. Dans ces langages, les identifiants sont sensibles à la casse, donc le nom doit être identique à.

+3

Eh bien, Foo est le nom du constructeur à l'ancienne. Le nouveau style utilise __construct. Mais tu as toujours raison :) – lavinio

+0

Bon point. Dans mon monde PHP 4 est la "nouvelle" version de PHP. Je suis un peu en retard. :-P –

2

Bien que ce soit la convention dans de nombreux langages, tels que Java ou C#, ce n'est pas le cas dans tous.

La capitalisation dépend des conventions de bibliothèque de langage ou de classe dans votre contexte de développement.

Alors, de quelle langue parlons-nous?

OK, donc PHP. La convention en PHP est à Capitaliser les noms de classe.

Java utilise également noms de classe capitalisées, mais les méthodes dans une classe sont notationCamel.

C# bien sûr, à l'aide d'embrouille les choses capitalisée classe noms et les mêmes pour Méthodes.

+0

php bien que je voudrais aussi savoir ce qui est utilisé dans Java –

1

Plusieurs langues ne vous donnent pas le choix. Cela inclut C++, Java et C#. Le nom du constructeur est le nom de la classe, donc mettez le nom du constructeur en majuscule si et seulement si vous avez activé le nom de la classe. (Si ce n'est pas le cas, le compilateur ne le reconnaîtra même pas comme constructeur.)

Pour les autres langues, utilisez la même convention d'appellation que celle utilisée pour le reste des méthodes de la classe. C'est aussi simple que ça.

3

Si possible, je voudrais aller avec le deuxième exemple. C'est-à-dire que le cas du constructeur doit correspondre au nom de la classe, car le constructeur renvoie une instance de la classe, de sorte que son nom soit identique (par souci de cohérence). Ceci peut être une convention personnelle, mais si j'ai une classe "FooBarBaz", je m'attends à ce que le constructeur s'appelle "FooBarBaz", pas "fOOBARBAZ", "fooBarBaz", "foobarbaz" ou quoi que ce soit d'autre.

Cependant, il dépend de la langue:

  • Certaines langues sont sensibles à la casse, donc ils forcent ce problème et erreur si le boîtier est différent.
  • Certaines langues sont insensibles à la casse et ne s'en soucient pas.
  • Je ne suis pas sûr, mais certains langages peuvent vous obliger à nommer le constructeur différemment (je ne sais pas comment le compilateur le reconnaît en tant que constructeur, mais ce n'est pas le cas).
6

Honnêtement, ni l'un ni l'autre.

Vous devriez utiliser __construct() À moins que vous ne soyez bien sûr lié au PHP4 plutôt archaïque, alors vous correspondez exactement au nom de la classe.

Questions connexes