为什么我不应该在内联网报告应用中将所有内容标记为公开?
没有一个外面的人可以访问这个代码 - 我们有大约20个项目 - 大多数是小而具体的。
为什么我们应该在公开之外标记其他东西?
我对此有自己的想法,我试图省略,因为我希望这是公正的。
(我略微把这个头衔性别化了)
答案 0 :(得分:9)
查找封装和/或"Information Hiding":
在面向对象的编程中,信息隐藏(通过类型嵌套)通过将代码依赖于不确定的实现(设计决策)转移到定义良好的接口上来降低软件开发风险。接口的客户端完全通过它执行操作,因此如果实现发生更改,客户端就不必更改。
如果您将每个班级的成员标记为公开,那么您将面临维护噩梦,未来的开发人员(包括您自己)将不确定该班级的哪些部分是永久性的(合同),哪些是纯粹的实施细节。
答案 1 :(得分:3)
假设您的意思是将类成员/方法标记为公共/私有:它不是关于组织外部某人获取“私人”信息的安全性。它是关于教导编译器如何检测问题。
例如,假设我有一个成员为Account
的成员balance
。和成员方法Deposit()
,Withdraw()
和GetBalance()
。调用Deposit()和Withdraw()每个都做两件事:更新表,修改balance
如果我将balance
公开,开发人员(甚至可能是我)可能会直接修改balance
的值。现在我的班级实例与表格不同步。这是一个错误。哦,我最终会找到这个bug - 但是如果balance
是私有的,编译器会在运行时很久就告诉我。
答案 2 :(得分:0)
正确使用访问修饰符确实有助于简化代码库及其维护 - 与代码安全性一样多,这似乎是您关注的问题。
答案 3 :(得分:0)
我能想到的主要原因是你在访问变量时需要执行一些检查或其他逻辑。您通常将这些代码添加到get或set方法中的代码将被任何未来使用该代码的开发人员绕过,但是谁不一定知道代码以及您?
此外,您正在假设您可能无法保证的代码的使用。
使代码模块化和可重用是一个很好的目标,并且公开一切可以限制使用此代码的位置?
答案 4 :(得分:0)
你应该查找的词是"封装"。您希望将代码的内部保密,以便其他代码不依赖于您实现代码的方式。
答案 5 :(得分:0)
我假设您正在谈论面向对象编程中的公共成员。
如果你的应用程序很小并且自包含,那么这可能不会造成太大问题。请记住,有些东西会从小气球开始变成巨大的怪物。
对于任何大小的东西,避免它的原因是它打破了封装和信息隐藏的面向对象原则。这些对于未来的可维护性非常重要。最好保持模块之间的接口清洁和有限。这样您就可以更改内部实现,而不会影响许多依赖模块。