使用这45个小技巧,帮助你写出更优雅的代码

本文总结了45个小技巧,帮助提升代码的规范性和可读性,包括命名规范、代码格式化、注释技巧、异常处理、方法长度控制、重复代码抽取、返回值管理、日志打印、设计模式应用等方面,旨在改善代码质量,提高代码可维护性。
摘要由CSDN通过智能技术生成

前言

不知道大家有没有经历过维护一个已经离职的人的代码的痛苦,一个方法写老长,还有很多的if else ,根本无法阅读,更不知道代码背后的含义,最重要的是没有人可以问,此时只能心里默默地问候这个留坑的兄弟。。

其实造成这些原因的很大一部分原因是由于代码规范的问题,如果写的规范,注释好,其实很多问题也就解决了。所以本文我就从代码的编写规范,格式的优化,设计原则和一些常见的代码优化的技巧等方面总结了了45个小技巧分享给大家,如果不足,欢迎指正。

1、规范命名

命名是写代码中最频繁的操作,比如类、属性、方法、参数等。好的名字应当能遵循以下几点:

见名知意

比如需要定义一个变量需要来计数

int i = 0;

名称 i 没有任何的实际意义,没有体现出数量的意思,所以我们应当指明数量的名称

int count = 0;

能够读的出来

如下代码:

private String sfzh; private String dhhm;

这些变量的名称,根本读不出来,更别说实际意义了。

所以我们可以使用正确的可以读出来的英文来命名

private String idCardNo; private String phone;

2、规范代码格式

好的代码格式能够让人感觉看起来代码更加舒适。

好的代码格式应当遵守以下几点:

  • 合适的空格

  • 代码对齐,比如大括号要对齐

  • 及时换行,一行不要写太多代码

好在现在开发工具支持一键格式化,可以帮助美化代码格式。

3、写好代码注释

在《代码简洁之道》这本书中作者提到了一个观点,注释的恰当用法是用来弥补我们在用代码表达意图时的失败。换句话说,当无法通过读代码来了解代码所表达的意思的时候,就需要用注释来说明。

作者之所以这么说,是因为作者觉得随着时间的推移,代码可能会变动,如果不及时更新注释,那么注释就容易产生误导,偏离代码的实际意义。而不及时更新注释的原因是,程序员不喜欢写注释。(作者很懂啊)

但是这不意味着可以不写注释,当通过代码如果无法表达意思的时候,就需要注释,比如如下代码

for (Integer id : ids) { if (id == 0) { continue; } //做其他事 }

为什么 id == 0 需要跳过,代码是无法看出来了,就需要注释了。

好的注释应当满足一下几点:

  • 解释代码的意图,说明为什么这么写,用来做什么

  • 对参数和返回值注释,入参代表什么,出参代表什么

  • 有警示作用,比如说入参不能为空,或者代码是不是有坑

  • 当代码还未完成时可以使用 todo 注释来注释

4、try catch 内部代码抽成一个方法

try catch代码有时会干扰我们阅读核心的代码逻辑,这时就可以把try catch内部主逻辑抽离成一个单独的方法

如下图是Eureka服务端源码中服务下线的实现中的一段代码

整个方法非常长,try中代码是真正的服务下线的代码实现,finally可以保证读锁最终一定可以释放。

所以这段代码其实就可以对核心的逻辑进行抽取。

protected boolean internalCancel(String appName, String id, boolean isReplication) { try { read.lock(); doInternalCancel(appName, id, isReplication); } finally { read.unlock(); } // 剩余代码 } private boolean doInternalCancel(String appName, String id, boolean isReplication) { //真正处理下线的逻辑 }

5、方法别太长

方法别太长就是字面的意思。一旦代码太长,给人的第一眼感觉就很复杂,让人不想读下去;同时方法太长的代码可能读起来容易让人摸不着头脑,不知道哪一些代码是同一个业务的功能。

我曾经就遇到过一个方法写了2000+行,各种if else判断,我光理清代码思路就用了很久,最终理清之后,就用策略模式给重构了。

所以一旦方法过长,可以尝试将相同业务功能的代码单独抽取一个方法,最后在主方法中调用即可。

6、抽取重复代码

当一份代码重复出现在程序的多处地方,就会造成程序又臭又长,当这份代码的结构要修改时,每一处出现这份代码的地方都得修改,导致程序的扩展性很差。

所以一般遇到这种情况,可以抽取成一个工具类,还可以抽成一个公共的父类。

7、多用return

在有时我们平时写代码的情况可能会出现if条件套if的情况,当if条件过多的时候可能会出现如下情况:

if (条件1) { if (条件2) { if (条件3) { if (条件4) { if (条件5) { System.out.println("三友的java日记"); } } } } }

面对这种情况,可以换种思路,使用return来优化

if (!条件1) { return; } if (!条件2) { return; } if (!条件3) { return; } if (!条件4) { return; } if (!条件5) { return; } System.out.println("三友的java日记");

这样优化就感觉看起来更加直观

8、if条件表达式不要太复杂

比如在如下代码:

if (((StringUtils.isBlank(person.getName()) || "三友的java日记".equals(person.getName())) && (person.getAge() != null && person.getAge() > 10)) && "汉".equals(person.getNational())) { // 处理逻辑 }

这段逻辑,这种条件表达式乍一看不知道是什么,仔细一看还是不知道是什么,这时就可以这么优化

boolean sanyouOrBlank = StringUtils.isBlank(person.getName()) || "三友的java日记".equals(person.getName()); boolean ageGreaterThanTen = person.getAge() != null && person.getAge() > 10; boolean isHanNational = "汉".equals(person.getNational()); if (sanyouOrBlank && ageGreaterThanTen && isHanNational) { // 处理逻辑 }

此时就很容易看懂if的逻辑了

9、优雅地参数校验

当前端传递给后端参数的时候,通常需要对参数进场检验,一般可能会这么写

@PostMapping public void addPerson(@RequestBody AddPersonRequest addPersonRequest) { if (StringUtils.isBlank(addPersonRequest.getName())) { throw new BizException("人员姓名不能为空"); } if (StringUtils.isBlank(addPer

Java_LingFeng
关注 关注
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python数据分析学习者-数据分析9个优雅技巧(测试代码+保姆级api例程)
01-10
在Python数据分析领域,掌握一些优雅的小技巧能极大地提高工作效率,使代码加易读且高效。以下将详细解析压缩包中的9个文件所涵盖...通过学习和实践这些小技巧,你将能够写出Pythonic的代码,提升数据分析的能力。
代码优化方式
06-12
代码优化的方式有很多,其中这些是必不可少的,代码优化的相关视频在mathwork官网可以查到
编写让别人能够读懂的代码
weixin_34126215的博客
09-26 136
随着软件行业的不断发展,历史遗留的程序越来越多,代码的维护成本越来越大,甚至大于开发成本。而新功能的开发又常常依赖于旧代码,阅读旧代码所花费的时间几乎要大于写新功能的时间。 我前几天看了一本书,书中有这么一句话: “复杂的代码往往都是新手所写,只有经验老道的高手才能写出简单,富有表现力的代码” 此话虽然说的有点夸张,可是也说明了经验和智慧的的重要性。 我们所写的代码主要是为了阅读,其次才是...
前端日志打印规范
最新发布
Admans的专栏
07-29 407
通过以上步骤,我们可以建立一个前端项目的日志输出规范。一个好的日志系统应该是灵活的,能够根据不同的环境和需求进行适当的调整。日志是帮助我们好地理解和维护应用的工具,合理的使用和管理日志对于任何规模的前端项目都是非常重要的。作者:南城FE https://juejin.cn/post/7355321162530914338。
写出漂亮代码的七种方法
foodvc的专栏
12-17 773
首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术、逻辑等。以下为写出漂亮代码的七种方法:1, 尽快结束 if语句例如下面这个JavaScript语句,看起来就很恐怖:1 function findShape(flags, point, attribute, list) {2 if(!findShapePoints(flags, point, attribute)) {3
如何写出优美的C语言代码(转载)
weixin_30299709的博客
08-06 202
基础知识 结构体 除了提供基本数据类型外,C 语言还提供给用户自己定制数据类型的能力,那就是结构体,在 C 语言中,你可以用结构体来表示任何实体。结构体正是面向对象语言中的类的概念的雏形,比如: typedef struct{ float x; float y; }Point; 定义了一个平面坐标系中的一...
写出漂亮代码45个小技巧
Huangjiazhen711的博客
10-21 2027
比如在项目中不同的类型的业务可能需要上传各种各样的附件,此时就可以定义好不同的一个附件的枚举,来区分不同业务的附件。不要在代码中直接写死,不定义枚举,代码阅读起来非常困难,直接看到数字都是懵逼的。。
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
10-17
在现代JavaScript编程中,2019年出现了许多实用的小技巧,能够帮助开发者提升代码的可读性、维护性与性能。以下是在2019年时,提升JavaScript代码质量的五个重要技巧的详细说明: 1. 使用Array.includes进行条件...
关于Java代码优化的35个小技巧,你学到了吗.docx
11-08
Java代码优化的35个小技巧 以下是对Java代码优化的35个小...Java代码优化的35个小技巧可以帮助我们写出加高效、加可靠的代码。这些小技巧可能看起来微不足道,但是它们可以对代码的性能和可读性产生很大的影响。
如何写出优美的代码——体会1
weixin_30532837的博客
04-13 182
1.不要把业务逻辑和非业务逻辑混合 多思考一下,尽量不要有错误的逻辑,和漏掉的情形 常见的逻辑: (1)字符串的为空判断 if(s == null || s.length() <= 0); 如果 String 类型为null, 而去进行 equals(String) 或 length() 等操作会抛出java.lang.NullPointerException. (2)对象是否为...
如何才能写出高质量优美的代码
weixin_34082854的博客
11-21 242
怎么判断代码是否是优质量的代码呢?下面来简单对代码质量的问题进行一个介绍。 代码质量所涉及的5个方面,编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。我们分别来看一下这5方面: 编码标准:一般来说,公司都会有一份编码规范,类命名、包命名、代码风格之类的都会有所要求。 代码重复:顾名思义就是重复的代码,如果代码中有大量的重复代码,...
常见的代码优化技术
weixin_42541254的博客
10-01 2874
常见的代码优化技术有:复写传播,删除死代码, 强度削弱,归纳变量删除,代码外提 1.复写传播: 复写语句:形式为f = g 的赋值 优化过程中会大量引入复写 复写传播变换的做法是在复写语句f = g后,尽可能用g代表f 复写传播变换本身并不是优化,但它给其他优化带来机会 常量合并(编译时可完成的计算) 2.死代码删除 死代码是指计算的结果决不被引用的语句 一些优化变换可能会引起死代码 3.代码外提...
如何写出高质量的代码?现在知道还不晚
程序员之家
02-12 507
书单来自:https://www.quora.com/What-are-some-good-books-about-code-quality在今天的时代,每个人都在努力提...
Java代码优化的常用方法有什么?
weixin_33774615的博客
04-02 152
  Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积、提高代码运行效率是有巨大帮助的,还能在一定程度上避免未知错误,常用的Java代码优化细节如下:   1. 为类、方法指定final修饰符   为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可...
java代码效率优化
weixin_33762130的博客
06-27 195
最近在想自己编程时是否注意过代码的效率问题,得出的答案是:没有。代码只是实现了功能,至于效率高不高没怎么关注,这应该是JAVA程序员进阶的时候需要考虑的问题,不再是单纯的实现功能,也不是完全依赖GC而不关注内存中发生了什么,而要考虑到代码的性能。下面是网上找的一篇关于JAVA代码优化的文章,觉得不错,就转载了。这里面设计到了JAVA基础和J2EE方面的优化建议,有时间会整理一下,现在先转载。 ...
代码优化
墨笙弘一
12-29 346
最近,生产环境发现一个一览的查询,导出excel,发现超过300条数据就没有办法导出,我被安排来解决这个问题,当时我的想法是,300条数据不算多,也不是动态导出EXCEL,要么是SQL需要优化,要么代码的写法有问题。 根据我自己的想法,我便开始做了分析,看了一下原来的代码实现,有如下点: 使用了HQL来全表查询 对于字典值全部是在service里面调用共通方法的sql来转义 在service里面...
259
原创
125
点赞
551
收藏
494
粉丝
关注
私信
写文章

热门文章

  • 知道这10个让你的API接口突然超时的原因吗? 8883
  • 聊一聊近段时间大火的ChatGPT,它真的能代替程序员导致失业潮来袭吗? 7237
  • 离开外包之后,花了10000小时,最后我走进字节跳动拿到了offer 5563
  • 教会你如何进行JVM内存调优 4163
  • 好用到爆的Restful API工具包插件,IDEA 版 Postman 3935

最新评论

  • 使用MinIO构建分布式文件系统来一次分布式文件系统实战!

    阿J~: 强呀强呀,好文支持!

  • MySQL8.0索引新特性—支持降序索引与支持隐藏索引

    阿J~: 我什么时候才能像大佬一样强!!!

  • 野心藏住不住了!OpenAI或在悄悄聘请国际承包商,以培训其软件工程方面的人工智能。

    阿J~: 学到了,一起加油。欢迎回赞哦!

  • 两年前端的2022:24岁、辗转三省、进入阿里

    阿J~: 支持博主,欢迎回赞哦~

  • 带你了解什么是Java虚拟机运行时数据区

    阿J~: 技术流的小哥哥最帅了∩▂∩

最新文章

  • 【无标题】
  • 2022年10大最重要的科技事件和突破!
  • 编程技术面试的7个英文网站,你知道几个?
2023年53篇
2022年208篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家周口不锈钢景观玻璃钢彩绘雕塑泉州玻璃钢人物雕塑定制腾冲市玻璃钢雕塑收费北京季节性商场美陈费用淮北抽象玻璃钢雕塑订做价格吉林多彩玻璃钢雕塑销售厂家广东玻璃钢仿铜雕塑价格山西大型玻璃钢雕塑方法云南卡通玻璃钢雕塑报价太湖石玻璃钢人物雕塑报价郑州镜面玻璃钢仿铜雕塑厂家徐州玻璃钢雕塑多少钱江门会发光的玻璃钢雕塑摆件上海公园玻璃钢雕塑市场甘肃省玻璃钢雕塑厂商定制贵州玻璃钢雕塑订做金华景区玻璃钢雕塑销售厂家南通商场春节美陈广西玻璃钢人物雕塑厂家供应山西商场节庆美陈雕塑厂家鹤壁市玻璃钢雕塑定南玻璃钢花盆花器江苏玻璃钢浮雕雕塑批发河北玻璃钢大公鸡雕塑句容玻璃钢雕塑人物设计仿真人物玻璃钢雕塑定做宣城玻璃钢雕塑喷泉西昌玻璃钢游乐场门头雕塑常州玻璃钢卡通门头雕塑设计苏州商场美陈销售公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化