2009-08-21 22 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/它将耦合视为适用于此问题的透视图。