首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DRY编程困境

DRY编程困境
EN

Stack Overflow用户
提问于 2010-05-03 17:44:04
回答 4查看 411关注 0票数 1

情况是这样的:

我正在创建一个可以写入文件的Logger类,但是write_to_file()函数在一个帮助类中作为一个静态函数。

我可以调用该函数,但随后Log类将依赖于helper类。

依赖关系不是很糟糕吗?

但是如果我可以让它使用helper函数,那么拥有helper函数又有什么意义呢?

这里应该优先考虑的是:使用helper函数,并且必须在所有地方都包含这个helper类(但其他99个方法不会有用),或者只是复制并粘贴到Log类中(但如果我已经这样做了100次,然后进行了更改,我必须在100个地方进行更改)。

分享你的想法和经验!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-03 18:47:03

依赖关系本身并不糟糕;它们只需要得到有效的管理。听起来您可能有一个帮助器类具有多个职责(100个方法对我来说似乎很多),所以可能需要将这个帮助器类拆分成多个类。

另一种选择是创建一个IFileWriter接口,其中包含您需要的一个帮助器方法。然后,让helper类实现该接口,并让记录器依赖于该接口而不是具体的helper类。这样,如果您有时间重构helper类,那么记录器就不需要更改了。

票数 2
EN

Stack Overflow用户

发布于 2010-05-03 17:47:56

我认为你让事情变得比实际情况更复杂。

如果有2个或更多的类需要这个函数(现在在helper类中),那么就让它存在,它没有问题。

如果目前只有logger使用这个函数,那么将它移到logger类中。如果另一个类需要它,您可以随时将其移回。

拥有助手函数的意义是什么?

如果你有一个函数可以被许多不同的类使用(并且肯定会被使用),并且这个函数不依赖于调用者的状态,那么它可以是一个助手函数。例如数学运算(sqrt等)或不同的格式化程序。

票数 2
EN

Stack Overflow用户

发布于 2010-05-03 18:10:27

它还取决于您希望记录器类具有多大的灵活性。如果您认为以后可能需要将日志输出写入网络而不是文件,那么将日志条目写入接口(例如LogEntrySink)的过程抽象化可能是明智的。然后你可以注入不同的接收器到你的记录器中(例如FileWriterSink)。这使您能够让一个记录器使用不同的输出方法,而无需更改任何代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2757199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档