- 博客(9)
- 资源 (28)
- 收藏
- 关注
原创 软件设计的复杂度
什么是软件设计的复杂度软件技术发展的使命之一就是控制复杂度(Complexity)。从高级语言的产生,到结构化编程,再到面向对象编程、组件化编程等等。本文介绍通过分解、改善依赖关系,以及抽象的方式来降低复杂度。
2015-04-30 00:57:32 9313 1
原创 [OOD] 隔离变化-桥接模式
使用一个抽象的接口隔离变化,既提高了各层的内聚性,又降低它们间的耦合。符合OO原则中的: 1. 封装变化 2. 针对接口编程,而不针对具体的实现。 3. 降低交互对象的耦合度。
2015-04-21 00:45:18 2411 1
原创 [OOD] 适配器模式
适配器模式常常与桥接模式相比较,两者最大的不同在于解决的问题不同。适配器用于对接两个不同的接口,而桥接则主要为了隔离变化。从应用上来说,一个是被动的,一个是主动的。 所谓被动的,就是当前的接口的差异是无法轻易改变的,必须引入一个中间层来解决。而中间层的引入往往带有性能、以及不必要的数据拷贝等开销,详细参考关于层的反模式讨论。如果接口是可控,就要尽量避免接口不一致的情形。而不是等待使用Adapter来处理。
2015-04-21 00:10:27 2062
原创 [OOD] 为什么单一职责原则(SRP)是最难运用的
RP是所有设计原则最简单的,但也是最难运用的。现实工作中,关于一个类是否符合SRP,或者是否有必要符合SRP的讨论是经常发生的。争论的关键在于职责的定义,但我理解SRP真正的核心是关注于变化。
2015-04-18 23:53:47 2812 1
原创 [架构设计] 组件和模块的区别
组件(Component)和模块(Module)又是一对容易混淆的名词,也常常被用来相互替换。个人总结,从设计上来看,组件强调复用,模块强调职责(内聚),或者说组件是达到可复用要求的模块。
2015-04-17 00:04:55 28409 5
原创 [架构设计] 什么是业务逻辑
讨论设计时,专业词汇满天飞,每个人的技术背景、工作经验上的不同都会导致在理解上存在着差异。无论是SEI的定义、OMG UML的定义、还有各路大神的定义,都有从不同视角带来的差异。准备后面关注这些定义的差异,摊开来大家一起来讨论。关于’业务逻辑’, 国内国外争论了很多年了(这篇在07年就说没有清晰的定义),其中几个比较详细的讨论见附录(一定要看评论)。我总结为两类: 一类是逻辑处理论,一类是数据操作论。
2015-04-15 00:51:58 12452 2
原创 用Feature Management补足技术管理
敏捷的执行最容易走样的就是技术管理层面的问题,反而是项目管理的层面被过度强调了。项目管理、质量管理的维度不同,会将产品的不同功能分割成不同的迭代任务,而功能间的关系被忽视了。简单而言就是研发过程的配置管理出现了漏洞。技术管理主要强调管理好功能间的依赖关系,便于系统的分析、追踪,甚至帮助做出重构的决策。 可以使用一个Feature Management的应用来进行管理。
2015-04-07 01:05:40 1790
原创 Chromium设计原则总结
文档的思路从需求决定设计开始展开Chromium主要设计特点。从来没有复杂的设计,它们都可以转换为简单的描述。期望能从学习中解开Chromium设计要点。
2015-04-07 00:38:22 5101
原创 [Chromium] Chromium Android WebView层的设计
Chromium Android WebView是Chormium专为Android WebView提供一个对Content的封装层。从整体上来看可以理解为一个特殊化的Embedder, 功能可以概括为: 1. 对Content和部分Browser Components封装到Java实现,供AOSP WebView调用实现WebView功能。 2. 实现Android WebView使用的
2015-04-07 00:16:53 6479 2
Google Chrome中的高性能网络
2013-09-03
面向 HTML5 的图形加速和面向移动设备的 JAVASCRIPT 引擎 JIT 优化
2013-06-09
主动自我优化的编译器
2013-06-09
LLDB查看数据类型的示例脚本
2013-01-14
Lenovo LJ2000打印机驱动
2010-12-06
STL Documents from SIG.com
2009-09-20
实战KDevelop进行Linux软件开发
2009-03-11
实战KDevelop进行Linux软件开发
2009-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人