内部应用程序-为什么不公开所有内容呢

本文关键字:应用程序 为什么不 内部 | 更新日期: 2023-09-27 18:22:10

是否有理由不在我们的intranet报告应用程序中将所有内容标记为公共?

没有人能够访问这个代码——我们有大约20个项目——大多是小型和特定的。

我们真的有理由标记公共以外的东西吗?

我对此有自己的想法,我试图省略,因为我希望这是公正的。

(我把标题稍微改了一下)

内部应用程序-为什么不公开所有内容呢

查找封装和/或"信息隐藏":

在面向对象编程中,信息隐藏(通过类型嵌套)通过将代码对不确定实现(设计决策)的依赖转移到定义良好的接口上来降低软件开发风险。接口的客户端完全通过它执行操作,因此如果实现发生更改,客户端就不必更改。

如果你把每个类的成员都标记为公共的,那么你就成了一场维护噩梦,未来的开发人员(包括你自己)将不确定类的哪些部分是永久的(合同),哪些是纯粹的实现细节。

假设您的意思是将类成员/方法标记为公共/私有:这与安全无关,因为您的组织外部有人可以访问"私有"信息。它是关于教编译器如何检测问题。

例如,假设我有一个成员为双balance的类Account。以及成员方法Deposit()Withdraw()GetBalance()。调用Deposit()和Retreat()分别做两件事:更新表、修改balance

如果我将balance公开,开发人员(甚至可能是我)可能会直接修改balance的值。现在,我的类的实例与表不同步。这是一个bug。哦,我最终会发现这个错误——但如果balance是私有的,编译器早在运行时就告诉我了。

正确使用访问修饰符确实有助于简化代码库及其维护,同时也有助于提高代码安全性,这似乎是您所关心的问题。

我能想到的主要原因是在访问变量时是否需要执行一些检查或其他逻辑。你通常会把这些代码放在get或set方法中,然后任何将来使用这些代码的开发人员都可以通过,但他们不一定像你一样了解这些代码?

此外,您还对代码的使用做出了假设,而您可能无法保证这些假设。

使代码模块化和可重用始终是一个很好的目标,而将所有内容公开可能会限制代码的使用位置?

您应该查找的单词是"encapsulation"。您希望保持代码内部的私有性,这样其他代码就不会依赖于您如何实现它。

我想您谈论的是面向对象编程中的公共成员。

如果你的应用程序很小,而且是独立的,那么这可能不会带来太大问题。请记住,有些事情会让小气球变成巨大的怪物。

对于任何大尺寸的东西,避免它的原因是它打破了封装和信息隐藏的面向对象原则。这些对于未来的可维护性非常重要。最好保持模块之间的接口干净且有限。这样,您就可以在不影响数十个依赖模块的情况下更改内部实现。