在我的很多PHP项目中,我最终得到的是具有非公共函数的类,我不打算扩展它们.
最好将这些声明为受保护或私有?
我可以看到两种方式的参数 - 将它们设为私有是一种更为保守的方法,但可以认为如果我希望扩展方法并明确哪些方法由基类扩展,它们可以在以后被保护.
另一方面,使用私有部分反社会,因为它阻止理论上的未来开发人员扩展我的代码而不进行修改?
我的直觉是让他们保密,直到你需要他们为止.
有人认为(遗憾的是我错误地将链接放在一起)将方法设为私有是反社会的,就像使它们成为"最终"一样,因为它对于人们如何使用你的代码是相当独裁的.
但是,我并不相信,并且同意你应该只暴露你真正需要的东西.例外情况是库或工具包,您希望用户希望以您无法预见的方式扩展(在一般意义上)您的代码.在这种情况下,保护精心挑选的方法可以被视为提供弹性点.
我认为你应该只在需要时暴露你需要的东西.这使得对变更的影响评估更容易.即如果方法是私有的,您知道如果更改方法,影响将是最小的.
就个人而言,我觉得尽可能多地保密是合适的.我只是看看每个方法,并问自己是否希望派生类能够调用它.让一切都受到保护会让方法调用不正确.
我想这归结为"除非特别允许,否则一切都被禁止"或"除非特别禁止,否则一切都被禁止".
另一个因素是在将来的版本中很容易使私有方法受到保护.一旦方法受到保护,几乎不可能对方法进行私有化,因为你永远不知道你失效的其他代码是什么.
如果您打算构建一个继承类,那么必须以这种方式设计它,即使这些方法受到保护,允许其他开发人员按照您预期的方式更改类的行为.简单地使所有方法受到保护并不是一个非常好的设计.请记住,所有受保护的方法都会成为公共API的一部分,因此如果您稍后更改内容,则会破坏其他人的代码.
一般来说,如果你没有设计继承,你应该禁止它.