天天好味道

没钱没权没户口,靠走靠吼靠小狗
随笔 - 66, 文章 - 1, 评论 - 524, 引用 - 5

导航

<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

留言簿(12)

随笔分类

随笔档案

文章档案

我的链接

搜索

最新评论

阅读排行榜

评论排行榜

框架这东西

<设计模式>告诉我们,世界上最难的事情是做软件,比软件更难得是写库,比库更难得是设计框架。
所以我一直对框架情有独钟,在工作中也总用这样的思路去考虑问题,而且也的确提高了软件的质量
和开发效率。不过最近对cakePHP的研究以及重读设计模式,我感觉到,其实应用框架本身的成本也是
非常高的:
1. 陡峭的学习曲线 
    所有的框架都试图对开发者隐藏细节,这就使得开发者经常被要求背诵规则:
    填写某某函数,你就可以做到xxx
    想实现某个功能,你必须同时实现xxx,yyy,和zzz三个类,而且必须要如何如何
    这个过程是不舒服的,尤其是当这种规则非常非常多的时候。举cakePHP为例,
    如果要用它作一个真正的应用,估计得知道上百条规则,包括类,文件,数据库,
    命名规范
2. 隐蔽的陷阱
    因为开发者被框架所架空,他的代码逻辑是不连续的,框架在它认为适当的时候
    调用开发者写的代码,如果开发者对规则理解不深刻,就可能最终引起错误。这
    时候要排除错误,就要去检查框架的文档,看自己违反了哪些规则。而更糟糕的
    情况是:你触犯的是隐规则。没有文档明确的告诉你,但是你如果撞上去了,程序
    就会出错。对付这种情况,需要长期的经验积累。
3. 框架自身的bug
    遇到这种情况,开发人员只能自己调试,或者哭.:P

总结:
框架依然是很有价值的,成熟的框架,在渡过学习期后,开发效率的提升的确是非常非常
巨大的。以下几点是我目前所认识到的框架设计应该注意的问题:
1. 减少规则。至少,减少将工作开展起来所需要了解的规则。三五条最好
2. 从始至终保持设计和实现的一致,避免不在文档中的潜规则。
3. 充分的测试,消除bug。
4. 适当的工具,帮助开发者进行开发。

posted on 2006-07-11 18:52 jzhang 阅读(905) 评论(3)  编辑 收藏

评论

# re: 框架这东西

我的做法可能比较奇怪和特殊。
针对一,我企图尽量减少约束、概念和简易直观反映约束、概念。
针对二,我不企图架空应用开发者。在游戏开发里,有引擎的概念。我的做法是给出通用、易扩展的积木,架设简单明确的框架(这个是省却重复劳动,企图保障有效优化的壳子)。
针对三,这个确实比较麻烦,而且让应用者很烦。做法是,清晰的模块,从应用层反映出的问题,定位出所作模块。

对于很通用的做法,会存在一些潜在的弊病。(这个难免,谁的做法都会可能有弊病,搭建者的水平至关重要)
4. 很容易导致过渡的辅助工具,结果学习代价反而上升。—— 当然,做的好的比比皆是。
3. 往往只能是理想,有时甚至沦为借口哦。
2. 也是比较理想的状况,难。
1. 都是期望减少,关键是看怎么减少。有时会有看似减少实则增加的情况。—— 这个,就是设计者的水平所在了。
2006-07-12 08:39 | 清风雨

# re: 框架这东西

像MFC属于框架
stl,boost属于类库

我更喜欢类库,来帮助我完成事情

不过像ACE这样既可以做框架,又可以当成类库,就更好了。
2006-07-12 10:11 | 小明

# MFC也可以既当框架也当类库阿

通常框架为了方便使用,都要提供类库。只要你使用的时候不把自己的代码建立在框架的控制流程上,一般就可以当雷库使用了。ACE也是这个道理。

清风雨说的好像就是类库,给开发者积木。
框架是几乎一定要把开发者架空的,因为他掌管了控制流程和数据流。
2006-07-12 10:28 | jzhang
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]