首页 > 其他分享 >《代码整洁之道》-大师眼中的整洁代码是什么样

《代码整洁之道》-大师眼中的整洁代码是什么样

时间:2024-09-09 16:52:10浏览次数:11  
标签:提到 定义 代码 之道 修改 设计 整洁

几个月前写了一篇文章“如何写出难以维护的代码”,从中能大概了解到不好维护的代码是什么样,有哪些坏味道,那肯定有人会反问,难以维护的代码见的太多了,也知道长什么样,但是对于好维护的代码是什么样的比较模糊,带着这个问题,本人读完了世界软件开发大师马丁的《代码整洁之道》这本书,来了解下大师眼中的整洁代码画像是什么样的,相信能给你带来不一样的理解和感悟。

《代码整洁之道》-大师眼中的整洁代码是什么样_jar


关于整洁代码,没有明确的定义,有多少程序员就有多少种定义。下面先看下几位大师是如何定义的。

C++语言发明者Bjarne Stroustrup提到:

代码应该优雅高效,代码逻辑应该直截了当,让缺陷难以隐藏尽量减少依赖关系,便于维护;按照某种分层策略完善错误处理,性能调到最优,不会让别人修改的更混乱整洁的代码只做一件事


《面向对象分析与设计》一书作者Grad Booch提到:

整洁的代码简单直接,如同散文一样优美从不隐藏设计者的意图,代码抽象干净利落,控制语句直截了当。


Eclipse战略教父Dave Thomas这么定义:

整洁的代码应可由其他开发者阅读和增补,应当有单元测试和验收测试,使用有意义的命名,只提供一种而非多种做一件事的途径,只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的API。


《修改代码的艺术》一书作者Michael Feathers定义:

整洁代码应该是特别在意代码的人才能写出来的,几乎没有改进的余地,作者各种情况都想到了,如果你想改进它,总会回到原点,总会赞叹写代码的人的专心和认真。


《极限编程实施》作者Ron Jeffries提出整洁代码:

能通过所有测试,没有重复代码,代码能体现设计理念,尽量减少类,方法以及函数。


综合以上几位大师对整洁代码的定义阐述,可以归纳总结一下整洁代码的画像:

1.体现设计理念,这个整洁代码特性在以上大师的定义里面多次提到了,Grady提到整洁代码不会隐藏设计意图,Ron提到整洁代码一看就知道采用了什么样的设计理念。体现设计理念看上去有点虚,但是实际上我认为是最重要的一点,所谓代码即设计,只要能回答代码为什么这么写,就说明你的代码有设计思想在里面,即便一行代码都能体现出设计理念,比如一个有意义的命名也是设计的一种表现。

2.没有重复代码,如果你两处代码相同或者大部分重复,说明代码不够整洁,同时说明代码没有去做好设计。消除重复代码意味着减少类和方法以及相关API。

3.代码只做一件事,很多代码由于想做太多事,目的不明确,意图混乱,结果代码变得很糟糕,代码只做一件事,也称单一职责,这个几乎是很多软件设计里面经常提到的一个警句,这个原则看似很简单,但是实际上执行起来不是那么简单,或者说,一时坚持这个原则很容易,难的是一直坚持这个原则,如果始终能践行这个原则,代码整洁度能达到质的飞跃。

4.代码好阅读,关于阅读,Bjarne用“优雅”来形容,优雅意味着优美雅致,所以在他看来,代码应该优美,给人以愉悦感,Grad也提到代码应该像散文一样优美,让阅读的人看完一段想看下一段,能很明显的展现出解决问题的表达力和张力,阅读者会不停的发出“啊哈,应该这样来处理!”的感叹。反之,如果代码不好阅读,阅读者看完后还需要猜测所表达的意思,对所实现的功能持怀疑态度,甚至有心惊胆战的心理,会在心里不停的反问:"不会吧,这都可以在线上运行?”我们在修改代码或写新代码之前都要阅读周边代码,如果阅读代码很难,则写代码也会很难,据统计读代码和写代码时间比例是10:1,编写代码的难度,取决于读周边代码的难度。要想干得快,要想早点做完,要想轻松写代码,先让代码易读吧。

5.代码好修改,Dave提到整洁代码应该可以让其他开发者进行增补,也就是很容易进行功能的增加,毕竟很多系统代码都要不停的迭代更新,需要基于原代码进行增补,所以代码的易修改就显得格外的重要,试想如果一个开发者写的代码别人没法修改或者不敢改,那你说这隐患有多大。我们经常嘴巴提到的系统可维护性,实际上说的更具体点,更多的指的是代码的可修改方面。


将以上5点整洁代码的画像总结一句话:



体现设计理念,代码不重复,只做一件事,好阅读和修改!

标签:提到,定义,代码,之道,修改,设计,整洁
From: https://blog.51cto.com/u_15714439/11962028

相关文章

  • PHP错误处理全攻略:掌握函数中的错误处理机制,提升代码健壮性,php显示错误报告方式
    在开发过程中,PHP错误处理是一个非常关键的环节。错误处理不仅关系到程序的稳定性,还直接影响到用户的使用体验。如果代码中存在未处理的错误,轻则导致功能异常,重则可能引发系统崩溃。本文将为大家详细介绍PHP中的错误处理机制,帮助你掌握相关技巧,从而提升代码的健壮性。我们需要了解......
  • 【Java】若依(ruoyi)——5.代码生成
    参考地址:http://doc.ruoyi.vip/ruoyi/document/htsc.html#%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90仔细关注,发现若依真的太好用了。主要是使用的人数众多,文档齐全。而且里面的技术齐全,就算不使用该框架,也可以以此为例,学习学习。这里,最有效的功能算是代码生成了,(这里使用的是前后端......
  • YOLOv10改进:CA注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,目标检测效果优于
    YOLOv10改进:CA注意力机制【注意力系列篇】(附详细的修改步骤,以及代码)如果实验环境尚未搭建成功,可以参考这篇文章->【YOLOv10超详细环境搭建以及模型训练(GPU版本)】文章链接为:http://t.csdnimg.cn/YQ9qW--------------------------------------------------------------------......
  • 使用yolov8识别+深度相机+机械臂实现垃圾分拣机械臂(代码分享)
    文章目录垃圾分拣机械臂视频演示程序主代码完整代码链接垃圾分拣机械臂视频演示点击查看使用YoloV8做的目标检测,机械臂手眼标定使用Aruco的方式,通过深度相机获取三维坐标,与机械臂坐标系之间的转化,得到抓取的坐标深度相机是dabaipro机械臂自己打印程序主代码imp......
  • openVX加速-新增自定义节点和示例代码
    在OpenVX中添加自定义节点大概通过以下步骤实现:定义自定义节点的计算逻辑:你需要编写一个C函数来实现自定义的图像处理操作。创建自定义节点:通过定义一个自定义节点核(kernel),并将其注册到OpenVX上下文中。在图中使用自定义节点:使用你定义的节点与OpenVX提供的内......
  • SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与
    查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模......
  • 20个销售页面范例及其成功之道
    销售——这是营销人员最渴望的转化。你会在销售页面上实现这一目标。所有你提供的免费电子书、你创建的挤压页面以及你运行的社交媒体活动,都是为了最终达成这一笔交易。如果你成功完成了一次,请为自己鼓掌。你的产品一定很棒,你的营销方式也一定非常出色。你看,让访客下载免费电......
  • C++ 多线程代码性能分析——Oracle Developer Studio工具教程
        最近写项目的时候,为了提升性能,把原来一些单线程的代码改成了并行运行。这里我用到的用于评估性能提升效果的工具是OracleDeveloperStudio,不过刚上手时,发现网上相关的教程和博客较少,有些功能的使用也是摸索着过来的,这一过程可谓是十分痛苦了……如今距离初次接触......
  • Star 39.9k太方便了!程序员的作图利器:draw.io!敲代码画图两不误!
    现在身处职场中,作为一名埋头苦干的打工人,不论是什么工种,不会做图有时候还真‘活不下去’。当然工厂拧螺丝就另说了!我是发现不论你是产品设计、运维、测试,还是程序员还是摆脱不了技术之外的事情,就比如制作各种图表,平时有平台/工具流程图,项目上有各种上项演示图表,私下其他部......
  • 代码随想录day55 || 图论5
    并查集197图中是否存在有效路径varfather[]intfuncvalidPath(nint,edges[][]int,sourceint,destinationint)bool{ //使用并查集算法,涉及到的操作,包括init,find,issample,join father=make([]int,n) fori,_:=rangefather{//init father[i]=i }......