【问题标题】:What is the point of encapsulation? [closed]封装的重点是什么? [关闭]
【发布时间】:2014-07-16 19:31:59
【问题描述】:

我只是没有看到封装的意义,我看到在某些情况下您可以修改 getter/setter 来修改某些东西的行为或跟踪状态,但是每当我创建一个非常规的 getter/ setter,我使用“修改”或“获得”之类的词,那么浪费时间编写实际上毫无意义且效率低下的重复方法有什么意义?

我只是不明白,当我还是一名年轻的程序员时,IRC 中的某个人告诉我,没有它是我的程序出现错误的原因,但我已经知道很多年了不是这样的,反正我一直在做,那有什么意义呢?

如果我以后需要重构,有一些奇怪的方法可以绕过它,但它们至少在具有重载运算符的语言中是这样的,而且 API 并不总是必须向后兼容,所以我不明白这一点。

  • 谁能告诉我封装的必要性?

【问题讨论】:

  • 你见过std::string吗?您想每次都手动执行其所有内部操作吗?
  • '什么是封装的要点'从长远来看保持代码可管理。
  • "谁能告诉我封装的必要性?"对这个主题最好的启发来自心存感激的同事,他们在你不打算让他们看到的部分代码中乱作一团。
  • @ResidentBiscuit:什么?

标签: encapsulation object-oriented-analysis


【解决方案1】:
  1. 在很多情况下你是对的——小程序可能不需要封装。
  2. 一些 MS 基础架构(我认为在几个绑定场景中是 C#/WPF)需要封装(使用属性),没有它就无法工作。
  3. 如果您在 get/set 中执行的操作比更改值或返回值更多 - 它会使您的代码更好、更健壮(例如,在 setter 中进行检查或其他工作人员)。

无论如何,没有人强迫你使用它......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2011-04-08
    • 2012-03-08
    • 2019-09-28
    • 2022-06-11
    • 1970-01-01
    相关资源
    最近更新 更多