Должен ли я использовать имена конструкторов для моих классов? - PullRequest
0 голосов
/ 09 июля 2009

Я использую регистр верблюда, в котором первая буква всех имен переменных, функций и т. Д. В нижнем регистре. Но имена классов пишутся с большой буквы. Должен ли я использовать:

class Foo
{
   function foo()
   {

   }   
}

или:

class Foo
{
   function Foo()
   {

   }   
}

Какая конвенция лучше? Я в замешательстве.

Ответы [ 6 ]

11 голосов
/ 09 июля 2009

Именованные конструкторы являются соглашением PHP 4. И да, когда вы делаете это таким образом, вы должны соответствовать случаю класса.

Но PHP 4 - это старые новости в наши дни. PHP 5 является де-факто версией уже несколько лет. И PHP 5 использует постоянное имя конструктора __construct. Это всегда так, независимо от имени класса.

class a
{
  public function __construct()
  {}
}

class b
{
  public function __construct()
  {}
}
6 голосов
/ 09 июля 2009

Честно говоря, ни один.

Вы должны использовать __construct() Если, конечно, вы не прикованы к довольно архаичному PHP4, то вы точно соответствует названию класса.

5 голосов
/ 09 июля 2009

Имя конструктора должно соответствовать имени класса, поэтому Foo. Это соглашение не только в PHP, но и в языках, которые оно копирует: Java, C # и C ++. В этих языках идентификаторы чувствительны к регистру, поэтому имя должно быть идентичным.

3 голосов
/ 09 июля 2009

Если это вообще возможно, я бы пошел со вторым примером. То есть регистр конструктора должен совпадать с именем класса, потому что конструктор возвращает экземпляр класса, поэтому он должен быть назван одинаково (для согласованности).

Это может быть личное соглашение, но если у меня есть класс "FooBarBaz", я ожидаю, что конструктор будет называться "FooBarBaz", а не "fOOBARBAZ", "fooBarBaz", "foobarbaz" или что-либо еще.

Однако это зависит от языка:

  • Некоторые языки чувствительны к регистру, поэтому они вызывают это поведение и выдают ошибку, если регистр отличается.
  • В некоторых языках регистр не учитывается и не имеет значения.
  • Я не уверен, но некоторые языки могут заставить вас называть конструктор по-разному (не уверен, как компилятор распознает его как конструктор, но это не главное).
2 голосов
/ 09 июля 2009

Хотя это соглашение во многих языках, таких как Java или C #, это не так во всех.

Использование заглавных букв зависит от соглашений языка или библиотеки классов в контексте разработки.

Итак, на каком языке мы говорим?

Хорошо, так что PHP . В PHP действует соглашение Использование заглавных букв в именах классов .

Java также использует Имена классов с заглавной буквы , но методы внутри класса: camelCased .

C # конечно, все путает, используя заглавные имена классов и то же самое для методов .

1 голос
/ 09 июля 2009

Многие языки не дают вам выбора. Это включает в себя C ++, Java и C #. Имя конструктора - это имя класса, поэтому используйте заглавное имя конструктора только в том случае, если вы написали заглавную букву имени класса. (Если вы этого не сделаете, то компилятор даже не распознает его как конструктор.)

Для других языков используйте то же соглашение об именах, которое вы используете для остальных методов класса. Это так просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...