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