- 浏览: 340988 次
- 性别:
- 来自: 北京
文章分类
最新评论
从开始编程到现在,呆过的公司,呆过的每个项目组,几十上百行的函数都比比皆是。以此为美的还不在少数,认为这是“紧凑”;变量太多也不认为是问题,统统提到函数开头就行了,认为这样“更易读”;变量命名也很简短,一个字母的,两个字母的大行其道,也不认为是问题,可能认为这样并不影响阅读,相反还使得代码更简短。代码嵌套太深也不认为是问题,反对分拆函数,认为不是公用的代码就不用分拆,是否分拆与函数长度基本没有关系。
我已经不相信国内有严格践行重构的公司了,觉得多数公司的代码都是这样写的。
尽管阅读了《重构》一书,并自认为初窥门径,但仍无法说服同事们,除非他们也读过并认同。在认为重构就是伤筋动骨,是每隔一段时间就进行一次的大修的同学面前,直接向他们灌输书上的做法确实不行。我说变量应该紧贴逻辑块,就近原则,全部提到顶部不容易阅读,且相当于全局变量,应该限制作用域;但他们认为放在顶部就是更容易阅读。在怎么样更容易阅读方面起了争执,而且没有办法解释清楚。因为以我目前的功力和表达能力,我确实没有办法解释盐为什么是咸的,醋为什么是酸的。
此言差矣,如果做的事情同事和领导不认可,那就很严重了。而且,这种质量的团队,我现在认为是绝大多数。
说出了我的心声,确实得有兴趣驱动才行。我自己有一些代码洁癖,看到那些乱七八糟的代码,唉...我这边连最基本的代码缩进都不讲究,废弃的代码直接注释掉,程序里都是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 2698抽象是软件体系结构的灵魂。一个“优秀”的软件体系,必然 ... -
学习感悟--编程语言
2012-08-12 02:10 1374从前觉得学校的教材太浅,只讲语法,根本不讲一种语言能用 ... -
涉及页面展示尽量少用js
2012-07-04 10:42 1327用js操作DOM元素会引起页面频繁的reflow和 ... -
代码分层、分模块的好处
2011-09-28 16:09 6608第一条,也是最根 ... -
DOM事件传播模型
2011-07-31 22:15 1775参考了如下链接,备忘 ... -
想明白了,什么都是浮云
2011-07-27 17:36 1044完成任务、解决问题的能力才是最重要的。技能只是手段,使 ... -
面向抽象编程通俗理解
2011-07-18 21:37 4662程序要隔离变化:首先要抽象、剥离出固定的部分,即使剩余部 ... -
Flex学习之牢骚篇
2011-06-26 21:11 26入门简单,精通难。难就难在用法实在诡异,不找现成的例子,光 ... -
spring+hibernate环境搭建搞死人
2011-06-11 18:06 34原来也配过,本以为没什么困难,但实际做起来人都要疯掉。j ... -
Spring问题记录
2011-06-06 21:53 954带着问题学习是最高效的学习方法;当然,不同阶段能够提出 ... -
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 1190请看图: 这是一个典型的树形结构,层次分明,结构严谨。想查找 ... -
Struts2包引用问题
2011-03-01 17:17 1378今天自己重新建了工程,想测试点东西,为图方便,直接把现成 ... -
以功能为界限进行封装
2011-01-21 14:59 103代码是写得越多感 ... -
最近感悟:TDD与设计
2010-12-21 00:41 1490TDD到底是什么,它是怎么做到演进出一个优良的设计的?这 ... -
每日设计思想总结
2010-11-18 10:07 1184参考《java与模式》,纯回忆,想起来多少写多少,每 ... -
近期学习新得--重构/设计模式
2010-11-11 19:45 1240之前对于设计模式的理解就是减少变化点,并以此判断模式是否适用得 ... -
优化代码的目的分类
2010-09-10 15:14 1152偶然的想法,还请拍砖。 1、易读。就这么简单,最原始的 ...
相关推荐
笑话的mysql数据源库文件,包含9000多条笑话数据,和建表结构。
爬虫爬下来的整3万条笑话数据,已经导入到sql文件了,共享给大家,mysql版本5.5,直接导入就能用
"虾囧笑话系统"是一个专门用于发布和分享幽默内容的平台,可能是一个基于Web的Content Management System (CMS)。这个系统的核心功能可能是为了方便用户浏览、上传、管理和分享各种类型的笑话,旨在创造一个轻松愉快...
微信小程序 娱乐搞笑 笑话 (源代码+截图)微信小程序 娱乐搞笑 笑话 (源代码+截图)微信小程序 娱乐搞笑 笑话 (源代码+截图)微信小程序 娱乐搞笑 笑话 (源代码+截图)微信小程序 娱乐搞笑 笑话 (源代码+截图)...
标题 "4千条笑话SQL文件" 暗示我们处理的是一个包含大量笑话数据的SQL文件,这可能是某个幽默或娱乐应用的数据备份。SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言,用于存储、检索、...
### 最新笑话网站源码高仿唧唧帝笑话蓝色模板 #### 源码概述 本源码是一款针对笑话类网站开发的专业系统,其主要特点在于高仿知名的笑话分享平台——“唧唧帝”(JiJiDi)。该源码采用PHP与MySQL数据库构建,确保...
标题 "180个有声笑话ACCESS数据库含MP3文件" 暗示了这是一个包含大量音频笑话资源的数据库,采用ACCESS作为数据管理工具。ACCESS是Microsoft Office套件中的一个数据库管理系统,它允许用户存储、管理和检索各种类型...
对于小程序的性能优化,开发者需要注意减少网络请求的次数和大小,合理使用缓存,以及优化渲染性能,避免不必要的数据计算和界面重绘。 10. 用户体验设计: 为了提供良好的用户体验,开发者需要考虑小程序的交互...
ASP网站和笑话数据库是互联网上常见的一种娱乐资源组合,它为用户提供轻松愉快的在线阅读体验。这个名为"yyjoke"的压缩包文件显然包含了构建一个ASP笑话网站所需的全部元素,特别是包含近五万条笑话的数据,这为用户...
【标题】"笑话网站源代码亲自测试版"指的是一个专门用于构建笑话类网站的源代码,这个版本已经过测试,确保其功能正常运行。在IT领域,源代码是程序员用编程语言编写的原始指令集合,它是软件的基础,可以被修改和...
笑话网站源码仿内涵吧邪恶漫画笑话程序源码带数据 dedecms模板
小学生笑话大全儿童经典笑话.docx
小程序源码 天气笑话娱乐三合一 (代码源)小程序源码 天气笑话娱乐三合一 (代码源)小程序源码 天气笑话娱乐三合一 (代码源)小程序源码 天气笑话娱乐三合一 (代码源)小程序源码 天气笑话娱乐三合一 (代码源)小程序源码...
《3万条笑话SQL格式数据库》是一个包含了大量笑话数据的SQL文件,主要目的是为了提供一个可以直接导入MySQL数据库的资源。这个文件的核心价值在于其数据量大,虽然笑话内容可能较为陈旧,但作为数据库示例或者数据...
【安卓版爱笑话】是一款专为安卓用户设计的娱乐应用,致力于提供全面的笑话资源,让用户在快节奏的生活中轻松一笑。这款应用以其丰富的笑话库和便捷的用户体验赢得了广大用户的喜爱。下面我们将深入探讨该应用的主要...
迷你笑话网源码是一款专为搭建小型笑话网站而设计的程序代码,通常包含有数据库结构、前端页面模板以及后台管理功能。源码是网站开发的基础,它定义了网站的架构、逻辑和数据处理方式。通过这个源码,开发者可以快速...
广告位都全部设置好了,感觉不错,可以参考演示站的广告位,后台是ot,评论使用多说,并加入了多少的单点登录,很适合放广告的主啊。 源码简单,请大家不要拍砖哦,毕竟也花了时间去弄。 安装运行http://网址/...
本项目是一个微信小程序的学习示例,名为“笑话大全”,它利用了聚合数据API来获取并展示各种幽默笑话。 首先,我们来深入了解一下微信小程序的开发环境。微信开发者工具是构建小程序的主要平台,它提供了代码编辑...
"android应用-把妹笑话"是一款专为提升社交互动和娱乐而设计的应用,它集成了丰富的幽默和诙谐的笑话,旨在帮助用户在与异性交往时增添乐趣,打破尴尬,或者简单地为日常生活带来欢笑。下面我们将深入探讨这款应用...
标题中的“在线笑话浏览”指的是一个能够通过网络访问并展示笑话的应用或网站。这个压缩包文件可能包含了开发这样一个系统的源代码。源码通常是程序员用特定编程语言编写的指令集合,用于控制程序的行为和功能。 ...