- 浏览: 342292 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
从开始编程到现在,呆过的公司,呆过的每个项目组,几十上百行的函数都比比皆是。以此为美的还不在少数,认为这是“紧凑”;变量太多也不认为是问题,统统提到函数开头就行了,认为这样“更易读”;变量命名也很简短,一个字母的,两个字母的大行其道,也不认为是问题,可能认为这样并不影响阅读,相反还使得代码更简短。代码嵌套太深也不认为是问题,反对分拆函数,认为不是公用的代码就不用分拆,是否分拆与函数长度基本没有关系。
我已经不相信国内有严格践行重构的公司了,觉得多数公司的代码都是这样写的。
尽管阅读了《重构》一书,并自认为初窥门径,但仍无法说服同事们,除非他们也读过并认同。在认为重构就是伤筋动骨,是每隔一段时间就进行一次的大修的同学面前,直接向他们灌输书上的做法确实不行。我说变量应该紧贴逻辑块,就近原则,全部提到顶部不容易阅读,且相当于全局变量,应该限制作用域;但他们认为放在顶部就是更容易阅读。在怎么样更容易阅读方面起了争执,而且没有办法解释清楚。因为以我目前的功力和表达能力,我确实没有办法解释盐为什么是咸的,醋为什么是酸的。
此言差矣,如果做的事情同事和领导不认可,那就很严重了。而且,这种质量的团队,我现在认为是绝大多数。
说出了我的心声,确实得有兴趣驱动才行。我自己有一些代码洁癖,看到那些乱七八糟的代码,唉...我这边连最基本的代码缩进都不讲究,废弃的代码直接注释掉,程序里都是System.out.println("aaa");之类的调试语句。每一个业务都是一坨代码的堆积,if else能嵌套10多层,而他们还以自己用一千多行代码实现了一个复杂的业务无比自豪。当你维护这些代码,基本上就是在滚鼠标的滚轮,都是一些老员工,说都没法说,沉闷!
大言不惭
你以为世界上那些著名的开源软件都是一次性写好就不作修改的吗?
赞成
同意
而且重构是有风险存在的,一般重构是建立在强大 的单元测试基础上的,没有足够的测试,谁会冒险去做一件没有直接经济收益还可能会出错的事,在没有领导的支持的情况下,这完全就是受累不讨好的事
你说没有收益应该指的是直接经济收益吧?
我已经不相信国内有严格践行重构的公司了,觉得多数公司的代码都是这样写的。
尽管阅读了《重构》一书,并自认为初窥门径,但仍无法说服同事们,除非他们也读过并认同。在认为重构就是伤筋动骨,是每隔一段时间就进行一次的大修的同学面前,直接向他们灌输书上的做法确实不行。我说变量应该紧贴逻辑块,就近原则,全部提到顶部不容易阅读,且相当于全局变量,应该限制作用域;但他们认为放在顶部就是更容易阅读。在怎么样更容易阅读方面起了争执,而且没有办法解释清楚。因为以我目前的功力和表达能力,我确实没有办法解释盐为什么是咸的,醋为什么是酸的。
评论
19 楼
hyj1254
2013-12-16
Shen.Yiyang 写道
如果你的团队没有建立完善的细粒度的单元测试,对依赖没有良好的管理,我想你也不要说服任何人重构了,一来成本肯定很大,二来这种质量的团队和项目不值得浪费生命。。。
此言差矣,如果做的事情同事和领导不认可,那就很严重了。而且,这种质量的团队,我现在认为是绝大多数。
18 楼
ygyz03
2013-12-14
zqb666kkk 写道
重构 代表这 设计初始阶段 的失败 重构只是为了用一个错误去弥补另外一个错误,如果项目很烂 要么 废弃重做 要么 ,就是一烂再烂 看你如何选择
很多公司以为重构是在做一件有意义的事情 ,我只想说 我去年买了个表
前两个月,接了一个项目,交给我维护,烂的都没法看,索性自己重写了一个!烂东西越改越烂,注重重构的公司至始至终必定对项目有严格的要求,人家做重构是顺理成章的。不像大多数公司,前期着急赶进度,又没有统一的编码规范,到最后了,才想起来重构...那不就是那些2B项目经理挂在嘴边ZB用的么!很多公司以为重构是在做一件有意义的事情 ,我只想说 我去年买了个表
17 楼
ygyz03
2013-12-14
white_crucifix 写道
我和楼主一样也是一个重构爱好者,不过我其实深深的理解楼主说的那些同事。因为重构这件事情,必然是以兴趣为驱动的,当一个人完全对这个系统没兴趣的时候,他是不会打从心底想去做优化重构的。你愿意重构的系统必然是你喜欢的,想要做的更好,写出完美优雅的代码,这其实是出于一种兴趣驱动,你重构时充满着激情。有些人不喜欢大动干戈,因为本身对系统也不报太多的激情,需求频繁的修改,前期都无所谓的功能后期都要赶工做出来,界面粗糙,重构完领导也不一定让你提交,等等等等。总而言之因为这个系统不是你的,没把它当作自己的心血,以后提到这个系统的时候也不会兴奋,“哦,以前我做个这个,大概是这个样子的”。我们看到很多开源项目,代码写得很好,人家不一定是大牛,但代码都是经过精心雕琢的,因为这是属于某人或某团队自己的东西,有激情。所以,什么样的系统值得你去重构,什么样的系统不值得你花时间去重构,了解清楚了自己就不怎么会生气了吧~
说出了我的心声,确实得有兴趣驱动才行。我自己有一些代码洁癖,看到那些乱七八糟的代码,唉...我这边连最基本的代码缩进都不讲究,废弃的代码直接注释掉,程序里都是System.out.println("aaa");之类的调试语句。每一个业务都是一坨代码的堆积,if else能嵌套10多层,而他们还以自己用一千多行代码实现了一个复杂的业务无比自豪。当你维护这些代码,基本上就是在滚鼠标的滚轮,都是一些老员工,说都没法说,沉闷!
16 楼
xjjaid13
2013-12-14
white_crucifix 写道
我和楼主一样也是一个重构爱好者,不过我其实深深的理解楼主说的那些同事。因为重构这件事情,必然是以兴趣为驱动的,当一个人完全对这个系统没兴趣的时候,他是不会打从心底想去做优化重构的。你愿意重构的系统必然是你喜欢的,想要做的更好,写出完美优雅的代码,这其实是出于一种兴趣驱动,你重构时充满着激情。有些人不喜欢大动干戈,因为本身对系统也不报太多的激情,需求频繁的修改,前期都无所谓的功能后期都要赶工做出来,界面粗糙,重构完领导也不一定让你提交,等等等等。总而言之因为这个系统不是你的,没把它当作自己的心血,以后提到这个系统的时候也不会兴奋,“哦,以前我做个这个,大概是这个样子的”。我们看到很多开源项目,代码写得很好,人家不一定是大牛,但代码都是经过精心雕琢的,因为这是属于某人或某团队自己的东西,有激情。所以,什么样的系统值得你去重构,什么样的系统不值得你花时间去重构,了解清楚了自己就不怎么会生气了吧~

15 楼
BuN_Ny
2013-12-14
谢继雷 写道
这没什么奇怪,奇怪的是彩票既然是负收益,但还是有这么多人会买,奇怪的是明知吸烟有害健康,还是有这么多人在大庭广众之下吸啊吸,奇怪的是明明居住在中国,却还要办暂住证。

14 楼
white_crucifix
2013-12-14
zqb666kkk 写道
重构 代表这 设计初始阶段 的失败 重构只是为了用一个错误去弥补另外一个错误,如果项目很烂 要么 废弃重做 要么 ,就是一烂再烂 看你如何选择
很多公司以为重构是在做一件有意义的事情 ,我只想说 我去年买了个表
很多公司以为重构是在做一件有意义的事情 ,我只想说 我去年买了个表
大言不惭
你以为世界上那些著名的开源软件都是一次性写好就不作修改的吗?
13 楼
zqb666kkk
2013-12-13
重构 代表这 设计初始阶段 的失败 重构只是为了用一个错误去弥补另外一个错误,如果项目很烂 要么 废弃重做 要么 ,就是一烂再烂 看你如何选择
很多公司以为重构是在做一件有意义的事情 ,我只想说 我去年买了个表
很多公司以为重构是在做一件有意义的事情 ,我只想说 我去年买了个表
12 楼
谢继雷
2013-12-13
这没什么奇怪,奇怪的是彩票既然是负收益,但还是有这么多人会买,奇怪的是明知吸烟有害健康,还是有这么多人在大庭广众之下吸啊吸,奇怪的是明明居住在中国,却还要办暂住证。
11 楼
minimu
2013-12-13
成本优先是现在大多数公司的策略;尽管到最好,成本很难hold住
10 楼
dwangel
2013-12-13
我总觉得refactoring翻译成重构其实不好。
我觉得那本书 讲的是 小步长 代码调整 来降低总代码的熵值。
我觉得那本书 讲的是 小步长 代码调整 来降低总代码的熵值。
9 楼
lgm277531070
2013-12-13
white_crucifix 写道
我和楼主一样也是一个重构爱好者,不过我其实深深的理解楼主说的那些同事。因为重构这件事情,必然是以兴趣为驱动的,当一个人完全对这个系统没兴趣的时候,他是不会打从心底想去做优化重构的。你愿意重构的系统必然是你喜欢的,想要做的更好,写出完美优雅的代码,这其实是出于一种兴趣驱动,你重构时充满着激情。有些人不喜欢大动干戈,因为本身对系统也不报太多的激情,需求频繁的修改,前期都无所谓的功能后期都要赶工做出来,界面粗糙,重构完领导也不一定让你提交,等等等等。总而言之因为这个系统不是你的,没把它当作自己的心血,以后提到这个系统的时候也不会兴奋,“哦,以前我做个这个,大概是这个样子的”。我们看到很多开源项目,代码写得很好,人家不一定是大牛,但代码都是经过精心雕琢的,因为这是属于某人或某团队自己的东西,有激情。所以,什么样的系统值得你去重构,什么样的系统不值得你花时间去重构,了解清楚了自己就不怎么会生气了吧~
赞成

8 楼
Shen.Yiyang
2013-12-13
如果你的团队没有建立完善的细粒度的单元测试,对依赖没有良好的管理,我想你也不要说服任何人重构了,一来成本肯定很大,二来这种质量的团队和项目不值得浪费生命。。。
7 楼
white_crucifix
2013-12-13
我和楼主一样也是一个重构爱好者,不过我其实深深的理解楼主说的那些同事。因为重构这件事情,必然是以兴趣为驱动的,当一个人完全对这个系统没兴趣的时候,他是不会打从心底想去做优化重构的。你愿意重构的系统必然是你喜欢的,想要做的更好,写出完美优雅的代码,这其实是出于一种兴趣驱动,你重构时充满着激情。有些人不喜欢大动干戈,因为本身对系统也不报太多的激情,需求频繁的修改,前期都无所谓的功能后期都要赶工做出来,界面粗糙,重构完领导也不一定让你提交,等等等等。总而言之因为这个系统不是你的,没把它当作自己的心血,以后提到这个系统的时候也不会兴奋,“哦,以前我做个这个,大概是这个样子的”。我们看到很多开源项目,代码写得很好,人家不一定是大牛,但代码都是经过精心雕琢的,因为这是属于某人或某团队自己的东西,有激情。所以,什么样的系统值得你去重构,什么样的系统不值得你花时间去重构,了解清楚了自己就不怎么会生气了吧~
6 楼
kmkim
2013-12-13
我觉得是他们没看过那本书
5 楼
hq2999
2013-12-13
LZ究竟是为代码不能被重构而苦恼还是为不能说服同事而苦恼。
前者:重构你自己代码足矣
后者:人生苦短,与其彼此说服,不如分头赶路
前者:重构你自己代码足矣
后者:人生苦短,与其彼此说服,不如分头赶路
4 楼
kuaileqingfeng
2013-12-13
其实在《重构》一书中,作者提到过,重构不应该是专门花时间做的事情,应该是开发过程中同时做的事情,也就是说,在开发过程中就进行重构。例如,想要获取用户的部门主管,如果需要通过查询表等方式来实现的话,那么应该单独写个方法来做这件事情,然后将结果返回。如果开发团队中实行code review的话,也会使开发人员养成不断重构代码的习惯。
3 楼
houxinyou
2013-12-13
abingpow 写道
首先要知道一点,重构是一件费时费力却没有收益的事情,公司不会愿意做,程序员也不会给自己没事找事,所以,你愿意花力气是你的事,不能要求别人一样无聊
同意
而且重构是有风险存在的,一般重构是建立在强大 的单元测试基础上的,没有足够的测试,谁会冒险去做一件没有直接经济收益还可能会出错的事,在没有领导的支持的情况下,这完全就是受累不讨好的事
2 楼
至尊宝_唯一
2013-12-13
abingpow 写道
首先要知道一点,重构是一件费时费力却没有收益的事情,公司不会愿意做,程序员也不会给自己没事找事,所以,你愿意花力气是你的事,不能要求别人一样无聊
你说没有收益应该指的是直接经济收益吧?
1 楼
abingpow
2013-12-13
首先要知道一点,重构是一件费时费力却没有收益的事情,公司不会愿意做,程序员也不会给自己没事找事,所以,你愿意花力气是你的事,不能要求别人一样无聊
发表评论
-
编程的核心在于抽象
2012-12-26 01:49 2708抽象是软件体系结构的灵魂。一个“优秀”的软件体系,必然 ... -
学习感悟--编程语言
2012-08-12 02:10 1390从前觉得学校的教材太浅,只讲语法,根本不讲一种语言能用 ... -
涉及页面展示尽量少用js
2012-07-04 10:42 1352用js操作DOM元素会引起页面频繁的reflow和 ... -
代码分层、分模块的好处
2011-09-28 16:09 6622第一条,也是最根 ... -
DOM事件传播模型
2011-07-31 22:15 1784参考了如下链接,备忘 ... -
想明白了,什么都是浮云
2011-07-27 17:36 1055完成任务、解决问题的能力才是最重要的。技能只是手段,使 ... -
面向抽象编程通俗理解
2011-07-18 21:37 4670程序要隔离变化:首先要抽象、剥离出固定的部分,即使剩余部 ... -
Flex学习之牢骚篇
2011-06-26 21:11 26入门简单,精通难。难就难在用法实在诡异,不找现成的例子,光 ... -
spring+hibernate环境搭建搞死人
2011-06-11 18:06 34原来也配过,本以为没什么困难,但实际做起来人都要疯掉。j ... -
Spring问题记录
2011-06-06 21:53 966带着问题学习是最高效的学习方法;当然,不同阶段能够提出 ... -
Oh my God,该死的Demo...
2011-05-24 23:07 40随着对mock了解的逐渐深入,今晚又实践一把power ... -
也说业务与技术
2011-04-14 01:05 140都说做java企业应用真正牛B的、或是最值钱的东西是业 ... -
男怕入错行
2011-04-12 21:25 39虽然一直都在做前端,但java也不敢放弃,书也一直在看 ... -
编码就是在做一棵树
2011-04-08 00:23 1202请看图: 这是一个典型的树形结构,层次分明,结构严谨。想查找 ... -
Struts2包引用问题
2011-03-01 17:17 1390今天自己重新建了工程,想测试点东西,为图方便,直接把现成 ... -
以功能为界限进行封装
2011-01-21 14:59 103代码是写得越多感 ... -
最近感悟:TDD与设计
2010-12-21 00:41 1503TDD到底是什么,它是怎么做到演进出一个优良的设计的?这 ... -
每日设计思想总结
2010-11-18 10:07 1209参考《java与模式》,纯回忆,想起来多少写多少,每 ... -
近期学习新得--重构/设计模式
2010-11-11 19:45 1252之前对于设计模式的理解就是减少变化点,并以此判断模式是否适用得 ... -
优化代码的目的分类
2010-09-10 15:14 1161偶然的想法,还请拍砖。 1、易读。就这么简单,最原始的 ...
相关推荐
6. 泌尿系统:尿液的形成过程被详细阐述,包括肾单位的构成(肾小球、肾小囊和肾小管),过滤作用(a)和重吸收作用(b)的概念,以及异常情况(如糖尿病可能与尿糖的检测结果有关)。 7. 内分泌系统:生长激素的...
资源的获取与满足欲望有关,快乐的本质是当人的欲望被资源满足时产生的感觉(正确答案A)。资源与快乐之间存在层次关系,低级资源满足低级欲望产生低级快乐,高级资源满足高级欲望产生高级快乐(正确答案ABC)。追求...
3. 英语祝福语:文档内容主要由英文构成,展示了一些常见的英语母亲节祝福语句,可用于写贺卡或在母亲节当天向母亲表达情感。 4. 感恩与爱意表达:祝福语中包含了对母爱的赞美和感激,如"the best mom that a son ...
4. 用seeming,与系动词seems连用,构成seem to do结构。 5. 用名词meaning,询问DIY的意义。 6. 用名词swimmer的复数形式swimmers,指她是游泳队里最好的游泳者之一。 7. 用序数词twentieth,表示她的弟弟在家里过...
2. **叙事技巧**:文中提到的课余生活,比如跳绳比赛和讲笑话,展示了如何通过细节描述来增强故事的生动性。学生应学会如何设置场景、引入人物、描述动作和情绪,使读者能够感受到故事的氛围。 3. **人物描写**:...
2. 反义疑问句:第二题考查的是反义疑问句的构成,遵循 "前肯后否" 或 "前否后肯" 的原则。原句 "You hardly know him" 含有否定词 "hardly",所以疑问部分应用肯定形式 "do you"。 3. 不定式与动名词:第三题考察...