我是一个相对较新的程序员,维护着传统的代码库。我遇到过一种模式,我不太确定它对我有意义。假设我有一个类(让我们称之为OutputClass)来处理写入日志文件和创建XML文件以供其他系统使用。
现在在代码中的几个地方,OutputClass得到了证实,并发送了一些对象(称为A,B和C)。例如(这是在VB中,但适用于任何语言):
Call ObjectClass.WriteFile(A, B, C)
然后在OutputClass中,我有这段代码:
Public Sub WriteFile(A as ObjType1, B as ObjType2, C as ObjType3)
Call WriteThisFile(A, B, C)
End Sub
Private Sub WriteThisFile(A as ObjType1, B as ObjType2, C as ObjType3)
'do stuff
End Sub
如果我们只是将我们在public方法中接收的参数作为私有方法的参数传递,那么它到底完成了什么?我想我理解公共与私人的目的,但也许不是? TIA提供任何帮助。
强制性:我找了相关的问题但却找不到我想要的东西。
答案 0 :(得分:0)
这可能不是一个完整的答案,但根据我的经验,你永远不会看到这样的东西,除非它是为了一致性,或者是在重构代码之后用来做一些重要事情的工件。
“一致性”的含义是,如果其他类也遵循此模式,但在将参数传递给public
方法之前,在private
方法中执行一些有用的操作。
从更一般的意义上讲,您会看到这样的模式,使public
方法的实现执行卫生和/或验证参数,然后将参数应用于private
方法。然后允许private
方法做出输入有效且安全的假设,因此实现将更加简单:
Public Sub WriteFile(A as ObjType1, B as ObjType2, C as ObjType3)
// perform validition and throw if invalid
// perform sanitation
Call WriteThisFile(A, B, C)
End Sub
Private Sub WriteThisFile(A as ObjType1, B as ObjType2, C as ObjType3)
// relatively simple application logic goes here
// because assumptions can be made about input
End Sub
答案 1 :(得分:0)
没有这样的模式。最可能的原因是它是代码重构的剩余部分。很可能这两个函数可能会做很多不同的事情(或者不同的事情)。有人意识到(确定它令人困惑)并试图统一它们。
他们可能已经取消了公共功能,并让私人公开,但他们只是因为其遗留代码并且非常谨慎而保留,如果他们在某些时候需要它们,他们会让这两种功能保持不变。