情况是这样的:
我正在创建一个可以写入文件的Logger类,但是write_to_file()函数在一个帮助类中作为一个静态函数。
我可以调用该函数,但随后Log类将依赖于helper类。
依赖关系不是很糟糕吗?
但是如果我可以让它使用helper函数,那么拥有helper函数又有什么意义呢?
这里应该优先考虑的是:使用helper函数,并且必须在所有地方都包含这个helper类(但其他99个方法不会有用),或者只是复制并粘贴到Log类中(但如果我已经这样做了100次,然后进行了更改,我必须在100个地方进行更改)。
分享你的想法和经验!
发布于 2010-05-03 18:47:03
依赖关系本身并不糟糕;它们只需要得到有效的管理。听起来您可能有一个帮助器类具有多个职责(100个方法对我来说似乎很多),所以可能需要将这个帮助器类拆分成多个类。
另一种选择是创建一个IFileWriter接口,其中包含您需要的一个帮助器方法。然后,让helper类实现该接口,并让记录器依赖于该接口而不是具体的helper类。这样,如果您有时间重构helper类,那么记录器就不需要更改了。
发布于 2010-05-03 17:47:56
我认为你让事情变得比实际情况更复杂。
如果有2个或更多的类需要这个函数(现在在helper类中),那么就让它存在,它没有问题。
如果目前只有logger使用这个函数,那么将它移到logger类中。如果另一个类需要它,您可以随时将其移回。
拥有助手函数的意义是什么?
如果你有一个函数可以被许多不同的类使用(并且肯定会被使用),并且这个函数不依赖于调用者的状态,那么它可以是一个助手函数。例如数学运算(sqrt等)或不同的格式化程序。
发布于 2010-05-03 18:10:27
它还取决于您希望记录器类具有多大的灵活性。如果您认为以后可能需要将日志输出写入网络而不是文件,那么将日志条目写入接口(例如LogEntrySink)的过程抽象化可能是明智的。然后你可以注入不同的接收器到你的记录器中(例如FileWriterSink)。这使您能够让一个记录器使用不同的输出方法,而无需更改任何代码。
https://stackoverflow.com/questions/2757199
复制相似问题