新开一个分类,记录工作学习中的一次次争论;虽然说是争论,尽管可能面红耳赤,但其实自己也有很大的提高;希望自己在每次争吵后都能有点滴的提高;分享出来,只因为想让更多的同僚和前辈们提出自己的观点,为了更多的提高。

今天做一道Topcoder上面的算法题,我按照题意传了六个参数给构造方法,然后公司的前辈看到我的写法直接说我的代码自带加密属性(他当时并不知道我究竟做的是啥),然后我也很奇怪,就问他为什么呢?他笑笑,然后说你传的六个参数可以封装成一个类啊,这样就可以不用传那么多参数,并且你传的参数为什么会是a,b,x0之类的东西,这不是自带加密是什么?其实我也很尴尬,平时给方法,变量取名字的时候大多是全英文(为了可读性),但这次只是按要求做一个题,而且是为给自己看的,也就没注意这么多,给前辈解释了(我反问了一句为什么要封装),然后就提到了OOP,类,属性,总之是一大波的争论,也引来其他前面的观望;

事情的起因大概就是这样;其实,关于这次的争论点主要是这样:封装,OOP;前辈的观点是:6个参数,为什么不封装?假如有很多个参数,不封装就会出现很多问题(可读性,维护等等等),意思就是只要传几个参进来就得封装成一个类,然后问我什么是面向对象,什么是OOP。blabla...;我的观点是:什么是对象?为什么要封装?怎么封装才合理?因为做的那道算法题的几个参数我觉得并不适合封装,就打了一个比句,人身上总不能长出狗的尾巴吧?我想的其实很简单,我不是反驳对象,OOP和封装,但是我们要知道在什么时候封装,怎么封装才合理?如果一个类里面的属性或者方法本身都不属于他,强行封装成一个对象到底是对还是错呢?从结果来讲,这个影响并不大,都能正确输出,实现我们想要的功能,代码的可读性看似是提高了很多;但是我真的不能接受这种思想(可能有洁癖吧=-=),我绝对不能让人用双手双脚的在地上爬,人身上也不能长出狗的尾巴,人和狗是有一个共同的父类动物不错,但是也不能强行把人和狗划分为具体的一类吧?

后来也去请教了其他的前辈,也在网上搜了部分相关资料,目前很多可能会把不相关的类型和方法进行组装就变成了一个新的对象,其实也有一定的道理!

面向对象固然重要,但是我们还是得有一定的基本原则,不能碰到几个分散的属性就封装成一个类,那你这个类的意义到底在何处,也许这个问题真的值得深思!

希望有不同见解的小伙伴来解脱解脱我~

关于面向对象的一次争论相关推荐

  1. 测试和恢复性的争论:面向对象vs.函数式编程

    Michael Feathers最近的博文在博客社区引发了一场异常激烈的论战.Feathers发表言论说一些面向对象编程语言的内嵌特性有助于测试的进行,并且使用面向对象编程语言编写的代码更容易恢复. ...

  2. 面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念

    面向对象编程概念 by Alexander Petkov 通过亚历山大·佩特科夫(Alexander Petkov) Have you noticed how the same cliche ques ...

  3. 捅破窗户纸:如何从过程到对象—For金色的海洋以及所有为面向对象而困惑的Tx...

    本来不想写这篇很挨打的Post,不过在最近几天的最热的几篇Post里面看到无数的Tx为了面向对象的争论,感触颇多,遂作此篇. 鄙视OO的也进来鄙视我吧.望OO达人多多指正. 前头有一篇关于对象持久化的 ...

  4. 面向对象,面向服务(转)

    面向对象,面向服务 转自(http://www.cnblogs.com/rib06/archive/2007/05/23/756385.html) 关于这两个概念之间的联系.区别,在SOA提出之初就已 ...

  5. java理念_java温故而知新(9)OOP(面向对象编程)理念

    Object   Oriented   Programming   (面向对象的程序设计) 1.定义 面向对象程序设计(OOP)的具体定义很难下,也很容易因此而引起争论,在   Object-Orie ...

  6. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  7. 设计模式是用来弥补面向对象编程缺陷的方法总结

    面向对象和设计模式都是大家耳熟能详的概念.面向对象是以对象为基本元素,对数据与逻辑行为进行封装.实现面向对象过程的方法是使用抽象,同时在使用抽象进行分析设计的时候就产生了类型,并隔离了抽象与实现.这个 ...

  8. 神话与谬误:争论C++前你应当知道什么

    最近写了一篇关于C++0x Concepts的文章,意料之外地引起了一场小规模口水仗.回各位帖子的同时,回想这些年C++社群的大小争论,觉得有必要把一些长久以来在C++争论中出现的误解列举出来. -H ...

  9. 面向对象编程──走错了路?

    作者 Dave West ,译者 池建强  "如果我们现在回头看一下面向对象这个思想是从哪来的,如果以基于消息传递机制的Smalltalk-80的特性来衡量现在的状态继承和面向对象的使用方式 ...

最新文章

  1. C++Builder 2010深入TApplication类之事件
  2. 移动APP开发中8大安全问题
  3. 使用springboot发送带附件邮件(465端口加密邮件)
  4. CentOS6.7安装scala2.11.7
  5. SAP Spartacus 和 SmartEdit 协同工作需要遵循的协议
  6. 【开发工具之Spring Tool Suite】6、用Spring Tool Suite简化你的开发
  7. 设计撑百万并发的数据库架构
  8. ProtoBuf 常用序列化/反序列化API
  9. HTML5网络科技企业网页模板
  10. 九宫格 java_java输出九宫格的程序问题
  11. ubuntu下mysql无法启动_升级Ubuntu到10.04后MySQL无法启动
  12. php 调试 500,利用WordPress开发者调试模式解决PHP500内部服务器错误 | 骤雨打新荷...
  13. python json()是什么函数_python 处理 json 四个函数dumps、loads、dump、load的区别
  14. [USB-Blaster] Error (209040): Can't access JTAG chain
  15. 用组策略彻底禁止USB存储设备、光驱、软驱、ZIP软驱
  16. 兄弟连Linux教学——第三讲 给初学者的建议
  17. 关于IplImage中widthstep的大小与width,nchanne
  18. fig r函数_R语言图形函数par()参数应用举例.pdf
  19. Autoware Docker安装和仿真
  20. 硬盘数据传到计算机,如何把旧电脑硬盘上的数据复制传输到新电脑上

热门文章

  1. STIL文件(DFT/IC测试方向)
  2. Canvas drawText字体居中
  3. [小说]魔王冢(尾声)
  4. Qt样式表之 QSS 语法介绍;QLineEdit、
  5. window 右击 下划线快捷键
  6. i3 10100Y怎么样 相当于什么水平
  7. 将普通项目转换成Maven项目
  8. 谷歌Transformer再升级——新模型实现性能、速度双提升,发展潜力巨大
  9. 软件测试需要学什么?
  10. 移动硬盘不显示怎么办?恢复硬盘的方法汇总