2009-07-09 103 views
0

我使用具有所有變量名,函數等的第一個字母的駝峯案例。但類名是大寫的。我應該使用:我應該爲我的類使用構造函數名嗎?

class Foo 
{ 
    function foo() 
    { 

    } 
} 

或:

class Foo 
{ 
    function Foo() 
    { 

    } 
} 

這是一個更好的慣例?我很困惑。

+4

這不是由語言決定的嗎? – 2009-07-09 03:54:19

+0

是的,這取決於語言。有些強制執行它,有些對構造函數有不同的名稱。 – 2009-07-09 03:55:24

+0

好點,我使用的PHP具有不區分大小寫的函數名,因此這個問題 – 2009-07-09 03:56:14

回答

11

命名的構造函數是PHP 4約定。是的,當你這樣做時,你應該匹配班級的情況。

但是PHP 4現在是個新聞。幾年來,PHP 5一直是事實上的版本。而PHP 5使用了一個常量構造函數名稱__construct。無論班上有什麼名字,總是這樣。

class a 
{ 
    public function __construct() 
    {} 
} 

class b 
{ 
    public function __construct() 
    {} 
} 
5

構造函數的名稱應該與類名匹配,所以Foo。這是慣例,不僅在PHP中,而且在複製的語言中:Java,C#和C++。在這些語言中,標識符區分大小寫,因此名稱必須是纔是相同的。

2

儘管這是許多語言(如Java或C#)中的約定,但並非如此。

大小寫取決於開發環境中的語言或類庫約定。

那麼,我們在說什麼語言?

好的,所以PHP。 PHP中的慣例是大寫類名稱

的Java還採用大寫的類名,而是一個類中的方法是駝峯格式

當然C#,通過使用大寫的類名與同爲方法帶來混亂。

1

許多語言不會給你一個選擇。這包括C++,Java和C#。構造函數的名稱是類的名稱,所以當且僅當使用大寫的類名稱時,大寫構造函數名稱。 (如果不這樣做,那麼編譯器無論如何都不會將其識別爲構造函數)。

對於其他語言,使用與其他類的方法相同的命名約定。就這麼簡單。

3

如果可能,我會去第二個例子。也就是說,構造函數的情況應該與類名匹配,因爲構造函數正在返回類的實例,所以它應該被命名爲相同的(爲了一致性)。

這可能是個人慣例,但如果我有一個類「FooBarBaz」,我期望構造函數被命名爲「FooBarBaz」,而不是「fOOBARBAZ」,「fooBarBaz」,「foobarbaz」或其他任何東西。

但是,它是依賴於語言:

  • 一些語言是大小寫敏感的,因此,他們迫使這種行爲,就會因錯誤如果外殼不同。
  • 某些語言不區分大小寫,不關心。
  • 我不確定,但有些語言可能會強制你以不同的方式命名構造函數(不知道編譯器如何識別它作爲構造函數,但那不是重點)。
6

老實說,也沒有。

你應該使用__construct()除非你被鏈接到相當古老的PHP4,那麼你完全匹配類的名稱。

相關問題