为什么强调代码的“可读性”

简介: 为什么强调代码的“可读性”

说起代码可读性,对于每一个程序员来说,或多或少的都会遇到一些这方面的坑。比如说:逻辑太复杂,代码写的杂乱无章,注释太少,方法名起的很随意,完全没有业务意义等等,这些都是在维护别人代码中可能遇到的问题。为什么强调代码的可读性,其实也就是为了解决这些坑带来的问题。

你心目中的代码第一优先级要求是什么?

说起我心目中代码的第一优先级的话,那自然是功能逻辑要符合业务需求,但是功能逻辑本身也是系统的本质功能,不能算要求。那么这样的话,我心目中当然是觉得代码的第一优先级应该是可读性。从业良久,接手别人的项目也不少,在日常维护以及版本迭代过程中,最让人头皮发麻的就是当你需要迭代某一个功能时,发现原始功能本身的业务逻辑就很复杂,而你需要理解的代码又没有什么层次,没什么结构,也没什么注释,整个放在一起就是一堆字母的堆砌。这个时候你就会真的意识到代码可读性对于代码维护来说究竟有多重要,可以说好的代码有层次、有结构、有注释、可以一眼看出代码是要干什么,对于维护这样的代码,那简直就是一件享受的事,对吧。而遇到我上面说的一堆字母的堆砌,可以说不管你是大神还是小开发,你都是同样的头大。因此我心目中代码的第一优先级必须是“可读性”。

你在提升代码可读性的一些做法

对于《一文聊聊代码的可读性》文中提到的代码可读性体现的三个方面:语言表达、明确意图、层次结构,我个人是比较认可的。其实代码可读性的实现或者说习惯的建立,本身并没有那么复杂,而是很简单,只需要摒弃一些日常的坏习惯就可以做到的。比如说代码注释,代码层次结构等,都是我日常工作中提升代码可读性的常用的。

语言表达

语言表达其实很容易理解,在日常交流中就是要让别人能轻松明白你想要表达的意思即可,无需多余的点缀。那么体现到代码可读性上的话,就是说你的代码中需要有一定的中文注释,可以明确表达某一段代码需要实现的业务逻辑;同时在你代码中的方法名、类名、变量名,也需要可以一眼看出其中的意思,而不能不遵守命名规范,随心所欲的命名,导致后来的维护者一脸懵,完全不知道自己到底在经历着什么人间折磨。因此,通俗易懂的注释,契合业务的方法命名都是提高代码可读性的必要手段。

明确意图

明确意图也就是说代码的维护者看到的代码业务逻辑以及实现逻辑是和代码的开发者是一致的,这就是明确意图。反过来说的话就是,比如你写了一段业务逻辑代码,是要实现A的业务逻辑;而后来的维护者却通过你的代码注释,代码方法名等的理解却理解为与A相反的或者说与A有岔路的B业务逻辑,那么这个时候就是说你的代码没有明确的意图,不利于后期维护者的迭代开发。这也就要求每一个开发者都可以明白自己心中想要表达的意思,并且可以通过多种外部的方式来帮助后来的维护者可以理解到同等的意思,这就是好的代码可读性。

层次结构

说到层级结构,真的是不同的开发者不同的习惯。最惊奇的就是有的开发者自己写的代码,过两天回头看,其中的业务逻辑自己都看不明白的。层次结构就是说对于你的代码,要有层次,整个业务逻辑从上到下清晰明了,任何人看了之后都能明白你想要表达的意图,这就是好的层次结构。比如说日常开发中,一段业务逻辑完成之后空行区分,不同的业务逻辑之间条理清晰,有注释。不同业务代码之间不要有交叉,尽可能的让代码整洁易读。还要就是代码中不同层次的大括号有一定的空行等,这些都是日常工作中保持代码层次结构的好办法。

以上内容希望对大家在代码开发中提高代码可读性起到一定的帮助作用。

相关文章
|
存储 监控 安全
【专栏】探讨Docker Compose的核心概念、使用方法及最佳实践,助你轻松驾驭容器编排的世界
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
749 2
C# 继承类中(父类与子类)构造函数的调用顺序
C# 继承类中(父类与子类)构造函数的调用顺序
|
前端开发 JavaScript 小程序
前端新机遇!为什么我建议学习鸿蒙?
【10月更文挑战第4天】前端新机遇!为什么我建议学习鸿蒙?
565 0
前端新机遇!为什么我建议学习鸿蒙?
|
运维 Kubernetes 供应链
云原生时代的运维体系进化
基于容器、Kubernetes 等云原生技术,提供的开放社区标准、不可变基础设施、声明式 API 会成为企业 CloudOps 的最佳实践,也将在这个基础上推进数据化、智能化体系建设,将运维复杂性进一步下沉,让企业可以聚焦于自己的业务创新。阿里云也将持续向外输出自身在超大规模云原生实践和探索中的能力沉淀,与更多企业、开发者一起,躬身入局,全面拥抱云原生运维技术体系。
4726 100
云原生时代的运维体系进化
|
数据库 Java 负载均衡
无状态服务(stateless service)
一、定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息 有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的 二、优劣 有状态服务常常用于实现事务(并不是唯一办法,下文有另外的方案)。举一
17453 0
|
JSON 小程序 前端开发
微信小程序首页-----布局(详细教程赶快收藏吧)
微信小程序首页-----布局(详细教程赶快收藏吧)
546 0
|
Linux API 开发工具
推荐一个刚开源很火的Github项目:system-design-101(系统设计图库)
推荐一个刚开源很火的Github项目:system-design-101(系统设计图库)
1074 0
|
小程序 开发者
【小程序】微信小程序版本更新如何通知用户?
【小程序】微信小程序版本更新如何通知用户?
1404 0
【小程序】微信小程序版本更新如何通知用户?
|
存储 人工智能 数据中心
阿里云基础设施网络亮相SIGCOMM22 - 可预期网络取得重大突破
阿里云基础设施网络亮相SIGCOMM22 - 可预期网络取得重大突破
阿里云基础设施网络亮相SIGCOMM22 - 可预期网络取得重大突破
|
NoSQL Go Redis
Go WebSocket + Redis 实现轻量级的订阅和实时消息推送
Go WebSocket + Redis 实现轻量级的订阅和实时消息推送