开心一笑

【记得书上说过,男人为什么要管妻子叫老婆。因为这段姻缘从月老开始,一直到孟婆才会结束。】

视频教程

大家好,我录制的视频《Java之优雅编程之道》已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……

视频地址:http://edu.csdn.net/lecturer/994

提出问题

如何写出健康的代码???

解决问题

前言

程序员一天的生活基本就是:分析与设计,编写代码,开会,撰写技术文档等等。而编写代码基本占用程序员大部分时间。每个人都希望在这美好的一天里,写出让别人刮目相看的代码。生活已经够累,没必要写出病态的代码,背后遭人指责,受人唾弃。鲁迅先生曾经说过:生命是以时间为单位的,浪费别人的时间等于谋财害命;浪费自己的时间,等于慢性自杀。病态的代码不仅等于慢性自杀,而且谋财害命。

病态代码种类

病态代码总类很多,无法在这里一一列举。但大致可以分为以下几类:

  • Bug
  • 代码不整洁
  • 业务逻辑混乱
  • 代码性能差

你很难想象,一个小小功能,居然能产生一堆bug,排除你想追漂亮的测试妹子不说,这样的代码让人难于接受;你很难想象,一段代码糟糕的格式,天女散花似的逻辑;你很难想象,一段代码性能差到,用户都喝了几杯拿铁咖啡,页面仍旧无法显示的锥心之痛。

例如:

//程序清单 1.1
public boolean test(){List<String> userIds = new ArrayList<>();for(int i = 0,len = userIds.size();i < len;i++){//在for循环实现数据库查询数据,和异常捕获。User user = this.findByUserId(userIds.get(i));try{.....}catch(){}}return Boolean.TRUE;
}

病态代码的危害

代码生病,就像人得了流感一样。势必头晕脑胀,精神萎靡。同时还会传染。

对于自己
  • 自身技术得不到提升
  • 给周围的人留下不好印象
  • 投入更多修复问题时间

程序员不是代码写的越多,技术就越强。写代码和写文字是差不多的。有一句话,一个字觉得不妥当就得改,改到无可再改才罢手。这个习惯是必须养成的。代码细节处理很重要。细节决定成败,同时,细节也决定成长。注重细节处理的程序员和不注重的程序员,成长速度是不一样的。

例如:

//程序清单 2-1
public boolean test(){//正确写法return Boolean.TRUE;
}public boolean test(){//错误写法return true;
}
对于他人
  • 团队集体为病态代码加班
  • 领导的坏印象

自己留下的坑,不是自己买单,就是让别人买单。自作自受就罢了,拉着别人受苦受难就不好了。

对于项目
  • 延长项目工期
  • 加大项目成本
  • 降低客户体验

对于这种情况,问题就已经升级到一定的层次了。就好像发烧感冒造成的肺炎一样。有可能造成生命危险。客户要的是结果,才不管你发烧感冒。

总而言之,和破窗效应一样,生病的代码影响恶劣,是病得治。该吃药就得吃药,忍太久不好哦。

病态代码的原因

感冒病因很多,有内在因素,也有外在因素。内在因素比如:熬夜加班,生活不规律,要风度不要温度等。外在因素比如:气候突变,寒暖失调,风热之邪乘机侵入等。

内在原因
  • 程序员经验不足
  • 程序员素质:对于在职或者即将离职程序员
  • 前期设计缺陷

程序员的经验不足,没办法一开始就写出完美健康的代码,无可厚非,这需要一个过程。但是却不能作为一个借口。虽然并不是每个人都能成为顶尖高手,但是每个人都有能力保持身体健康。你不可能一开始写出完美的代码,但是却可以写出能运行,可交互,无bug的健康的代码。程序员的素质也很重要。我曾经碰到过一个即将离职的程序员,提交一堆未经测试的代码到服务器,叫测试妹子如何爱你。

外在原因
  • 项目工期紧张

外在因素无法避免,只是希望在项目结束之后,能留下时间,重构代码,吃吃药。毕竟欠下的,迟早都要还的。不是自己还就是别人替你还。

防止病态代码建议

  • 开发功能时间评估,在允许的范围内,尽量多估些时间,保证代码健康
  • 加强自测,别让测试妹子频繁找你麻烦。
  • 沟通讨论实现方案:和同事,技术负责人,主管多沟通,多交流。
  • 多阅读技术书籍
  • 合理重构,重构,重构
  • 代码审查:对于Master,需要审查团队提交的代码,或者公司成立代码审查小组
  • 想清楚再动手:把功能想清楚,选好实现技术再动手写代码也不迟

这里给个药方,推荐几本书籍。虽不能药到病除,但起码可以强身健体:

《Clean code》《重构:改善既有代码设计》《Effective Java》《Thinking in Java》《编写高质量代码:改善java程序的151个建议》《阿里巴巴Java开发手册公开版》等等。

结束语

忠心祝愿每个人都可以写出健康的代码,切勿留下生病的代码在那里苟延残喘,自生自灭,伤人害己。

读书感悟

来自《摔跤吧,爸爸》

  • 如果你获得了银牌,你总会被遗忘 如果赢了金牌 你会成为典范。
  • 不要忘记,你是怎么一步步走到今天的。
  • 这个世界充满假象,唯有痛楚从不说谎。
  • 这个时候所有的鄙视都变成了掌声。
  • 记住,爸爸不能时刻保护你,爸爸只教你如何战斗,你要战胜自己的恐惧。

经典故事

【在清代乾隆年间,有两个书法家。一个极认真地模仿古人,讲究每一画都要酷似某某,如某一横要像苏东坡的,某一捺要像米芾的。自然,一旦练到了这一步,他便颇为得意。另一个则正好相反,不仅苦苦地练,还要求每一笔每一画都不同于古人,讲究自然,直到练到了这一步,才觉得心里踏实。有一天,第一个书法家嘲讽第二个书法家,说:“请问仁兄,您的字哪一笔是古人的呢?”后一个并不生气,而是笑眯眯地反问了一句:“也请问仁兄,您的字究竟哪一笔是您自己的呢?”
第一个听了,顿时张口结舌。大道理:人要从没路的地方走出一条路来,不要泯灭了自己的个性,一味地模仿别人,那样只会迷失自我,连自己的命运都把握不了了。】

生活常识

【如何保持口气清新】
- 使用口气清新剂。
- 喝柠檬水。
- 口嚼茶叶。
- 多吃蔬菜水果。
- 正确的刷牙及清洁舌苔。

大神文章

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!

程序员,请写健康的代码相关推荐

  1. [转]为什么程序员总是写糟糕的代码?这3个原因

    原文请看:为什么程序员总是写糟糕的代码?这3个原因 我最近一直在想我们作为一个行业为什么总是产出糟糕代码的原因. 1.明显原因-- 我一下子想到的最明显的原因是,有好的程序员,也有不那么好的程序员,有 ...

  2. 月薪5K跟月薪5W的程序员,写出来的代码有什么差别?

    作者:小村医 | https://url.cn/55vKv3X 俗话说,重构做得好,升职加薪早.代码都是不断改出来的,没有谁一开始就能写出漂亮的代码,因为需求都是不断变更的.在不断变更代码的时候,对代 ...

  3. 程序员请尊重前辈的代码

     每个程序员都会有机会去维护"前辈".别人的代码,当众嘲笑当年的.历史的.陈旧的代码和架构,特别是代码风格,是最愚蠢的.它没有任何的意义,不能帮助你改善哪怕一点的代码,也不能让 ...

  4. 程序员新手写实际业务代码思维混乱的一些建议

    很多新手系统全套学完就业班之后,其实能力还是不错的,对常用的技术栈也都会理解,也能看得懂别人的代码.模块.架构等,但是我发现有些新手一遇到业务就非常的茫然,好像一下子就不知道怎么去写了 1.对业务的理 ...

  5. 程序员日均写7行代码被开除,公司:正常员工每天200行

  6. 卖掉 3000 平房子,50 岁程序员回国写代码,三个月内融资 2000 万美元

    2019年7月12日,10多万行C代码的中国物联网大数据平台 TDengine 在 GitHub开源,立即冲上 GitHub 榜首,整整五天霸榜 GitHub.目前该项目在 GitHub 上 Star ...

  7. 技术总监谈好的程序员如何写代码[转]

    技术总监谈好的程序员如何写代码[转] 要判断一个程序员是不是好的程序员,主要看他写的代码,因为程序员最重要的事是写代码.          即便不去理解代码的意图,只要看一眼,好的程序员写的代码与差的 ...

  8. 哪款笔记本电脑最适合程序员学习写代码?结果我竟无言以对

    话题内容转自:哪款笔记本电脑最适合程序员学习写代码?结果我竟无言以对 今天小编在网上看到网友们讨论什么样的电脑最适合程序员学习写代码?小编根据前两天发的那篇了解腾讯华为员工生活状况的文章,心想肯定是M ...

  9. 整理UML建模概念和图形~(啥?程序员不再写代码,变成画图工程师?)

    前言: 工程图纸对于工程师的重要性就不需要我多说了吧,对事物建模也是很重要的.我们在软件工程部分说过"建造一个狗窝和一栋大厦是完全不一样的",很多时候如果你有很好的idea,但是对 ...

最新文章

  1. java中二维数组求最大值代码。。。。。。不懂呀
  2. Python之pandas:数据类型变换之object、category、bool、int32、int64、float64以及数据类型标准化之详细攻略
  3. 基于微服务API级权限的技术架构
  4. 怎么避免UpdateData()函数弹出对话框
  5. 干货|MIT线性代数课程精细笔记[第一课]
  6. find command基本使用
  7. 标准输入输出(C++)
  8. jquery ajax 文本丢失加号和连接号的问题
  9. 【初涉C语言】程序员欢迎来到C语言的世界!
  10. 【Web】WEB项目初启动的那些糟心事
  11. SayMedia总览
  12. 驰骋工作流引擎2016年第1次组团培训日程
  13. 2021年中国一次性卫生设备市场趋势报告、技术动态创新及2027年市场预测
  14. 【学术之门之P2P算法研读】P2P中的Chord算法
  15. springcloud之eureka集群搭建
  16. 菲涅耳衍射matlab,matlab – 两步菲涅耳衍射
  17. 匈牙利算法及KM算法详解
  18. linux 腾达驱动程序,腾达(Tenda)-U12 Linux系统如何安装驱动
  19. 新书推荐:JavaScript征途
  20. 微弱信号放大电路(电磁超声)

热门文章

  1. IDEA中连接MySQL数据库并逆向生成实体类
  2. web在线编辑器与在线文档盘点
  3. 串口定义以及串口交叉线的制作
  4. 腾讯安全发布《2021年全球DDoS威胁报告》:DDoS威胁成犯罪团伙首选勒索手段
  5. java 计数器怎么定义_4.7 JAVA计数器
  6. 亲测被吹爆的视频剪辑软件,我只留下这几款!真的巨好用!
  7. 使用Vitamio打造自己的Android万能播放器
  8. 【随感】在Keras中如何按最大似然(Max Likewood)训练模型
  9. 【ShaderGraph】道路引导,小溪流水等UV动画效果
  10. 揭秘TVS管是否能替代稳压二极管吗?