本文授权转载,作者:非著名程序员(公众号:smart_android)

其实过完年回来,我们的项目也一直在强调重构,在实践重构中,但是到目前为止,基本没啥进度。关于项目的重构,我说:基本上大部分都是骗人的。你们信不信?那你可能会问:为什么一开始不把代码写的更好一些,逻辑更严密一些呢?那欢迎大家看我写的这篇文章《代码质量差,bug多?我们都是被逼的 》,看完你会深有同感的。

关于项目重构的问题,为什么一直做不完呢?直到我在浏览微博时,看到了一个非常好玩的对话,可谓是:感同身受,深有同感。知道真相的我,眼泪都快笑出来了,估计看到下面的对话,你们也会感同身受的,身临其境都有可能。对话如下:

A:重构80%都会失败,因为业务线的需求永远都不会停,资源有限,所以不花大代价,轻易不重构,宁可开发的慢一点,写好。B:其实以业界大部分产品经理的水平99%的项目都活不到重构的那天,所以业务量上来再重构更省资源。对话内容来自于@Easy的微博

看到第一句话A说的,一看就是深受其害的程序员说的,是不是说到你心坎里了。中招的同学请举手,作为我们有责任的程序员只能仰天长啸:有心写码,无力高效。bug其多,痛哉痛哉!下次你们老板和产品经理再催你赶进度,你就大喊:时间不够,代码瞎凑,毁了软件,完了项目。上线以后,如果用户体验不好,老板来找你谈话或者训你,你就说:这个锅我们程序员不背。B说的话,眼光很长远,要这么说的话,确实更省资源。要是产品经理和老板看到的话,估计不开森了。

其实项目重构是一个非常锻炼程序员能力的活,而且重构是一个不断优化和学习的过程。项目重构的重要性更不用说了,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。可能你会问:为什么不一开始就把项目做好,代码质量写的更好呢?话虽说可能是时间问题引起的代码质量差,程序员为了赶工期,但是即使是给程序员充足的时间,他也不可能预见未来的需求的变化, 可扩展性和可维护性就无从谈起,今天你想好了代码这些,明天估计需求就又变化了。所以一个持久的好的项目也不可能避免重构的发生,写代码的高手和大神也一样,都得经历这个阶段。

那何时才能触发重构呢?答案其实很简单,你是在忍受不了混乱的代码的时候或者感觉可读性很差的时候。你的忍耐力决定重构的时机。当然如果你写的程序一直在崩溃的话,估计你得被迫去重构和优化了。其实代码重构的出发条件应该是一下几点:

  • 牵一发而动全身的修改

  • 代码中存在过多的重复代码

  • 过渡的耦合

  • 过长的方法和类(过长的代码,逻辑复杂,bug可能几率上升)

  • 太多代码无注释,你已看不明白

如果中了上述几条,你该想想代码重构了。不要被动的去重构,主动去重构还是非常有必要的,可以避免很多问题的发生。

代码重构其实最重要,最应该注意的两点,也是应该达到的目的就是:代码的简洁,逻辑严密和性能的优化。这就是重构的意义所在和内涵。

写到这里,你们可能会问我:那该如何重构呢?是啊,我一本正经的写了这么多,你们肯定想知道这个问题的答案,到底该如何重构?那我就一本正经的告诉你们答案:如果老板和产品经理不好好对待程序员,你们基本到不了项目重构的那一天。A和B说的就是真理,你们服不服?

如果不服的话,我怕你们打我,我还是再一本正经的说两句吧,如何重构:在不改变软件系统外部行为的前提下,改善它的内部结构即可。也可以借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方

请大家把这篇文章转发到朋友圈,让你们的老板和产品经理看看吧,让他们认识到问题的严重性,给自己争取更多的开发时间。下次如果产品经理再催你们进度,你们一定要记着一起大喊:时间不够,代码瞎凑,毁了软件,完了项目。

转载于:https://www.cnblogs.com/Amoyios/p/5764392.html

关于项目重构,知道真相的程序员眼泪笑了出来相关推荐

  1. 全球最厉害最有钱的24位顶尖程序员及其代表项目(公号回复“顶尖程序员”下载PDF资料)

    全球最厉害最有钱的24位顶尖程序员及其代表项目(公号回复"顶尖程序员"下载PDF资料) 原创: 秦陇纪 数据简化DataSimp 今天 数据简化DataSimp导读:全球最厉害最有 ...

  2. 培训班出身需隐瞒经历吗?商业项目经验怎样写?程序员面试准备大盘点

    作者 | hsm_computer 责编 | 伍杏玲 出品 | CSDN博客 在<春招妥了!资深技术面试官教你这样准备 Java 面试!>这篇博文后,提到了不少引导的说辞和技巧,如果能把面 ...

  3. 极客日报第 13 期:因未发项目奖金,一名程序员决定删代码泄愤;2020年最常用密码TOP200出炉,你都用过吗?

    文章目录 互联网快讯 程序员专属 Github 每日精选 CSDN 社区优质博文精选 互联网快讯 1.三大运营商或于年底联合宣布 5G 消息商用 据报道,在 2020 中国移动全球合作伙伴大会期间,从 ...

  4. CSDN日报190301——不笑找我系列 | 程序员爆笑漫画十条

    程序人生 | 不笑找我系列 | 程序员爆笑漫画十条 作者:写代码的篮球球痴 点击阅读原文 架构 | 高性能RPC框架--Dubbo一站式快速入门 作者:汤小洋 随着互联网的发展,网站应用的规模不断扩大 ...

  5. 如何高效利用开源项目增加实战经验?程序员如何做副业?这些你关心的问题一次讲清楚!...

    不久前我在朋友圈做了一个调查,"工作1-3年的程序员,你对自身发展有哪些困惑?"得到了五花八门的答案: "我在一家小公司写Java,工作2年了,感觉很迷茫,项目经验也不多 ...

  6. 因未发项目奖金,一名程序员决定删代码泄愤

    长按识别上方二维码,关注公众号:后端面试那些事 回复"报告",获取你的GitHub年度报告! 作者 | 刘琳 来源 | 刘琳 你永远都想不到程序员会因为什么删掉代码. 你可能还记得 ...

  7. BAT 力捧的 AI 项目再次爆发,这些程序员都受影响!

    从2017年起,人工智能大火,几家国际大厂无论是微软 Build.Facebook F8 还是稍后的 Google I/O,莫不把"AI优先"的大旗扯上云霄. 百度 AI 开发者大 ...

  8. 程序员项目_您如何让程序员加入您的项目?

    程序员项目 本月在The Queue上 ,LinuxQuestions.org的josephj问: 我如何让程序员加入我们的项目? 当原始开发人员退出并且没有其他人上前时,我继承了一个用$ progr ...

  9. 写了8年的代码,做过的项目都下线了,程序员的意义在哪里!

    01 起因 前几天项目交付上线,所以闲下来了.忽然想起来,自己业余接的活,有些项目已经不再运营了,所以想清理下域名解析. 上去阿里云一看,总的大概有 15 个解析.这 15 个解析就意味着 15 个项 ...

最新文章

  1. android switcher控件,Android ViewSwitcher 的功能与用法
  2. grub-和grub-troubleshootting
  3. linux下查看当前用户的 三个命令
  4. Qt Creator Qt Quick用户界面表单ui-forms
  5. 专门用来显示大量数据的视图:AdapterView(1)
  6. JavaScript入门(part3)--变量
  7. MSN、QQ的网页链接代码
  8. 【链接】 一篇很好的有关卡特兰数的博文
  9. 【安装配置】克隆方式安装Oracle数据库软件
  10. 一般试卷的纸张大小是多少_档案产品库纸张整理专家
  11. python3中文乱码解决方法
  12. python中的变量的学习
  13. 八、jdk工具之JvisualVM之四--VisualVM 进行性能分析及调优
  14. ElementUI之el-pagination样式修改(小三角、“前往”、页码数)
  15. NR 5G 5G-GUTI解读
  16. 黑白双轨棋·改编(定子棋,终盘换子,在计算赢子的多少)
  17. 用公式编辑器将数学公式转为LaTeX代码
  18. 大数据周周看:百分点集团全资并购极速洞察,精准医疗创企“海普洛斯”获2.1亿元融资
  19. SwitchHosts——便捷切换hosts
  20. 译见赋能跨语言大数据渠道生态

热门文章

  1. nyoj--203--三国志(迪杰斯特拉+背包)
  2. Android 程序打包及签名
  3. CSS中的Position属性
  4. WindowsPhone 7.8 Tiles 1 : WideTile
  5. 32 | 答疑(四):阻塞、非阻塞 I/O 与同步、异步 I/O 的区别和联系
  6. drf5 版本和认证组件
  7. S1 Python 基础
  8. php curl 句柄 复用,PHP-curl multi批处理CPU负载过高的解决办法
  9. 参数变化_PDP驱动波形参数分析
  10. python爬取正确但不出文件_[求助] Python 爬虫爬取豆瓣_请不要害羞,语法没有报错,但是最终没有得到图片,请各位大神帮我看看,到底哪里出现了问题??急求...