写出高质量代码的8条“军规”

简介: 写出简洁,易懂的程序是每个程序员追求的目标,怎样做到这一点,是否有规律可以遵循,我们一起来探讨

写出简洁,易懂的程序应该是每个程序员追求的目标,有人说程序不是给计算机用的吗,可以工作不就OK了吗?然而恰恰相反

程序是给写人看的

无论是什么样的语言,编译的也好,解释的也罢,最终实际执行的都是转换后的二进制代码。计算机是不需要看你写的源代码的。源代码是给你自己或者和你一样的人类程序员阅读的。程序的好坏决定着你们未来的命运。

程序维护的时间远长于创造他的时间

每个开发出来的计算机系统都被寄予厚望:尽可能长时间的存在于世。尽管他可能是某个实习生花一两个月写成的。而需求总在变化,很多时候都是在原有程序上的调整,甚至是修修补补。重写系统这件事情一直都是很危险的。从前有个著名的浏览器公司叫Netscape(网景公司),他们重写了自己浏览器的代码,后来。。。他们被另一款臭名昭著的浏览器IE6彻底打败了。所以,原始程序的质量决定后续的维护成本

那么怎样写出高质量的代码,需要注意哪些点呢,先从基本的做起

格式工整

每种语言都有自己的格式要求,每个公司也一样,现在有各种自动格式化工具,这点不难做到。

命名清晰

变量命名符合惯例,要表达清楚的含义,请谨慎使用a, b, c这种无意义的字母。这点和写文章一样,满篇小明、小红,一看就是小学生作文。

分离变化

需求总在变化,这是永恒的主题,如果我们清晰的知道哪个部分的程序可能在将来需要调整,那么把他们隔离起来。可以作为一个方法/函数,一个类,一个文件,或者数据库里的一个数据。

保持抽象

你的程序应该调用的是某一个接口,某一个协议。对于其他的程序知道的越少越好。不八卦别人的信息,可以避免程序像面条一样搅在一起。

不要重复(Don't repeat yourself/DRY)

“这个功能还不简单,拷贝一下改改不就好了”。建议你鄙视提出这个想法的朋友,拷贝一份,以后修改的工作量X2,现在的苦逼都是因为当年的偷懒。不管是代码也好,逻辑也好,都应该避免重复。

防呆设计(Don't make me think)

程序的接口应该简单而清晰,不要使用数量繁多而晦涩的参数。

保持简单(Keep it simple, stupid/KISS)

不要使用大段的复杂代码,每一段程序的职责尽量单一而明确。

按常理出牌

符合人类的思维规律,比如这是一个get读取函数,调用它一定不会出现修改、删除或者其他诡异的效果。

做好以上这些点差不多就能写出清晰而优秀的代码了,但程序是否优雅而高效还要取决于程序员的设计功力,这需要经验和积累。我们一起加油吧

目录
打赏
0
0
0
0
1
分享
相关文章
为什么 Lettuce 会带来更长的故障时间
本文详述了阿里云数据库 Tair/Redis 将使用长连接客户端在非预期故障宕机切换场景下的恢复时间从最初的 900s 降到 120s 再到 30s的优化过程,涉及产品优化,开源产品问题修复等诸多方面。
67176 11
为什么 Lettuce 会带来更长的故障时间
wxPython StaticText控件背景色透明
wxPython StaticText控件背景色透明
202 0
全链路压测:影子库与影子表之争
在生产环境实施全链路压测的过程中,针对上文谈到的两种方案,又面临着数据隔离方案的选择问题,本文首先针对影子库、影子表两种方案进行介绍和对比,然后针对常见的场景,给出方案的选择建议。
4910 69
全链路压测:影子库与影子表之争
|
9月前
|
详解历时五年的 Cython3.0 都发生了哪些变化(一)
详解历时五年的 Cython3.0 都发生了哪些变化(一)
184 1
通义千问Qwen2.5-Coder 全系列来咯!强大、多样、实用
千问团队开源了强大的 Qwen2.5-Coder 系列模型,涵盖 0.5B 到 32B 六种尺寸,旨在推动开放代码模型的发展。该系列模型在代码生成、修复和推理等方面表现出色,支持多种编程语言,并在多个基准测试中达到 SOTA 水平。此外,Qwen2.5-Coder 还提供了丰富的应用场景,如代码助手、Artifacts 和 Interpreter,满足不同开发者的需求。
2861 106
如何将Spring Boot应用程序运行到自定义端口
如何将Spring Boot应用程序运行到自定义端口
393 0
分支覆盖 (Branch Coverage)
分支覆盖 (Branch Coverage) 是一种软件测试覆盖率评估方法,能够测量代码中每个分支的执行情况,即代码中每个条件语句 (if-else 语句) 的所有可能分支是否都被执行过。
3741 1
深入理解Spring Boot中的@Bean注解
【4月更文挑战第22天】在 Spring Boot 应用开发中,@Bean 注解是一种非常重要的方法,用于在配置类中声明单个 Bean,从而使 Spring 容器能够管理这些 Bean。本篇技术博客将详细解析 @Bean 注解的概念,并通过具体的实战示例展示如何有效地使用这一注解优化应用的配置和管理
971 5
Spring Boot中的 6 种API请求参数读取方式
本文介绍了Spring Boot中6种常见的请求参数读取方式:@RequestParam用于加载URL查询参数,@PathVariable处理RESTful风格的URL路径参数,@MatrixVariable处理URL路径中的矩阵变量,@RequestBody用于读取POST/PUT请求的复杂请求体,@RequestHeader加载请求头信息,而@CookieValue则用于获取Cookie值。这些注解在不同场景下满足了API参数的多样化需求。
169 6
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等