英语轻松读发新版了,欢迎下载、更新

不要用面向对象的语言写着面向过程的代码

morpheus1984 发布于 2013年12月27日 | 更新于 2013年12月31日
tinyfool nsm1168 cpapa 等3人欣赏。

今天在一个技术群里有人为了在多个页面实现类似按钮居然说粘贴代码。我当时就疯了。写在基类里面不就完了么。忽然想到一句话,很多人都是在用面向对象的语言写着面向过程的代码。

想想自己当初也是慢慢在写代码过程中慢慢领悟,总结,转变的。很想听听大家如何在自己的项目中做好解藕,复用。有兴趣的人可以分享下自己的经验哈。。。

共15条回复
清醒疯子 回复于 2013年12月28日

能放到别的文件的代码不放到一个文件里。

能放到别的方法的代码不放到一个方法里。

我以这两个为原则,然后再根据实际情况取舍。

即使是在同一个文件里,一句代码调起整个功能的感觉也比复制一大堆舒服太多:)

即使是在同一个方法里,多用空行把不同部分分类清楚,也会舒服很多:)

galebo 回复于 2013年12月28日

代码评审呢。如果你公司是这样,建议你离开吧,否则是接下来的各种恶心

tinyfool 回复于 2013年12月28日

其实粘贴代码这种写法,也不是面向过程的写法,这叫做面向粘贴的写法。在面向过程的代码里面也是大量复用的,任何一段重复的代码都应该考虑被写成函数。

yangjie6020 回复于 2013年12月28日

粘贴代码 最大的好处是节省时间 当你发现复用的时候 你再去抽象 还是要消耗时间的 这是偷懒的做法罢了 当然 我有时候很偷懒。。。。

tinyfool 回复于 2013年12月28日

4楼 @yangjie6020 粘贴代码的好处是快,但是代码一旦被粘贴到2处以上以后,就变成了非常顽固的容易出问题的地方,经常会出现某个bug出现在某一代码块,你改了一处,另外一处没有改的问题

byunting 回复于 2013年12月28日

我之前实习的公司就是这样。重复代码特别多,而且为了赶项目进度,copy以前混乱的代码,再改,变得更加混乱!

nickel 回复于 2013年12月28日

超过3行重复的代码我都会掂量一下是否考虑复用。最怕就是一旦需要修改时到处找类似逻辑的那种崩溃。

董一凡 回复于 2013年12月28日

我不清楚你实际的决策是什么,但是写在基类里就完了这个决策必须是一个非常深思熟虑的结果。继承一定一定得是你没有办法的时候再用。面向对象里,继承是最强的耦合关系

就仅有的信息猜测,你的这个例子是有多个页面,而每个页面是继承自同一个基类。这个设计本身已经值得怀疑,你的这个基类的用意到底是什么,如果仅仅是因为这几个页面有某个长得像的元素,比如同样的页头,那用继承并不见得是个好主意,用组合就足矣,至于你说的因为有相似的按钮就写在基类,这也很容易犯一个为便利而继承的问题,你思考一下,所有适用于基类的场合,是不是都一定适用于你的所有派生类,如果有一个例子不适合,那你的继承决策就或多或少出了问题

上边的说法其实就是面向对象最最基础的李氏替换法则。很多人要么没学过,要么学了也忘记了。

一定要记得继承是一件非常非常严肃的事

清醒疯子 回复于 2013年12月29日

8楼 @董一凡

非常有价值的分享啊:)谢谢:)

zhangmeteor 回复于 2013年12月29日

其实,刚开始写的时候这么写没问题啊。。定期做重构就好了啊,谁一开始就所有的问题都能想到呢。。

riven 回复于 2013年12月30日

以前提倡持续发布,现在提倡持续重构

董一凡 回复于 2013年12月30日

10楼 @zhangmeteor 写代码是大脑写,不是用手写。想的时间要远远多于写的时间。

sixer 回复于 2013年12月30日

想起了一句话:继承是is a,组合是has a

morpheus1984 回复于 2013年12月30日

12楼 @董一凡 赞,写代码是用脑子而非是手写。我很喜欢那些写代码前很纠结,写代码时如行云流水的程序猿。

玉楼 回复于 2013年12月31日

强烈建议楼主把标题改了!每次看到这个标题都觉得是讨论编程思想的事,总想进来看看——其实就是一个编程过程中未考虑复用的问题。

本帖有15个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]