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

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

干杯,

安德鲁

4

2 回答 2

2

关注点分离是我的衡量标准(也不是一成不变的标准)。这通常与保持程序DRY直接相关。

这是我看到的两个问题:逻辑和用法。的核心逻辑extractRecords是运行一个for循环。如果您想再次重用该逻辑,那么您的第一个选项现在将该逻辑与该逻辑的非常具体的应用程序/使用非常耦合(而不是松散耦合)。

这种想法就是为什么我默认总是倾向于函数式编程,而不是任何需要状态或面向对象的东西,如果可以的话。

这篇文章也相关,也许只是对同一件事的不同措辞:“告诉,不要问”

于 2009-08-21T01:07:05.197 回答
1

阅读 Code Complete 2 本书的第 5 章,可在此处预览:http ://www.cc2e.com/它将耦合纳入适用于该问题的观点。

于 2009-08-21T01:13:37.663 回答