关于面向对象的一次争论

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


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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值