热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:读《CleanCode代码整洁之道》之感悟

篇首语:本文由编程笔记#小编为大家整理,主要介绍了读《CleanCode代码整洁之道》之感悟相关的知识,希望对你有一定的参考价值。盲目自信,自认为已经敲了几年代码,还

篇首语:本文由编程笔记#小编为大家整理,主要介绍了读《Clean Code 代码整洁之道》之感悟相关的知识,希望对你有一定的参考价值。


盲目自信,自认为已经敲了几年代码,还看什么整洁之道啊。我那可爱的书架读懂了我的心思,很明事理的保护起来这本小可爱,未曾让它与我牵手

最近项目中的 bug 有点多,改动代码十分吃力,每看一行代码都带一句“这是什么XX代码啊,真XX难改”,这样持续了好几天,有天晚上坐在书房回想这几天发生的一切,仰头定睛思考,我终于和它重新确认了眼神

技术图片


股票见涨你知道买了, 汽车撞墙知道拐了, 孩子死了你来奶了, 大鼻涕到嘴你知道甩了, bug难改知道愤慨了


马上翻开书,前言章节,映入眼帘的就是下面这一张图


代码质量的唯一有效度量是:WTFs(what the fuck)/minute


技术图片

真的太精辟了,这不就是这几天我白天经历的吗?代码已然是 bad code 了,我们应该怎么面对这种情况呢?

每个公司的规范还不一样,本文是读书笔记,不会说明太多的代码规范,只是阐明我们应该怎样做或者抱着什么样的心态来写代码吧

如果你看到这里,我要引用书中的一句话:


第一,你是个程序员;第二;你想成为更好的程序员。我们需要更好的程序员



专业的态度

做国内项目/产品,通常都是指明deadline的,但是截止到deadline之前,需求量的多少是不固定的,说白了是“以deadline不变应需求万变”,美其名曰「敏捷」

我们经常要面对短期内开发出大量需求的请求,很可能为了快速完成这些需求,胡乱的堆叠代码,上线之后一声长叹庆幸这个功能开发的结束。过了好久,有关这个功能的需求有所变化,重新查看代码时,直接就 WTF 了......,再一看是自己写的,你说尴尬不?

技术图片

如果是因为任务多胡乱叠加代码,我们就应该在接受需求的时候提出我们的看法:


过多的需求在短期内上线的代码质量不能得到保证


假如你是医生,病人要求你不用洗手就可以给他做手术,因为洗手浪费时间,你会答应吗?医生绝对会拒绝,因为你比病人更了解疾病和感染的风险。如果医生照做,那是绝对不专业的做法

作为程序员,如果遵从了不了解混乱风险经理的意愿,也是不专业的做法

“你以为可以不听经理的?不听经理的,是会被炒鱿鱼的”,经理能否听的进去,我们都要提出我们的看法。提出多次还被无视,也不要灰心丧气,继续提出我们专业的看法... untile die, 为了部落

技术图片

如果你有底线,守住就好;如果没有,适应就好。只为很久之后看到代码说 WTF 时,避免主角是自己的尴尬


我们是作者

Javadoc 中的@author字段告诉我们自己是什么身份,我们是作者。如果类上没有标注日期和作者,alibaba代码检查工具会给出提示,就像这样:

技术图片

这里建议大家在 IDE 中安装该插件,如果你不知道作为作者应有的规范,那就让这个插件辅助你吧

技术图片

据统计,读代码与写代码花费的时间比例超过 10:1, 因为我们在写新代码时会一直在读旧代码,项目越到后期这个比例越明显

我们是作者,就有责任和读者做好沟通。每次写代码的时候,记得自己是作者,要为评判你工作的读者写代码.

技术图片

这些读者可能是你现在组内的伙伴,也可能是将来要接管你的任务的新伙伴,避免别人嘴里 WTF 的主角是你,定期 Review 自己的代码,你定会发现可以改善的地方,比如用策略模式更改过多的 if else等,代码整洁了,又学会了设计模式,岂不是两全其美


心有余,力要足

很多朋友说,我也想写出整洁的代码,但是目前实力不允许啊。

技术图片

写出整洁的代码的功力不是一蹴而就的,需要持续不断的学习和修正

学会设计模式,了解 RESTful 接口规范,了解命名规范,注释,函数大小等等太多的东西都是书写出整洁代码必不可少的知识,我们该怎么办?

还记得小时候写作文的词藻不够用,老师让摘抄好文好句。如果程序写的不够整洁,我们可以慢慢学习和模仿好的写法与设计,慢慢改善和积累,有朝一日肯定能写出高分作文的


不做破窗效应第一人

不要说现在的代码很烂了,没必要再改善了,如果你是这样的心态,即便一个全新的项目开始让你去做,你也很可能会成为第一个打碎玻璃,带来破窗效应的人。

如果严重一点说,大家都知道你写的代码带给别人的是一种负担,你可能很难有开始一个全新项目的机会了

技术图片

如果同事因改善你的代码带来了一些意外的影响,请你不要抱怨甩锅,这些改善就是修复玻璃的开始,终将会给团队带来极大的好处


总结

编写整洁代码的路途漫漫,我们一起求索,推荐大家看下面这两本书,你一定有有自己的发现,让我们悉心照料我们写的每一行代码



  • 《代码整洁之道》

  • 《阿里巴巴Java开发手册》


灵魂追问



  1. 工作上你接到过什么奇葩要求?

  2. 工作中遇到了哪些无奈或者你觉得XX的事?

  3. 你是怎么应对那些不好的问题的?

欢迎在留言区讨论,你们项目中的情况,你是怎么看待代码整洁这个问题的



技术图片


推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 【MEGA DEAL】Ruby on Rails编码训练营(97%折扣)限时特惠!
    本文介绍了JCG Deals商店提供的Ruby on Rails编码训练营的超值优惠活动,现在只需29美元即可获得,原价为$1,296。Ruby on Rails是一种用于Web开发的编程语言,即使没有编程或网页设计经验,也能在几分钟内构建专业的网站。该训练营共有6门课程,包括使用Ruby on Rails进行BDD的课程,使用RSpec 3和Capybara等。限时特惠,机会难得,赶快行动吧! ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
author-avatar
布尔熊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有