2009-07-09 3 views
0

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

class Foo 
{ 
    function foo() 
    { 

    } 
} 

или:

class Foo 
{ 
    function Foo() 
    { 

    } 
} 

Что лучше условность? Я смущен.

+4

Разве это не определено языком? –

+0

Да, это будет зависеть от языка. Некоторые применяют его, некоторые имеют разные имена для конструктора. –

+0

Хорошая точка, я использую PHP, который имеет регистрозависимые имена функций, поэтому эта проблема –

ответ

11

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

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

class a 
{ 
    public function __construct() 
    {} 
} 

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

Быстрее на одну минуту! – jason

+0

Мне не нравится использовать __construct. Его чертовски уродливо. Метод конструктора также используется в java, поэтому мне это нравится. В чем преимущество __construct? –

+0

Я правильно понимаю это? Вы используете PHP 5, но намеренно пишете конструкторы стиля PHP 4, потому что считаете, что стиль PHP 5 «уродлив»? –

5

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

+3

Ну, Foo - это имя конструктора старого стиля. Новый стиль использует __construct. Но вы все еще правы :) – lavinio

+0

Хорошая точка. В моем мире PHP 4 - это «новая» версия PHP. Я немного отстаю от времени. :-P –

2

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

Капитализация зависит от языков или конвенций библиотеки классов в контексте разработки.

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

Хорошо, поэтому PHP. Конвенция в PHP составляет . Заглавные буквы:.

Java также использует Капитализированное класса имен, но методы в пределах класса camelCased.

C# конечно, сбивает с толку то, с помощью Капитализированное класса Имена и то же самое для методов.

+0

php, хотя я также хотел бы знать, что используется в java –

1

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

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

3

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

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

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

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

Честно, ни один.

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

Смежные вопросы