把面向对象,设计模式,框架扔到垃圾桶里面去

宏哥 发布于 2011/07/12 10:44
阅读 7K+
收藏 2

程序就是输入,输出,用名字来管理数据,逻辑段。

面向对象,设计模式,框架都不重要。重要的是行业,商业知识。

把行业,商业知识转化为能够带来效益的东西,产品,服务,才是最重要的。

以下是话题补充:

@宏哥:我在这里说的正是程序的真正的方法和捷径。我的第一句话,应该没有几个人看得懂。 (2011/07/12 13:58)
@宏哥:@G.,你可以看看C和C++这两种语言在C++诞生之后的这么多年。谁更成功?C如何用简单的特性进行封装,管理。击败C++的面向对象。所有C++表达的面向对象特性,在C都可以用面向函数的指针,和static关键字两样简单的东西达到相同的目的。大多数人根本不知道,面向对象的实质,就是名字的管理,它不是唯一的方法。 (2011/07/13 09:46)
@宏哥:大型系统里面用的设计方法,在OO这个概念出来之前,就已经用了几十年了。问题就在这里。OO只是换了一个形式而已,而且这个形式极其复杂,甚至比解决这些问题本身更复杂。 (2011/07/14 10:16)
@宏哥:@xyz555 :Java的时代,web领域它没有对手,ASP,PHP都不够成熟。在除了web以外的领域,java一塌糊涂,它对IO,UI的抽象,可以作为OO的反面教材。一句话总结:一个用于访问数据库的语言。 (2011/07/15 23:52)
@G.:粗想, 以为是Unix哲学. 细想一下,似是而非. 不理解. (2011/07/12 16:51)
@xyz555:如果宏哥认为C++够不上成功的标准,那Java呢? (2011/07/15 23:02)
@xyz555:如果宏哥认为C++够不上成功的标准,那Java呢? (2011/07/15 23:02)
显示更多 (2)
加载中
2
o^_^o
o^_^o

太武断了,把目标和实现目标的手段混为一谈!

 

1
Binny
Binny

浮躁~~

现在中国很多公司都与LZ的观点一致,不管用多烂得代码、多烂得框架、多烂得数据库表结构。反正能把钱赚到就行。什么可维护行性、稳定性、扩展性、灵活性通通都是废物,钱才是王道。

这也造就了一堆号称很大的烂项目!

很不幸,我参与过几个这样的项目!

Binny
Binny
@dd: 同感同感~
ddatsh
ddatsh
我一直在这种烂项目。。
1
dy810810
dy810810

宏哥一向激进,我还是那句话,总有人喜欢做研究。世界这么美妙,何苦强求别人跟你一样。

程序员何苦为难程序员。

1
张金富
张金富
其实吧,关系更重要!酒量上去了,马屁拍好了,技术和业务都不用懂了,让码农们去干就行了。
1
李俊
李俊
关注点不同,立场也会不同。就算是同一个公司,完全可以即有奉框架为硅藻的人,当然也要有视业务为正途的人。各取其道,各得其所,多种思想的融合,才能有诞生新思想的土壤。所以楼主的话可以理解,不能苟同。
1
宏哥
宏哥

引用来自“kinglynn”的答案

楼主每次出手都不同凡响

我说的这些东西,其实在商业环境中,已经是共识,是常识了。

只不过,网络上的哇哇叫人,普遍低端,那些知道的人,又认为这个太小儿科,不值一提。

所以,劣币驱逐良币,造成,网络上的东西,大多都是瞎胡闹。

1
天天笑笑
天天笑笑

引用来自“宏哥”的答案

引用来自“xichen”的答案

这个问题好比武功,您内力浑厚随便打出一套罗汉长拳都可破敌杀人。要是没内功的,独孤九剑、凌波微步则更能救命。

对一个新入行的人来讲,面向对象、设计模式、框架是让他们能够快速进入工作的途径。要不然等青葱们进入到捻叶成刀的境界恐怕热油都凉了。

我们的程序员不乏天才,但是当今的软件开发更需要协作,面向对象、设计模式、框架是让不同编码个体快速进行协作的有效方式。不让您的代码2月前只有您和上帝看的懂,2月后就上帝明白了。还干点啥不?国内技术人员更多的是在表现自己有多NB,而不是认真思考我们该如何共同协作。

我说的东西,核心你没有理解,不是说完全抛弃OO.而是,简化应用他们的特性。尽量少用。

OO本身无法解决协作的任何方面。协作不是OO的问题。使用语言最简单,最基础的特性,不追求OO,恰恰是为了协作,为了更高的质量,更高的效率,更一致的方法。而不是奇技淫巧。这里面说到OO的本质是名字管理,就是为了明晰这个方向。

软件行业太多闭门造车的东西。现在很多所谓的CRUD,UI软件,什么都干不了,一上来就几十M的库,为了OO,为了抽象,却什么都干不了。

有次我需要选择供应商,BPM Solution,国内一家很大的厂商,上来就讲java,讲OO,讲数据库抽象层。 我们要求15分钟,产生一个流程,自定义各种字段,根据字段的数据,自动选择流程执行,他们做不到,只好让他们走人。国内这样的东西太多了。都在闭门造车,用oo,aop,web service产生大量的无用的软件,靠营销而不是给用户解决问题。他们的销售人员很难,开发人员也很难,这些都是没有什么价值的。他们的销售团队驱车几百公里,因为我们是很重要的客户,我为他们感到可惜。但是,软件不能用,没有办法。

现在很多软件过度设计,那因为没有理解面向对象的精髓,但这并不是oo不行,当然oo的本质也绝不是名字管理。闭门造车的东西很多,软件厂商的软件质量问题,这些都需要检讨,但这些也只能说明他们没搞懂oo,没运用好oo,并不能说oo和设计模式不行,这是一们很深的学问。
宏哥
宏哥
@天天笑笑: 看不出接口比函数指针高明在你哪里,并且在OO概念出现之前,函数指针已经用了几十年了。
天天笑笑
天天笑笑
@宏哥: 用c的人如果对指针都不了解,那就别说懂c语言。你只是从实现的角度去看问题,没错,他们是都可以实现相同的功能,当时,对接口的理解要站在整个系统抽象的高度。
宏哥
宏哥
@天天笑笑: 你对函数指针并不了解。函数指针和接口是完全一样的东西。C的大规模应用当中,应用非常多。并不是OO的发明。
天天笑笑
天天笑笑
@宏哥: 如果把接口当成只是函数而已,那我只能说你对接口的认识有限。
宏哥
宏哥
@天天笑笑: 那是换了OO皮的函数而已,改个名称,叫接口,就好象java里面的static,其实就是全局变量。这种叫做奇技淫巧。
下一页
1
宏哥
宏哥

引用来自“笨蛋EGG”的答案

引用来自“宏哥”的答案

引用来自“笨蛋EGG”的答案

总觉得宏哥的观点比较极端的说……呵呵·····宏哥别介意……

咋一看的确如你所说,

其实程序那些玩意,基础好的人,3-6个月基本就能完全掌握

但是行业,商业知识,需要几年,几十年去学习

恩··完全同意···相对性的业务知识是要较长期的累积的····

但是,我觉得如果把你所说的那些都丢掉的话,很多时候,同一个业务知识水平,但做出来的东西相应实用、效率都是有所差别的,我就是这样的人,你要我写代码实现某个功能或模块,没问题,但是要我设计的话,我可能设计得比较低效又或者我需要更多的时间和空间,这样就会造成项目的运行低效或进度低效……

所以我个人觉得业务知识在项目中虽然很重要,但是有面向对象,设计模式,框架的知识也是比较重要的··当然没有或较少这方面的知识,项目也是可以出来的,呵呵……

我刚毕业的时候,做接口程序,把一些东西抽象出来,分层,测试,花了很多时间,别人回家了,我还在银行里面做,力求把程序做得更加OO,更加抽象。抽象之后,就有很多关系,调试也更加复杂。所以很辛苦。

另外一个同事,直接把一个业务输入/输出对于一个函数,编写出来,相同的东西,直接拷贝过去。然后他去旅游了。他的程序特别容易调试,简单,明了。

现在回想起来,他才是真正掌握抽象的精髓,就是隔离。一大堆关系,都不如没有关系来得简单明了。现代的设计精髓之一,就是减少关系,依赖,而不是研究如何建立一大堆对象和对象之间的关系。

现在很多的设计,就是建立一大堆臆想出来的O,再给他们建立关系,然后去修补那些永远没有结局的bug.结果是,软件什么功能都没有,就是bug多,代码多,库多。

 

1
天天笑笑
天天笑笑

引用来自“宏哥”的答案

引用来自“天天笑笑”的答案

引用来自“宏哥”的答案

引用来自“笨蛋EGG”的答案

引用来自“宏哥”的答案

引用来自“笨蛋EGG”的答案

总觉得宏哥的观点比较极端的说……呵呵·····宏哥别介意……

咋一看的确如你所说,

其实程序那些玩意,基础好的人,3-6个月基本就能完全掌握

但是行业,商业知识,需要几年,几十年去学习

恩··完全同意···相对性的业务知识是要较长期的累积的····

但是,我觉得如果把你所说的那些都丢掉的话,很多时候,同一个业务知识水平,但做出来的东西相应实用、效率都是有所差别的,我就是这样的人,你要我写代码实现某个功能或模块,没问题,但是要我设计的话,我可能设计得比较低效又或者我需要更多的时间和空间,这样就会造成项目的运行低效或进度低效……

所以我个人觉得业务知识在项目中虽然很重要,但是有面向对象,设计模式,框架的知识也是比较重要的··当然没有或较少这方面的知识,项目也是可以出来的,呵呵……

我刚毕业的时候,做接口程序,把一些东西抽象出来,分层,测试,花了很多时间,别人回家了,我还在银行里面做,力求把程序做得更加OO,更加抽象。抽象之后,就有很多关系,调试也更加复杂。所以很辛苦。

另外一个同事,直接把一个业务输入/输出对于一个函数,编写出来,相同的东西,直接拷贝过去。然后他去旅游了。他的程序特别容易调试,简单,明了。

现在回想起来,他才是真正掌握抽象的精髓,就是隔离。一大堆关系,都不如没有关系来得简单明了。现代的设计精髓之一,就是减少关系,依赖,而不是研究如何建立一大堆对象和对象之间的关系。

现在很多的设计,就是建立一大堆臆想出来的O,再给他们建立关系,然后去修补那些永远没有结局的bug.结果是,软件什么功能都没有,就是bug多,代码多,库多。

 

别忘了,减少关系,依赖, 是面向对象和设计模式的目标之一。
OO在这个目标上,只有稍微的帮助。否则那么多的大规模软件,操作系统,数据库,中间件,api就不会是c的了。
还要补充一点,面向对象和设计模式是一种思想,跟语言是没有关系的。
1
w
wugongyanshi

完全同意. 太注重技巧反而误入歧途,最基础的也是最重要的. 草木皆可为剑,是浮躁后的升华.  当然要经历过浮华才能返杂为简, 当你厌烦了面向对象时再沉下心来思考,可能就会发现原来结果最重要

返回顶部
顶部