就「良好的代碼」而言,將set和get方法合併爲一個方法是可以接受的嗎?像這樣:將getter和setter組合成gettersetters
public function dir($dir=null) {
if (is_null($dir)) return $this->dir;
$this->dir = $dir;
}
就「良好的代碼」而言,將set和get方法合併爲一個方法是可以接受的嗎?像這樣:將getter和setter組合成gettersetters
public function dir($dir=null) {
if (is_null($dir)) return $this->dir;
$this->dir = $dir;
}
這是相當可怕的。首先,它使得將值設置爲null是不可能的。
在區分undefined和null的語言中,用未定義的值而不是null來做到這一點是合理的。
返回或不返回的東西之間的不匹配甚至在許多語言中都不適用。無論哪種情況,爲什麼不返回它,以便合理鏈接x.dir = y.dir = someValue
?但這是一個挑剔的問題,我的第一段是我的主要答案。
我最初的想法是沒有代碼是難以閱讀,因此保持。我已經到了我要麼使用C#的汽車財產,要麼只是一個公共領域。
這種模式在jQuery中至少很常見;我會說這很好。
*幾乎*這種模式,但事實並非如此。 jQuery檢查參數是否未定義,不爲空。如果您執行'$('elem')。attr('foo',null)'而不是'$('elem')。attr('foo')',您會得到不同的行爲。這是因爲javascript區分'undefined'(無參數)和'null'(參數沒有值)。所以,在這種情況下是可以的,但我不會說它是用於其他語言的。 – Chubas 2010-08-22 22:52:56
爲了完整我的評論:請參閱http://code.jquery.com/jquery-latest.js第795行,其中定義了「訪問」功能。 – Chubas 2010-08-22 22:55:02
@丘巴斯,我不會說這是「幾乎」這種模式。在javascript中undefined和null之間的區別非常大,如果在屏幕上的單詞模式中表面上看起來很相似,這就完全不同了。 – 2010-08-22 22:58:44
我認爲這會混淆大多數人,因爲它不是「標準」,這會使它不是「好代碼」。 – Starkey 2010-08-22 22:42:38
這段代碼是什麼語言? – mpenrow 2010-08-22 22:45:41
PHP,但它不是真的與問題相關,所以我沒有標記它「php」。 – mattalxndr 2010-09-10 20:09:41