架构设计中常见的语义耦合类型的总结
2014-10-22 19:42
495 查看
语义耦合是隐性的,不易察觉的耦合类型 ,是导致代码重构、调试、修改复杂度急剧增加的主要原因。
1,操作顺序耦合
使用一个对象,需要先调用Init(),之后才能调用DoAnything()。这种顺序耦合,即使在文档中remark也是极为不优雅的做法。
2,全局参数传递
模块A修改了某个全局参数g_val,模块B读取该值。模块B必须知道模块A已经对该参数赋值。
3,业务封装不够紧密
模块A向模块B传一个参数,模块B根据该参数选择对应的操作。模块A必须知道与业务相关的所有的操作类型。对于模块A,仅传递模块A自身可以理解的语义,或者通俗的概念作为参数,而不是被封装的业务相关的参数。
4,超越接口的数据类型约定
模块A向模块B传递一个接口的指针,模块B将其强制转换为派生类的指针。当模块B知道该接口的实际类型时,封装已经被破坏了。非相关模块只能对接口操作,而不应对接口之外的职责进行约定。
先写这么多,欢迎补充。
1,操作顺序耦合
使用一个对象,需要先调用Init(),之后才能调用DoAnything()。这种顺序耦合,即使在文档中remark也是极为不优雅的做法。
2,全局参数传递
模块A修改了某个全局参数g_val,模块B读取该值。模块B必须知道模块A已经对该参数赋值。
3,业务封装不够紧密
模块A向模块B传一个参数,模块B根据该参数选择对应的操作。模块A必须知道与业务相关的所有的操作类型。对于模块A,仅传递模块A自身可以理解的语义,或者通俗的概念作为参数,而不是被封装的业务相关的参数。
4,超越接口的数据类型约定
模块A向模块B传递一个接口的指针,模块B将其强制转换为派生类的指针。当模块B知道该接口的实际类型时,封装已经被破坏了。非相关模块只能对接口操作,而不应对接口之外的职责进行约定。
先写这么多,欢迎补充。
相关文章推荐
- App后台开发运维和架构实践学习总结(9)——三种常见的API设计错误及解决方案
- 需求分析和架构设计总结--利用DODAF方法
- WEB测试总结(架构、设计)
- WEB前台架构部分经验总结------第一章、浅谈页面设计
- 走向ASP.NE“.NET研究”T架构设计——第七章:阶段总结,实践篇(中篇)
- 走向ASP.NET架构设计——第七章:阶段总结,“.NET研究”实践篇(上篇)
- 应用架构设计与分析相关资料的收集、总结与复习(动态更新)
- 简介常见的四种类型的J2EE架构
- MMORPG无缝大地图服务器架构设计总结
- 牛人总结的面向对象编程架构/设计/编程的核心优缺点
- 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
- J2EE大型网站架构设计一点总结
- 大型网站架构设计及技术总结(2)
- 大型网站架构设计及技术总结
- MMORPG无缝大地图服务器架构设计总结
- 架构设计总结
- WEB测试总结 (架构,设计)精华部分(转)
- 常见的四种类型的J2EE架构
- 一起谈.NET技术,走向ASP.NET架构设计——第七章:阶段总结,实践篇(中篇)