【问题标题】:Should I use public or package access? Why should I use private for fields?我应该使用公共访问还是包访问?为什么我应该对字段使用私有?
【发布时间】:2013-01-15 08:40:29
【问题描述】:

所以 2 个问题:

  1. 我应该为我的课程使用公共访问还是包访问?在每个项目中,我的所有类都保存在一个包中,并且我从不在其他项目中使用它们的任何方法。那么我需要公共访问权限吗?我认为包裹对我来说没问题。而且会更安全。
  2. 我知道将字段设为私有并为其创建 getter 和 setter 的习惯。我也理解密封的概念,但是在我读到关于制作 getter 和 setter 的哲学的任何地方,我都只有一个理由:“你必须做 getter 或 setter,这样你才能确定一个变量不会直接用于程序的其他部分。感谢这样您就可以确定可以在此类 getter 更改中进行(例如决定返回什么值的 if 语句),并确保每个部分的行为都会如此”。但在 99.9% 的 getter 中,只返回类私有值。几乎每次 getter 都只有 1 行“return XXX”。那么还有其他使用吸气剂的可能性吗?和二传手?我曾经从我的项目中删除了 getter 和 setter,将字段公开,结果我的项目缩小了近 30%。

【问题讨论】:

  • 这不是关于更小的代码,而是关于高效和安全的代码。将字段设为私有将有助于您不会在其他类中错误地设置它们,如果您使用 getter 和 setter,您会意识到使用它们,不是吗?此外,您应该将要在其他包中访问的类公开。并通过一些良好的编程实践,我的建议..
  • 两者都是非常糟糕的做法。看起来我们正在谈论一个只有一个开发人员(你)的小项目。在这种情况下,你可能会没事(现在)。但如果项目继续增长或有更多开发人员加入,你很可能会陷入困境。 en.wikipedia.org/wiki/Information_hiding
  • 这里的基本理念是让自己习惯于让自己更容易在涉及更多人的大型项目中顺利工作的做法。虽然这对于较小的项目似乎是一种浪费,但您提到的都是很好的做法。你不妨习惯以正确的方式做事。

标签: java


【解决方案1】:

通常最好将所有字段设为私有,并根据需要实现 getter 和 setter。这样,您可以确保不会以非预期的方式使用/更改字段。例如,您可以将错误检查代码添加到您的设置器中,以确保字段未设置为会破坏其他内容的值。如果其他类可以直接设置该字段,则无法阻止。

如果您有充分的理由使字段具有包可见性或公开性,那么您当然可以这样做,但您必须注意如果其他人/类错误地使用您的字段会导致什么问题方式。

它可能不会对您的小项目产生太大影响,因为您知道不要将字段设置为错误的值,否则会搞砸 - 但是如果其他人使用您的类或您的项目规模扩大,您将欣赏实际字段是私有的这一事实,您可以通过 getter/setter 控制访问。

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2010-11-19
    • 2010-12-30
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多