OOP:为什么调用一个公共方法继续调用具有相同参数的私有方法?

时间:2017-06-21 14:10:03

标签: oop

我是一个相对较新的程序员,维护着传统的代码库。我遇到过一种模式,我不太确定它对我有意义。假设我有一个类(让我们称之为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提供任何帮助。

强制性:我找了相关的问题但却找不到我想要的东西。

2 个答案:

答案 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)

没有这样的模式。最可能的原因是它是代码重构的剩余部分。很可能这两个函数可能会做很多不同的事情(或者不同的事情)。有人意识到(确定它令人困惑)并试图统一它们。

他们可能已经取消了公共功能,并让私人公开,但他们只是因为其遗留代码并且非常谨慎而保留,如果他们在某些时候需要它们,他们会让这两种功能保持不变。