大型项目开发:谨慎使用智能指针

智能指针使用上的问题智能指针的使用太普遍了,它让程序员摆脱了内存管理的恶梦,但实际上智能指针本身也可能引入另一个恶梦。主要包括两个问题点: 1.性能问题。因为需要引入一些变量(bookkeeping),甚至在多线程下的一些互斥操作,它所带来的性能开销往往比想像的要高。2. 对象释放的时机不明确。比如std::auto_ptr,总让人感觉不明不白,从而引入一些隐晦的问题。...
阅读(2699) 评论(0)

大型项目开发: 头文件顺序

经验告诉我们,某些编码实践虽然在C++中完全合法,但是绝对不能应用于大型项目环境中。 大型项目环境下必须有适当的约束,否则很容易变得难以控制并很难维护(摘自<>)。下面以Chromium中运用的两个Coding Style中定义的头文件顺序为例说明。...
阅读(2655) 评论(1)

技术债务管理以及Firefox/Chromium的债务评价

现在的软件开发是在遍地敏捷,人人讲唯快不破的时代,哪有人有时间思考代码质量,设计的质量? 哪个又不是从一堆代码中杀出血路来实现另一个功能?一个产品都存活不了几年,何必考虑什么可维护性?我们追求进度的时候,总是要牺牲些东西,或是破坏了一些东西等着后面补。这就是技术债! 管理不好,债台高筑,即使不破产,也是要拆东墙,补西墙的玩平衡。现实是残酷的,但不影响我们抬头看看这个世界。技术债务技术债务(Techn...
阅读(2001) 评论(2)

如何避免类的膨胀

类的膨胀(Bloating)指的是类中成员过多,甚至出现无序增加的情况。过大的类,会使得复杂度急剧增加,维护会变得更为困难。所以需要控制类的增长。本文总结了一下,简单介绍四种解决的方式,我故意用四个来讲,主要为了介绍最后一种方式。...
阅读(2361) 评论(4)

API的设计与实现

关于API的设计与实现API的设计是软件开发中一个独特的领域。最主要的特殊点在于API是供开发者使用的界面,即Application Programmer Interfaces。所以相对于依据软件设计的原则,考虑用户的”体验”会更加重要。许多著名的工具和库的作者都写过相关的著作,详细的论述他们在API上的设计与实现要点。本文是尝试对前人工作的总结。...
阅读(6223) 评论(1)

软件设计的复杂度

什么是软件设计的复杂度软件技术发展的使命之一就是控制复杂度(Complexity)。从高级语言的产生,到结构化编程,再到面向对象编程、组件化编程等等。本文介绍通过分解、改善依赖关系,以及抽象的方式来降低复杂度。...
阅读(3814) 评论(1)

[OOD] 隔离变化-桥接模式

使用一个抽象的接口隔离变化,既提高了各层的内聚性,又降低它们间的耦合。符合OO原则中的: 1. 封装变化 2. 针对接口编程,而不针对具体的实现。 3. 降低交互对象的耦合度。...
阅读(1707) 评论(0)

[OOD] 适配器模式

适配器模式常常与桥接模式相比较,两者最大的不同在于解决的问题不同。适配器用于对接两个不同的接口,而桥接则主要为了隔离变化。从应用上来说,一个是被动的,一个是主动的。 所谓被动的,就是当前的接口的差异是无法轻易改变的,必须引入一个中间层来解决。而中间层的引入往往带有性能、以及不必要的数据拷贝等开销,详细参考关于层的反模式讨论。如果接口是可控,就要尽量避免接口不一致的情形。而不是等待使用Adapter来处理。...
阅读(1589) 评论(0)

[OOD] 为什么单一职责原则(SRP)是最难运用的

RP是所有设计原则最简单的,但也是最难运用的。现实工作中,关于一个类是否符合SRP,或者是否有必要符合SRP的讨论是经常发生的。争论的关键在于职责的定义,但我理解SRP真正的核心是关注于变化。...
阅读(2092) 评论(1)

[架构设计] 组件和模块的区别

组件(Component)和模块(Module)又是一对容易混淆的名词,也常常被用来相互替换。个人总结,从设计上来看,组件强调复用,模块强调职责(内聚),或者说组件是达到可复用要求的模块。...
阅读(10070) 评论(1)

[架构设计] 什么是业务逻辑

讨论设计时,专业词汇满天飞,每个人的技术背景、工作经验上的不同都会导致在理解上存在着差异。无论是SEI的定义、OMG UML的定义、还有各路大神的定义,都有从不同视角带来的差异。准备后面关注这些定义的差异,摊开来大家一起来讨论。关于’业务逻辑’, 国内国外争论了很多年了(这篇在07年就说没有清晰的定义),其中几个比较详细的讨论见附录(一定要看评论)。我总结为两类: 一类是逻辑处理论,一类是数据操作论。...
阅读(3938) 评论(1)

用Feature Management补足技术管理

敏捷的执行最容易走样的就是技术管理层面的问题,反而是项目管理的层面被过度强调了。项目管理、质量管理的维度不同,会将产品的不同功能分割成不同的迭代任务,而功能间的关系被忽视了。简单而言就是研发过程的配置管理出现了漏洞。技术管理主要强调管理好功能间的依赖关系,便于系统的分析、追踪,甚至帮助做出重构的决策。 可以使用一个Feature Management的应用来进行管理。...
阅读(1239) 评论(0)

Chromium设计原则总结

文档的思路从需求决定设计开始展开Chromium主要设计特点。从来没有复杂的设计,它们都可以转换为简单的描述。期望能从学习中解开Chromium设计要点。...
阅读(3134) 评论(0)

[Chromium] Chromium Android WebView层的设计

Chromium Android WebView是Chormium专为Android WebView提供一个对Content的封装层。从整体上来看可以理解为一个特殊化的Embedder, 功能可以概括为:   1. 对Content和部分Browser Components封装到Java实现,供AOSP WebView调用实现WebView功能。   2. 实现Android WebView使用的...
阅读(3714) 评论(2)

Chromium多进程机制解析

关于Chromium多进程分析的文章很多了,这篇尝试以浅显的方式解释Chromium多进程机制,以及IPC高性能的基础。...
阅读(2706) 评论(0)
298条 共20页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1471265次
    • 积分:16338
    • 等级:
    • 排名:第606名
    • 原创:217篇
    • 转载:29篇
    • 译文:46篇
    • 评论:361条
    微博/MSN/EMail

    新浪微博:Horky
    QQ:324014340
    Mail:horky.chen@gmail.com
    微信公众号 (聚焦软件开发):
    博客专栏
    最新评论