如何解释松耦合和信息隐藏给新程序员?

C. *_*oss 22 oop

如何解释松耦合和信息隐藏给新程序员?我有一个程序员,我为其编写设计,但似乎无法掌握松散耦合和信息隐藏的概念.

我通过函数将所有内容很好地分解为类来编写设计(数据访问是独立的,一个用于请求的类,一个控制器,总共约5个类).他们回来时采用了改进的设计,其中一半的类继承自另一半(并且没有"is-a"关系),以及许多公共变量.

我怎样才能理解保持分离的想法使维护更容易?

Bor*_*vić 57

问他是否最好让你借钱给你一会儿并自己拿钱来借10美元.


Mau*_*gan 16

问题是你的期望,而不是开发人员缺乏技能.你谈论松耦合和信息隐藏,好像这些是简单的事实或机械技术 - 它们不是.软件开发是一种技术,在技术上变得更好的唯一方法是实践它并缓慢地逐步改进.

您正在寻找捷径.您希望开发人员体验"ahah!" 一瞬间突然看到你设计中的智慧.我说,不要屏住呼吸.

采纳导师的心态.如果你想让他提高自己的设计技巧,不要"给他"设计,让他去设计吧!然后和他一起回顾设计.这将给予他经验,更深刻的主人翁意识,并且在他实施膝盖深度之前更愿意倾听您的建议.

抛开 - 我注意到人们一直在寻找这些捷径,而不是使用抽象技能,而不是更多的"身体"技能.以网球为例.如果你是一名网球教练而且一名新球员长期不停地打击他的前锋,你不会只向他展示一段关于罗杰·费德勒正手的YouTube视频,并期望他"得到它".当你学习感觉并在不同场景中使用它时,一个伟大的正手需要多年的经验 - 它不是你的肌肉学习,它是你的大脑.它与软件设计没有什么不同.你一遍又一遍地擅长这一点.您慢慢从错误中吸取教训,并更好地了解每个设计决策的后果.


And*_*are 12

解释这些概念的最好方法是使用类比.选择非编程相关的东西并用它来解释抽象设计概念.

以下图片非常擅长解释松耦合的需要:

依赖性倒置原理:你能直接将灯焊接到墙上的电气接线吗?

试着想出这样的东西,这些东西会让你的新程序员感到愉快.


dub*_*dub 7

理论只会让你到目前为止.

让他尝试为他刚才写的代码添加新功能.然后与他重新编写旧代码,使其松散耦合,并要求他添加相同的功能.

他一定会理解编写好代码的优点.


Bob*_*oss 6

没有什么比得上物理类比了.走出你的车,指出一切复杂,炎热和危险的东西是如何与脆弱的人隔离.坐在驾驶座上并指出一些重要的仪表; 例如,冷却液温度,转速计和速度计.注意仪表是如何非常相似的:它们都采用标量值(从某处)并通过将针移动到最小值和最大值之间的位置来表示它.

但是,如果你考虑测量的是什么,维持这种隔离(即松耦合或信息隐藏)的强烈动机变得更加明显.

  • "您想如何测量冷却液温度?通过观察仪表或用手指插入接近沸腾的液体?"

  • "你想怎样测量发动机的转速?通过观察一个量规或者让一个数千转的RPM曲轴从你的骨头上撕下来,当你试图用手估算它时?"

  • "你想怎么测量汽车的速度?当你在高速公路上咆哮时,通过观察一个仪表或将脚拖到地上?"

从那里开始,您可以建立在"您的冷却液温度计是一种规格.它不是沸腾的液体"等概念的基础上,以及更复杂的概念.