2012-01-18 34 views
1

我很好奇將多個參數傳遞給方法的最佳做法是什麼。具體來說,我想知道是否打電話的方法,新線上的評論和參數將被認爲是不好的做法。用新行上的參數調用方法會被認爲是不好的做法嗎?

// get json from database 
$json = $this->mysql->get_json_from_entries($this->table, // data table 
              $foo,   // column 
              $bar,   // column value 
              $this->limit); // maximum rows to retrieve 

,而不是

// get json from database 
$json = $this->mysql->get_json_from_entries($this->table, $foo, $bar, $this->limit); 
+5

我不認爲這是一個不好的做法,但你一定要記錄您的接口,而不是參數 – zerkms 2012-01-18 21:07:18

+2

除非在解析語言語法的任何限制,我想說的一般規則拇指是「做有意義的事情,並使其易讀易懂」。在任何特定情況下,硬編碼格式規則應始終讓位於最佳判斷。 – David 2012-01-18 21:07:57

+2

編碼風格的討論永遠不會是對徹頭徹尾的宗教戰爭的邀請。 – 2012-01-18 21:09:53

回答

3

它的味道,但通常從我所看到的一切在同一行,然後你用你的DOC塊,像這樣的事情:

/** 
    * Get json from database 
    * 
    * @param $this->table object data table 
    * @param $foo string column name 
    * ...etc 
    */ 
$json = $this->mysql->get_json_from_entries($this->table, $foo, $bar, $this->limit); 
+0

我認爲這是更好的風格,尤其是OP的示例函數,它只接受4個參數。也許對於接受更多參數的函數來說,將其分解成行會是更好的主意(儘管我仍然不會爲每個變量生成一行)。如果你在所有的方法調用中使用OP的風格,你可能會看到一個凌亂的PHP文件。 – 2012-01-18 21:10:41

+0

我的界面使用DOC塊,所以也許這會更合適?無論哪種方式,感謝您的意見。 – 2012-01-18 21:11:43

+4

docblock不會超出函數定義嗎? – Adam 2012-01-18 21:11:53

2

就個人而言,我覺得真的很長行是雪上加霜。

你可能會感興趣的Zend Framework Coding Standard for PHP更普遍。

+1

+1引用一致的編碼標準(即使Zend不一致地使用它)...我會在一行中使用全部,除非這使得行超過80個字符。 Zend標準的具體部分:[函數和方法的用法](http://framework.zend.com/manual/en/coding-standard.coding-style.html#coding-standard.coding-style.functions-and-methods 。用法)。 – cmbuckley 2012-01-18 21:12:05

+0

@cbuckley同意,爲什麼有些編輯人員設置的邊距線大約在那個寬度上 - 也適合打印。 – Adam 2012-01-18 21:14:09

0

我通常喜歡向最佳實踐方面傾斜,但有時(如果該函數的參數太多),我的第一個樣式也是我的首選。

兩件事情雖然: 如果一個函數有太多的參數,你可以考慮重構它,也許把這些參數在一個新的類或改變類本身 二的實施,試着用冗長的名字聲明變量,其中描述了它的用法。提示:PHP不遵循這些做法:)

相關問題