WebKit模块化分析.pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WebKit模块化分析.pdf

WebKit 模块化分析 陈浩 /horkychen 模块化 2 面向对象编程同模块化 3 模块化的设计方法 3 WebKit 的模块化 4 应对变化 - 封装核心功能,与用户界面隔离 7 建构基础 - 提取公共的基础代码和数据结构,封装成库 8 灵活健壮 - 支持标准的插件机制 9 兼容并蓄 - WebKit 的跨平台方案 11 重构 - 不断追求卓越 13 总结 13 模块化 软件的首要技术使命是管理复杂度(Complexity)。这是代码大全 中的 一个标题。软件本质性困难的根源都在于复杂性。Dijkstra 指出没有谁的大脑能 容得下一计算机程序。正如社会进步催生社会分工一样,软件行业也自然而然地 发展出来了模块化方法,将整个系统分解为多个子系统来降低问题的复杂度,分 而治之。它有两个主要的目的 1. 分工 (角色与责任) 2. 信息隐藏 (协作) 分工可以更容易实现并行开发,带来开发效率的提升。分工还可以隔离变化, 使得软件应对变化的能力增强。而信息隐藏则降低了对程序员的要求,能够更好 地掌握模块内的复杂度。 更一种将模块化视为系列决策组合的看法,只关注到了模块化过程的形式, 而忽视了模块化的目的和目标。决策固然是贯穿整个开发过程,但并不是专属于 模块化。还是应当强调模块化背后的目的以及使用的方法,关注其产出的结果: 模块 +接口。 模块是分工的结果,接口则由协作定义。 为了强化模块的协作,上世纪 80 年代引入了契约式编程(也称为 Design by Contract ,或Contract Programming)的概念,要求清楚地定义功能的前置条 件和输出结果。正像是商业活动中使用合同(contract)来约束和规范商业协作。 凡事过犹不及,模块化的粒度多大才合适 ?在 Unix 编程艺术 中第四章 有专门一个章节进行探讨,可以作为一个参考。模块化并不能完全解决耦合和复 用的问题,所以 90 年代末又有了将模块中分散着的各个相似的功能集中起来的 设计实践,面向方面的编程(AOP, Aspect Oriented Programming)。其实也是 为了将分散的逻辑抽取出来,模块化。 这些都是对模块化的完善。 面向对象编程同模块化 面向对象编程其实是一种能更好地支持模块化的编程方法,可以更好的达到了 模块化的两个目标。在系统级别的模块划分上,并没引入什么特别的贡献。但在 系统模块的内部,却较以前面向过程的开法更方便地实现了逻辑上的模块,更为 重要的是它在信息隐藏上的突破。 举例来说,以前在某个模块(组件)内部,以面向过程来写代码时,很容易产生 出复杂的函数关系和无法约束数据访问的问题。而面向对象却使用不同的类或接 口很好的在内部又建立区不同的逻辑模块来。不同的类对象之间的访问和存取都 受到各自实现的约束,真正做到了信息隐藏。 虽然有时面向对象的编程语言也被发展的过于庞大,其本身的复杂度也越来越 高,特别是如果过于专注于分层而引入了更多的细节,反而增加了复杂度。语言 本身是个工具,如何使用好这个工具最终取决于设计者。它既可以用来雕琢天使, 也可以用来创造魔鬼。 模块化的设计方法 如何进行模块化设计?要么从上到下(Top-Down) ,要么从下向上(Down-Up)。 从上到下时常常导致领域问题和技术细节考虑不足,而从下至上的设计方法却有 时却让整合出了问题。所以还需要有设计验证的工作和迭代设计的流程。 从上至下

文档评论(0)

ziyouzizai + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档