喷一下为什么面向对象这么烂,还是有很多人在使用它?

ueharaai 发布于 2014/07/28 00:08
阅读 6K+
收藏 4

我觉得面向对象是编程界近三十年来最大的邪教,我要在别处说这话估计要被砍死,因为我生活在教众之中。后来我接受了这样的说法:如果没有面向对象写出大量臃肿无用的结构性的代码,不封装很多的层和抽象,不搞出各种注入和模式,不增加很多的调试负担,那么程序这个市场能做到这么大吗?像ThoughtWork这样的靠传播邪教的公司怎么生存哪?

最近换了个公司,发现手下人的代码风格是N年前那种我自己写出来的,屎一样的风格,而且也有新人血气方刚,直接叫嚷我对他们的指导违背了神圣的面向对象三大原则。我意识到我们的软件基础教育和十年前并无太大变化。

十年,IT界可以发生很多次更新换代了,为什么面向对象这个炒作起来的概念还在大行其道呢?

我的看法是,N年来,市场对编程劳力的需求一直存在巨大缺口,因为这个行业需求一直在高速的膨胀。

因此不论商业机构还是教育机构都希望通过面向对象编程来降低门槛,让更多的人进入这个行业,才不管这些人是不是真的适合这一行,因为有利可图,你花3,4万到一个机构学习编程,出来后就能拿5位数的工资,利润不要太高好吗?

对于初接受编程的人来说,OO是最形象化最亲切的表达方式了。我觉得呢,OO就像那些让你感到很快乐的小药丸,让你很high,然后把你累个半死!敲OO代码敲到手抽筋的场景你见过吗??我们真的需要那么多磕了药的年轻人进入这个行业吗?

现实的情况是,因为人人都懂OO,所以能够交流,但如果你要换种方式,可能就没法展开工作了。所以即使你意识到自己躺在屎堆,还是不得不继续在屎里摸爬滚打,如果你要找工作,一份是java的,一份erlang的,选后者不要犹豫。

加载中
3
xmut
xmut
月经贴!!!每种开发思想都有它的优点,也有它的局限性,如果你企图用它解决所有的问题,那就是你的错误,而不是开发思想的问题!!!!!!!!!!!!!!!!!
2
jQer
jQer

继承、封装、多态。

如果有人这么喊出来,立刻扇他两个大耳瓜子,这些都是毒药教科书的伪OO。

我会对他说,组合、抽象、接口。

渔樵耕读
渔樵耕读
回复 @铂金眼 : 那是不会。别往oo上抠屎盆子
甘薯
甘薯
不明白为啥要把设计模式的东西非要硬和OO扯上, 层主难道不明白非OO的语言也可以用这些东西么? 晕。OO的基本要素就是继承封装和多态,没有别的。 在这基础上才能扯到什么组合抽象和接口!
OSC首席键客
OSC首席键客
我一直不明白接口有什么用?我从来没用过!
渔樵耕读
渔樵耕读
组合、抽象、接口赞一个! 不要为了使用oo 而oo~
帖子列表
帖子列表
还是这个好记啊
2
崔钢
崔钢
其实是因为面向对象的设计技术并非那么的容易掌握。现实的确存在不少精妙的优秀设计,但是也有极多的糟糕混乱的程序。所以糟糕的局面往往不是技术导致的,而是没有正确使用这种技术的人导致的。而真正的大师级的人物无论使用什么样的技术都是值得认同的。
2
士别三日
士别三日

扣帽子,贴标签是政客干的无耻勾当。不应该是搞技术的人该干的。如果你反对面向对象

1.你要彻底了解面向对象

2.你要指出面向对象的不足

3.你要提出解决方案

1
宏哥
宏哥
两个凡是支持有思考能力的年轻人
1
L5_Railgun
L5_Railgun

骚年不错~ 以前我也经常吐槽,鄙视这堆烂货,而且也基本不用。

后面? 后面我就懒得为这些无聊的问题浪费口舌了……

真正想说的是,我觉得OO思想没有任何问题,问题出在Java,C++这类货色的臃肿和使用者的思维上。

看看go语言,或者window kernel,你就会发现OO原来也可以表达的这么简洁。

中山野鬼
中山野鬼
回复 @newzai : 实在看不出c11和c99有什么差异。。。哈,就是有的那些差异,实话,基本不太用。
newzai
newzai
回复 @中山野鬼 : 难道C语言就不出标准吗,出的比C++还快那么一点点,不过比起Java和C#的标准更新来说,C和C++标准的更新慢的像蜗牛一样。
中山野鬼
中山野鬼
回复 @newzai : JAVA的不懂,我能说,c++已经错了吗?除了出论文,还有啥用途,哈。当然我说你要跟上总是最新的标准。。
沉默狮
沉默狮
好像很厉害的样子。什么是oo
newzai
newzai
OO没有错,Java,C++也没有错。。Java,C++,不仅提供OO,也提供的FP,关键还是看使用者接受的是OO编程思想还是FP编程思想或者是多范式的编程思想;单纯的OO,单纯的FP都是死路一条;综合项目的实际情况,灵活的组合OO,FP才是正道。。
下一页
1
Lunar_Lin
Lunar_Lin

引用来自“艾米”的评论

骚年不错~ 以前我也经常吐槽,鄙视这堆烂货,而且也基本不用。

后面? 后面我就懒得为这些无聊的问题浪费口舌了……

真正想说的是,我觉得OO思想没有任何问题,问题出在Java,C++这类货色的臃肿和使用者的思维上。

看看go语言,或者window kernel,你就会发现OO原来也可以表达的这么简洁。

1.   oo 核心思想 原先只有封装,继承,多态(虚方法). 后来被信众 加了一大堆的东西. oo的这3样,好处是依次递减的 .  封装是最最起码的编程模式. 继承 让你能以看起来还算合适的逻辑套路 复用代码.  多态 在特定情况让你省去很多不必要细节的打搅, 专注逻辑. 这3样无错.   至于更深入的一堆oo思想, 甚至包括 伟大 的高内聚低耦合, 我都持 看情况的态度.
2.  java  用的少. 但看java代码实在觉得累.   形式和代码量  双重罗嗦.
3.  c++ 是多模式语言. 在oo道路上走的不算太遥远. 泛型才是它真正"走火入魔,秀牛逼, 集大成"的地方. 呵呵
 要知道所有C++的书 都在说 少用继承 多用组合, 本身就是对继承的某种反对, 对封装的强化.
4.  我一直坚持观点:  编程语言不存在理论上的漂亮和完美. 说实话, 编程语言就是方便人类产生机器能认识的机器码. 各种编程理论 本质上 就是方便大家写代码, 最好一行代码就能写出windows. 所以理论最好不要走火入魔了.  大家好用才是最佳!!!  编程语言本来就是实用工具, 何来理论?  实用第一.   教育oo方法, 总是提鸭子是鸟的例子,  但正方形也是矩形啊(真正动手写代码,会发现让正方形类 继承矩形类 是个有点SB的行为) , 所以说编程的oo就是oo, 不要扯犊子 搞什么 万物都是对象的邪教来糊弄人.

我一直反对太罗嗦 太抽象 太深入的 包含oo在内的所有编程理论.(so 我很反感uml )   oo本身3大核心思想 单纯来说还是方便快速用代码完成任务的.  个人支持oo, 但反感oo业界现状.
罗曙晖
罗曙晖
回复 @newzai : 有风格导向问题
newzai
newzai
回复 @罗曙晖 : 社区的氛围已经形成那样。再者也不是Java语言的强制性 要求;
罗曙晖
罗曙晖
java代码啰嗦到让人想吐,还有各种无穷无尽为了设计模式而设计模式的混账做派。
1
要吃九个橙子
要吃九个橙子
以前也会喷的,不管是语言,开发模型都会喷下,现在基本没这么喷了,不管用的什么做出好的产品才是王道。
1
GKTest
GKTest
每种语言、每种技术之所以存在,是因为有适合它们的场景,不能一概而论。当你的系统的数据表数量达到几百上千,且关联性很强的,如ERP之类的企业业务系统,这时候,无论从开发、维护角度,面向对象是唯一的选择。如果你的系统只有几个表,单表数据量是亿级别的, 面向对象就是楼主说的一文不值。
1
Erroooooor
Erroooooor

我看完了整个帖子和评论,试图找出楼主对于OO的反对的依据,很遗憾,没有找到,喷可以,但是你得给出依据,至少可以分享一些你几年在非OO上的经验之谈都可以,相信大家都会作为借鉴参考。一味的喷,而且喷完之后就不见人了,那给人感觉有点像挑事的(可能有点不好听)。

打个比方:两个人,其中一个人一味着说另一个人不好,但又不说哪里不好,也不说自己比他有什么好,这样就有点...
返回顶部
顶部