势在必行与疑问的方法

时间:2009-08-21 00:34:27

标签: oop class-design imperative interrogative-programming

实现类时,更好的做法是返回方法的值(疑问)或直接在方法中操作类属性(命令式)。

例如,我有一个类,它构建一个字符串以输出到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

这仅仅是个人偏好的问题,还是有普遍接受的最佳实践指南?

干杯,

安德鲁

2 个答案:

答案 0 :(得分:2)

Separation of Concerns是我的指标(并且它也不是一个快速的指标)。这通常与保持计划DRY直接相关。

以下是我看到的两个问题:逻辑和用法。 extractRecords的核心逻辑是运行for循环。如果您曾想再次使用该逻辑,那么您的第一个选项现在将该逻辑与该逻辑的非常特定的应用/使用非常耦合(而不是loosly-coupled)。

这就是为什么我默认情况下总是倾向于功能编程而不是任何需要状态或面向对象的东西,如果可以的话。

这篇文章也是相关的,也许只是一个不同的措辞:"tell, don't ask"

答案 1 :(得分:1)

请阅读“代码完成2”第5章的书籍,可在此处预览:http://www.cc2e.com/它将耦合应用于适用于此问题的视角。