private - 我使用的是 "protected"而不是 "private",因为有一天我可能需要扩展我的类(class),这不好吗?

标签 private extensibility protected

我注意到我的代码中有一个模式。我通常选择 protected,而不是 private,作为我类中“隐藏”方法和字段的默认访问标签。我这样做主要是因为它为类的用户隐藏了类功能的细节,同时仍然为将来的扩展留有空间。这种编码“政策”有什么缺点吗?

谢谢
通努兹

最佳答案

一般来说,永远不要做某事,因为有一天你可能不得不实现或做 yadayada(这只会让生活变得复杂和痛苦恕我直言......)。如果你有一个只应该在它的类中使用的方法,那么就把它设为私有(private)。如果您必须通过继承来扩展它,而不是重新考虑可能必须从下面访问哪些功能。通常我无论如何都会将方法抽象到我的父类(super class)中,所以无论如何我都必须考虑何时何地需要什么..

忽略我所说的关于私有(private)方法的一个很好的理由是,如果你想测试你的内部函数,即在单元测试中。在 C# 中,您可以允许另一个项目从外部查看您的 protected 方法,以便您可以针对它们编写测试。

关于private - 我使用的是 "protected"而不是 "private",因为有一天我可能需要扩展我的类(class),这不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943966/

相关文章:

ios - 如何从 xib 文件更改 iPhone 和 iPad 中的键盘布局?

database-design - 一个或多个事实表?

c++ - 以这种方式访问​​受 Base 保护的成员是否安全?

c++ - 在另一个类中删除具有 protected 析构函数的对象

java - Java 中的 public、protected、package-private 和 private 有什么区别?

java - 私有(private)字符串还是公共(public)静态字符串?

javascript - 封闭函数变量

c++ - 返回私有(private)数组

C# - 通过公共(public)属性使私有(private)嵌套类可见

visual-studio-2012 - 是否可以将特定于解决方案的工具添加到 Visual Studio 2012