php MVC之争(一)
围绕着的一直是MVC。为什么每个人都说着MVC,都把MVC神化到如此强大的地步,真的是不明白,MVC到底有什么好处的。
在群里跟别人争论MVC,没一个人赞同我的观点。我的观点是MVC臃肿、不灵活。然后这个群中其他人别人的观点是MVC很灵活、很好用。但是他们说MVC并不是单单指cakephp、thinkphp、zf。还有的说discuz 、dedecms、wordpress也用到了mvc。(可以无视他们)
听到他们赞扬mvc的优点,我已经听习惯了。打开51job,里面的招聘PHP的,十之八九都会有一条精通MVC开源框架。但是他们说到discuz dedecms用到了mvc就真的很可笑。 。 discuz 和 dedecms 根本就没用到mvc。现实生活中的mvc其实就是指的开源框架(cakephp、thinkphp、zf之类的)。
一直到现在为止,还是没有用mvc来弄php,每次尝试都是感觉又繁杂又乱。一直想不到mvc有什么好处,我自己的代码可以执行完所需功能,不需额外的多余的代码,如果用了mvc,根本不清楚那一大堆文件夹里面的代码如何执行的。另外,mvc维护不方便。动不动报错,不执行,要执行一段代码平均引入三四十个php文件。。基本上忽略了硬件性能。而你又不能去改他的底层(如果去改还不如用自己的)。
。。。。。。。。。。。。。。。
感觉有些累了。。。。
不明白为什么能够用自己的方法写好一个网站,代码少,速度快,而且没有任何多余代码,维护方便 快速。
但是为什么非得要逼着用mvc。别人拿了我的代码直接给一个团队来做开发用都没有问题,为什么还非得用mvc ?
PHP本来就是一个简单的东西,数据的增、删、更、选,为什么要弄的这么复杂呢?
dedecms用到了cakephp吗?discuz用到了吗?wordpress用到了吗?phpwind用到了吗?
有哪个开源程序用到了所谓的主流开源框架?????????
。。。。。。
发现这个世界上很多事情都不是追求效率的,很多人都是盲目的追逐。形而上学。
java中的mvc才是真正的mvc,php中的mvc不是。
这个话题真的很够讲的,其实不光是php社区,就是java啦.net啦这些社区里,也是就这些
OO还是不OO,框架还是不框架,模式还是不模式....等等经常讨论来讨论去.....
随便说几句吧,
其实我们每个人写软件的时候都在追求使用某种模式或框架的, 程序写到一个规模(不需要很大),你自然而然地会为了优化而整理其结构,比如说重复的代码会写成函数, 很多web程序都把同样的请求预处理放进common.php里.... 等等, 随着软件规模进一步增大,这样的优化也就越多, 也就更需要从整体上来把握你的软件.
而这种对软件的整体把握,往往取决于你对这个软件的看法(抽象), 这种从整体上的抽象,其实也是一种为复用而作的对软件整体的优化,(重复代码写成函数这种是从细节做上的优化)
从这点上来说,几乎每个人都在用框架,不用别人的,就会用自己的,不用MVC,也会用ABC,CBD(瞎说的)
而为什么现在MVC这么流行,没啥特别的,第一个,MVC还是挺好的,第二个,别的现在没它这么流行....
以后呢,很难说....关键在web本身在变化,IT在变化,再过若干年,编程的思路和方法也许会完全不同.
那么用不用MVC当然也在各人,如果你觉得你的框架更好,当然可以用.
一个好软件的成功因素很多,不要说不MVC,就是不OO,就是不高级语言,只要你够牛,理论上用汇编一样可以写出好软件来.(实际上所有软件最终都是编译/解释成了机器语言,所以理论上一定能).
ok,上面说的是理论上.....待会我说实际上.....
实际上....
使用MVC及相关成熟框架还是有很多好处的,
经常听人说自己写的code不比用这些成熟MVC框架差,但是如果拿出来真的开源的话,是否会比zend这些更有竞争力呢?
至少有一点,这些框架开源已经有一定时间,广泛使用,存在的bug较易被发现和改正....就这点,很多闭源软件是比不上的(更不要说个人的东西了),还有,比如zend的开发方式也是开放的,大部分模板都是在社区讨论后才开始开发,不断根据社区的反馈修改,因此也更能适应大部分人的需要.
对企业来说,使用成熟框架,除了减少开发时间外,还可以减少培训和新人适应时间,可以容易得到社区支持(比如问题容易google到答案).好处是显然的,所以你看到那么多招聘需要MVC就很合理.
对我来说,我也倾向于用成熟框架,尤其在新项目或已有项目没有建立在稳定框架基础上的.一个是我想节省时间,而且我也绝对写不出zend那样水平的代码.
这里说的都是大多数情形,对特定企业的特定项目,需要考虑的因素很多. 用或不用都没有什么对和不对.
================================================================================
再谈点具体的,
对你的观点"MVC臃肿、不灵活", 这个我也反对 :)
MVC本身只是一个概念,谈不上臃肿,不灵活, 其实你说的是这些个框架(具体的实现), 也就是说是cakephp不好,或者zend不够好,不是MVC的问题 (个人认为,zend就比cakephp简洁,灵活)
不过你那zend/cakephp它们和你自己的比,稍有不公,因为它们是设计给整个社区的通用框架,而你的必然是针对你已有项目,针对范围大大不同. 对他们来说,必然不是每个模块都对每个项目必须的,但是只有提供了这些丰富模板,他们才能适应不同项目(这才谈得上灵活吧), 而且,比如zend,各个(大部分)模板相对独立,没用到的模板,不会参与运行,也不会有严重影响效率的问题.
( 如果较真地说,框架当然会影响一点效率,和最直接的php代码比起来的话, 因为必然多点处理啊...不过这种比较有点像拿高级语言和汇编比, 高级语言当然慢,但是......这个关系到到底怎么判断软件质量的问题,有空再聊 )
对他们(是谁啊)说discuz!等也算MVC的这话... dedecms我从没看过,不知道,不过discuz怎么也没看出MVC来......这个也说明了好(这里指卖得好的:))软件不是一定要MVC,这个我支持你
再说你的问题:"有哪个开源程序用到了所谓的主流开源框架"
这个目前的确不多...原因大概我能想到的:
目前这些有名的开源项目很多已经存在很多年,而起步时MVC的框架还没成熟....
比如discuz和wordpress都是2002年前后就有了,而zend framework是2005年才开始,
这中成熟的开源项目都是经过一定时间才能成熟的, 所以目前不多也很正常,将来一定会多起来.
还有,作为一个专门的开源项目来说,相对需求比较固定,用自己的框架也很正常.
zend有很多企业内部在使用,大部分不开源,或还没有开源..
“使用成熟框架,除了减少开发时间外,还可以减少培训和新人适应时间,可以容易得到社区支持”
就这句就够了, 写出来的代码至少让人一下看懂。还要花时间学习,比较浪费时间和资源
MVC 只是一种思想(或说是架构)而不是产品
即便是你在使用面向过程的方法书写代码时,也不可避免的受其影响(严格的说不是受他的影响,而他是方法的抽象)
随便打开一个你的程序,都可以看到:这部分是负责输出界面的、那部分是负责算法的,他们之间又是由控制流代码联系在一起的
MVC是编程思想,使你的代码更具可读性,更易维护。
各种框架应用了MVC思想。
可以这么说吧,框架之于MVC,正如黑马之于马。
要达到目的地,可以骑黑马,也可以不骑,可以骑其他马,甚至可以步行。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。