刚才看了一篇关于项目管理的blog,中间有提到framework的选择问题,引起了很多人讨论。由于我对于framework的想法不是一点两点,所以不好喧宾夺主的把他人的讨论贴给干掉,还是另起炉灶写一篇自己的文章。
不过本文主要还是阐述自己的想法,我希望强调的是我希望有人和善的讨论,谢绝任何形式的语言暴力。
在wiki百科中间谈到软件framework的定义是[b]可重用设计[/b]的软件系统。这种软件系统有可能包括支持程序,代码库,脚本语言,或者其他可以将不同组件粘合成软件项目的工具。
framework定义的关键字实际上是可重用设计,我们在谈到一个framework的时候,总是会谈到framework遵循怎样的设计理念。一个framework通常会将很多的design pattern融合在一起,从而强迫使用者遵循framework的设计者的编程理念进行开发。
在jee中的表示层的框架中,大量的framework都是采用mvc的设计模式。而像spring这种dependence injection framework因为是针对对象的产生,从而也大量的使用了factory系的design pattern。
研究框架的过程实际上就是在深入理解design pattern,当然这些从GoF的原本中已经看得出来,这4个人就是靠对广大framework和library的深入研究一举成名的。
我接触了一些java的程序员,他们是对framework有着执着的热情和迷恋。因此,对framework不那么明确的开发过程感觉很不适应。而另外一方面,php的程序员则对java下众多framework带来的漫长的learning curve和繁琐的操作深恶痛绝。
的确,framework对于简单的应用而言除了带来复杂的结构和性能上的损失,没有多少可以称道的优点。但是对于大规模的开发,这种从程序内部结构开始的强制约束是很有必要的。他可以避免开发人员各自为政,也可以让后继的开发人员能够快速的融于开发过程。
所以我们看到即使很容易free style的php开发在OO被引进之后也出现了不少的框架。而且这些框架在大规模的应用如yahoo bookmark中使用。
不过本文主要还是阐述自己的想法,我希望强调的是我希望有人和善的讨论,谢绝任何形式的语言暴力。
在wiki百科中间谈到软件framework的定义是[b]可重用设计[/b]的软件系统。这种软件系统有可能包括支持程序,代码库,脚本语言,或者其他可以将不同组件粘合成软件项目的工具。
framework定义的关键字实际上是可重用设计,我们在谈到一个framework的时候,总是会谈到framework遵循怎样的设计理念。一个framework通常会将很多的design pattern融合在一起,从而强迫使用者遵循framework的设计者的编程理念进行开发。
在jee中的表示层的框架中,大量的framework都是采用mvc的设计模式。而像spring这种dependence injection framework因为是针对对象的产生,从而也大量的使用了factory系的design pattern。
研究框架的过程实际上就是在深入理解design pattern,当然这些从GoF的原本中已经看得出来,这4个人就是靠对广大framework和library的深入研究一举成名的。
我接触了一些java的程序员,他们是对framework有着执着的热情和迷恋。因此,对framework不那么明确的开发过程感觉很不适应。而另外一方面,php的程序员则对java下众多framework带来的漫长的learning curve和繁琐的操作深恶痛绝。
的确,framework对于简单的应用而言除了带来复杂的结构和性能上的损失,没有多少可以称道的优点。但是对于大规模的开发,这种从程序内部结构开始的强制约束是很有必要的。他可以避免开发人员各自为政,也可以让后继的开发人员能够快速的融于开发过程。
所以我们看到即使很容易free style的php开发在OO被引进之后也出现了不少的框架。而且这些框架在大规模的应用如yahoo bookmark中使用。