2009-08-21 52 views
2

當實現一個類時,爲方法返回一個值(疑問句)還是直接在方法中直接操作類屬性(命令式)更好。命令式還是疑問法

例如,我有一個類建立一個字符串輸出到一個CSV文件。我可能會做這種方式:

String output = "" 

String records[] = //list of record strings 

void extract() 
    extractHeader() 
    extractRecords() 


void extractHeader() 
    output += "FirstName,LastName,PhoneNumber" 


void extractRecords() 
    For Each record In Records 
    output += records.toString() 

或者,我可能會做這種方式:

void extract() 
    output += extractHeader() 
    output += extractRecords() 


string extractHeader() 
    // return header string 


string extractRecords() 
    // return records as string 

這純粹是個人喜好的問題,還是有一個普遍公認的最佳實踐指南?

乾杯,

安德魯

+0

在這個問題中討論的東西http://stackoverflow.com/questions/1137222/function-parameter-best-practice也適用於你的。 – 2009-08-21 00:46:11

+0

謝謝你,這是非常有幫助的。 – Andrew 2009-08-21 02:41:03

回答

2

Separation of Concerns是我的指標(這不是一個硬和快速的一個其一)。這通常與保持節目DRY直接相關。

下面是我看到的兩個問題:邏輯和用法。 extractRecords的核心邏輯是運行for循環。如果您想再次使用該邏輯,現在您的第一個選項將該邏輯非常耦合(與loosly-coupled相反),並具有該邏輯的特定應用/用法。

這就是爲什麼我會默認總是傾向於函數式編程,而不是任何需要狀態或面向對象的東西(如果可以的話)。

同樣的事情也相關,也許可能只是一個不同的措辭是這篇文章:"tell, don't ask"

1

閱讀Code Complete 2書籍的第5章可以在這裏預覽:http://www.cc2e.com/它將耦合視爲適用於此問題的透視圖。