【发布时间】:2011-04-23 10:23:33
【问题描述】:
这是一个经常出现的情况,对我来说永远不会太容易。我想我会问其他人是如何处理的。
想象一下,如果 demo=60 命令行参数的处理是这样完成的:
if DemoOptionSpecified() {
timeout = ReadInDemoTimeout();
DoDemoVersion(timeout);
} else
DoRealVersion();
DemoOptionSpecified() 对参数字符串执行某种 grep 并返回 true 或 false。
ReadInDemoTimeout() 也执行某种 grep,相同的字符串,并返回一个整数。
两个 grep 做两件不同的事情,但当然只需要一个 grep 来做这两件事。两个 grep 在这里可能无关紧要,但在其他情况下,两个数据库或 Ajax 调用可能。
我并不特别喜欢让 DemoOptionSpecified() 做更多的事情,而不是查看是否提供了选项。方法名称不会建议额外捕获该值。
如果演示选项不存在,我并不特别喜欢使用名为 ReadInDemoTimeout() 的方法返回 false 的替代方法,因为如果设置了该选项,我只想了解超时值。 DoRealVersion() 不关心超时值。
我不认为有一个好的不妥协的干净代码模式。想法?
【问题讨论】:
标签: design-patterns coding-style