(三)改掉这些坏习惯,还怕写不出优雅的代码?

年薪10万与年薪100万的程序员,写出代码的区别 编程是一门创造性的工作,是一门艺术。我们每天与代码打交道,为什么普通码农辛苦一年只拿十万,而高级架构师年薪百万。最主要的就是我们敲出来的代码有差别,差别在意大部分码农敲出来坏的代码,而高级架构师能敲出优雅的好的代码。 我们每天都会敲代码,但当被问道什么是好的优雅的代码时,大家可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来。显然,这个问题并没有唯一的标准答案,谁都可... 阅读详情

Code Review 是一场苦涩但有意思的修行。

书接上篇,本次一起继续探讨一下,该如何写出优雅的代码?

1. 编码时:搞的复杂并不好 

坏习惯一:多余的 if/else。

反例:

类似上面这种写法,if/else 就显得有点高射炮打蚊子,有的同学就会按照下面方式进行简化。

addBool = (i == 0) ? true : false;

这种方式简化当然跑起来没问题,代码确实简化了不少,但是还是略显冗余啊。

正解:

addBool = (i == 0);

坏习惯二:多余的 else。

反例:

仅以上图为例,每次看到类似截图中的代码,心里都发毛,完全可以提前 return,进而干掉 else 分支。

正解:

心声:

  • 简单就是美,代码写的越少,犯错的几率就越小。
  • 提前终止程序,绝大多数情况下,会节省很多不必要的开销(会减少很多无效的判断,减少无效变量、对象的创建)。
  • 每种编程语言都离不开 if/else 进行条件判断,如果在编码时,存在过多的 if/else 嵌套,代码的可读性就会下降,后期维护难度就会大大提高。

2. 编码时:不善于用轮子  

毛病一:随处可见的判空逻辑。

反例:

if(merId == null || "".equals(merId)) {
      //do something
}

程序为了避免 NPE,很多时候都需要做非空检查,当然上面这种检查方式很有效,只是项目中有太多的属性字段等待去校验,如果到处都是类似的判断,确实有点不太雅观。

很多同学会想着,自己封装 StringUtils 工具类,其实更推荐大家使用三方的轮子。

推荐1:Apache commons-lang 工具包

if(StringUtils.isBlank(merId)) {
      //do something
}

推荐2:谷歌的 Guava 工具包

if(Strings.isNullOrEmpty(merId)) {
       //do something
}

心声:

  • Apache Commons 下面的工具包,用熟了,确实很香。

  • 谷歌的 Guava 工具包也不错,该类库经过高度的优化,方便我们快速编码,能规避不少编码错误。

毛病二:完成对象间的属性 Copy,编写冗长的代码。

反例:

... ...
batchEntity.setNotifyType(batchEntityOld.getNotifyType());
batchEntity.setUpdatedTime(batchEntityOld.getUpdatedTime());
batchEntity.setBizType(batchEntityOld.getBizType());
batchEntity.setMerchId(batchEntityOld.getMerchId());
... ...

正解:

方式 1:采用 Apache BeanUtils 完成属性赋值。

BeanUtils.copyProperties(batchEntityOld,batchEntity);

方式 2:采用 Spring BeanUtils 完成属性赋值。

BeanUtils.copyProperties(batchEntity,batchEntityOld);
对的,你没看错,方法名称、参数都一样,但是 target、source要注意(稍有不慎,就入坑啊!)

不过,这里更推荐使用 Spring BeanUtils,而且在阿里开发规约中也明确强制使用 Spring BeanUtils 完成属性的 copy。

另外,为什么不建议使用 Apache BeanUtils 呢?看看源码就知道啦。

性能问题,估计跟日志输出、类型判断、用 + 号进行字符串拼接等脱不了关系。

3. 寄语写最后 

精妙的代码简洁明了,如果将这个代码给其他程序员看,他们会说:“哇,这代码写得真好。”那感觉很像在写一首诗。

我等采石之人当心怀大教堂之愿景——《程序员修炼之道》。

在一个项目的整体结构之内,总有空间展示个性和匠心……百年之后,我们的技艺或许如今日的土建工程师看待中世纪大教堂建造者使用的技法一样陈旧,但是我们的匠心却会得到尊重——匠人精神。

好了,本次就谈到这里,一起聊技术、谈业务、喷架构,少走弯路,不踩大坑。会持续输出原创精彩分享,敬请期待!

推荐阅读:

(一)改掉这些坏习惯,还怕写不出健壮的代码?

(二)改掉这些坏习惯,还怕写不出优雅的代码?

AAAI 2025杰出论文解读:神经符号推理与生物多样性计算的突破性进展 本文深度解读了AAAI 2025两篇杰出论文的突破性进展。南京大学周志华团队提出“溯因反射”框架,高效解决神经符号推理中的“不一致性”核心难题,为构建可靠、可解释的AI系统提供了新路径。斯坦福大学等机构的DiVShift研究,则系统分析了公民科学数据中的复杂分布偏移,为利用海量数据精准监测生物多样性及应对AI数据偏差提供了关键方法论。 阅读详情

相关推荐

深入Linux网络子系统:STMMAC驱动如何通过MDIO总线与PHY芯片“对话”

本文深入解析了Linux网络子系统中STMMAC驱动通过MDIO总线与PHY芯片的通信机制。详细介绍了MDIO总线的注册流程、PHY设备的绑定机制以及设备树配置,帮助开发者理解MAC控制器与PHY芯片的协作基础,优化网络通信性能。

weixin_26897585的博客 448

代码越写越乱?聊聊如何写出优雅的代码

大家好,我是陈哥,今天给大家推荐一本优秀的书籍!文末送三本!所谓练武不练功,到老一场空,以技术为驱动的程序员同样如此。面向对象编程范式、设计原则、代码规范、重构技巧和设计模式这些程序员基本功在根本上决定了这个职业的发展高度。把这些基本功练好,可以让你成为一个合格且优秀的程序员、摆脱“码农”身份成为真正的技术专家。今天推荐一本前谷歌工程师王争重磅新书《设计模式之美》,这本书来源于极客时间高口碑专栏,...

码猿技术专栏 730

转录组分析中的Fastp和FastQC:如何快速检测数据质量并优化流程

本文深入探讨了转录组分析中数据质量控制的核心流程,重点介绍了Fastp和FastQC两款工具的组合应用。FastQC负责对原始测序数据进行全面质量评估,生成可视化报告;Fastp则能一站式完成接头切除、低质量序列过滤、长度筛选等关键质控步骤。文章提供了详细的参数解读、实战脚本和自动化流程构建指南,帮助研究人员快速检测数据质量并优化预处理流程,为下游的差异表达等分析奠定可靠基础。

weixin_28452161的博客 181

(二)改掉这些坏习惯,还怕写不出优雅的代码?

Code Review 是一场苦涩但有意思的修行。上期分享,通过示例剖析编码中一些经常触犯的性能点,以及编码时常犯的一些小毛病,来告诉新手程序员如何写出健壮的代码。咱们书接上篇,本次一起...

一猿小讲 1625

开发Qt上位机获取阿里云IOT设备数据(开发上位机对接阿里云IOT平台)

使用Qt框架开发一款上位机软件,调用阿里云物联网平台的API接口,获取设备最新上传的实时数据,并在Qt设计的软件界面上展示处理。同时,还支持绘制曲线图表展示数据,并具备定时刷新功能。

2143

【数据集】全球首个10米分辨率精细分类土地覆盖数据集GLC_FCS10

【数据集】全球首个10米分辨率精细分类土地覆盖数据集GLC_FCS10

WW、forever的博客 1567

刚入行不久,如何写出优雅的Java代码?

点击上方蓝色“java大数据修炼之道”,选择“设为星标”每晚九点: 技术干货 ???? 必定奉上 哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到你...

hello world! 521

【一 扣子客户案例合集】【 1.3 识典古籍基于扣子智能助手的古籍数字化全流程技术解析】

古籍数字化智能处理系统全流程解析 本文详细介绍了基于扣子智能助手的古籍数字化解决方案,核心技术包括: 多层级架构设计:采用"云-边-端"三层次架构,整合高精度扫描设备与AI处理模块,实现从物理古籍到结构化数据的全流程自动化。 智能图像处理:通过12道预处理工序(包括畸变校正、污渍去除和对比度增强)处理古籍图像,采用改进的EAST算法和ViT模型实现高精度文字检测与识别,准确率达98.7%。 NLP增强处理:结合Transformer-XL预训练模型和N-gram语言模型进行文本校正,基于

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1440

如何将代码写的更加优雅?

Hello Everyone,好像又有好久没发文章了哈哈哈,不过没关系,好的文章一般都是需要经过长久的酝酿的,就好比你正在看的这篇文章,一看标题就知道肯定是干货!

做兴趣使然的Hero 1万+

Agent驱动电商运营:从选品到售后的全链路革新

在当今竞争激烈的电商市场中,传统的电商运营模式面临着诸多挑战。从选品到售后,每个环节都需要大量的人力投入和专业知识。选品需要深入了解市场趋势和消费者需求,营销需要精准定位目标用户,客服需要24小时响应用户咨询。这些工作不仅耗时耗力,而且容易受到人为因素的影响,导致效率低下和成本高企。AI Agent是一种能够感知环境、做出决策并采取行动的智能系统。感知能力:能够获取和处理环境信息。决策能力:能够根据感知到的信息做出决策。行动能力:能够执行决策,对环境产生影响。学习能力。

AI 领航者的博客 354

全志T527 适配双目tp2815_mipi

在全志T527 linux下适配双目TP2815 mipi摄像头,支持六路同时输出,四路可用作360环视、一路face id等,一路用于其它开发。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 3814

优雅参数判空_(三)改掉这些坏习惯,还怕写不出优雅的代码?

Code Review 是一场苦涩但有意思的修行。书接上篇,本次一起继续探讨一下,该如何写出优雅的代码?1编码时:搞的复杂并不好坏习惯一:多余的 if/else。反例:类似上面这种写法,if/else 就显得有点高射炮打蚊子,有的同学就会按照下面方式进行简化。addBool = (i == 0) ? true : false;这种方式简化当然跑起来没问题,代码确实简化了不少,但是还是...

weixin_39868663的博客 142

光电二极管探测器电流信号处理与指令输出系统

本文提出了一种基于Python的光电二极管电流信号处理系统设计方案。该系统能够实时采集、处理光电二极管输出的电流信号,并根据预设阈值输出控制指令。系统采用模块化架构,包含数据采集、信号处理、阈值检测、指令生成等核心模块。其中数据采集模块提供了模拟器实现和硬件接口框架,支持噪声模拟和脉冲信号生成。系统设计考虑了实时性、可靠性和可扩展性,适用于光强测量、光电检测等多种应用场景。

huanghm88的专栏 1180

(三)改掉这些坏习惯,还怕写不出优雅的代码?(转载)

Code Review 是一场苦涩但有意思的修行。 书接上篇,本次一起继续探讨一下,该如何写出优雅的代码? 编码时:搞的复杂并不好 坏习惯一:多余的 if/else。 反例: 类似上面这种写法,if/else 就显得有点高射炮打蚊子,有的同学就会按照下面方式进行简化。 addBool = (i == 0) ? true : false; 这种方式简化当然跑起来没问题,代码确实简化了不少,但是还是略显冗余啊。 正解: addBool = (i == 0); 坏习惯二:多余的 else。 反例: 仅以上图为

zhongqill的博客 156

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

优雅参数判空_优雅参数判空_(三)改掉这些坏习惯,还怕写不出优雅的代码?...

Code Review 是一场苦涩但有意思的修行。书接上篇,本次一起继续探讨一下,该如何写出优雅的代码?1编码时:搞的复杂并不好坏习惯一:多余的 if/else。反例:类似上面这种写法,if/else 就显得有点高射炮打蚊子,有的同学就会按照下面方式进行简化。addBool = (i == 0) ? true : false;这种方式简化当然跑起来没问题,代码确实简化了不少,但是还是略显冗余啊。正...

weixin_35148943的博客 197

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

(六)改掉这些坏习惯,还怕写不出精简的代码?

鲁迅说:嬉笑怒骂里充满了无奈和妥协。小猿说:先生说的不对,在程序员的世界里,编写代码处处充满了无奈和妥协。(一)改掉这些坏习惯,还怕写不出健壮的代码?(二)改掉这些坏习惯,还怕写不出优...

一猿小讲 1850

(五)改掉这些坏习惯,还怕写不出精简的代码?

鲁迅说:嬉笑怒骂里充满了无奈和妥协。小猿说:先生说的不对,在程序员的世界里,编写代码处处充满了无奈和妥协。Code Review 是一场苦涩但有意思的修行。(一)改掉这些坏习惯,还怕写...

一猿小讲 1976

改掉这些坏习惯,还怕写不出精简的代码

鲁迅说:嬉笑怒骂里充满了无奈和妥协。 小猿说:先生说的不对,在程序员的世界里,编写代码处处充满了无奈和妥协。 (一)改掉这些坏习惯,还怕写不出健壮的代码? (二)改掉这些坏习惯,还怕写不出优雅的代码? (三)改掉这些坏习惯,还怕写不出优雅的代码? (四)改掉这些坏习惯,还怕写不出健壮的代码? (五)改掉这些坏习惯,还怕写不出精简的代码? 上次讨论了一下如何借助注解来精简代码,代码修炼的系列分享,书接上篇,本次继续探讨一下:还有哪些奇淫技巧,能助力写出精简的代码? 1 编...

slw20010213的博客 195

(四)改掉这些坏习惯,还怕写不出健壮的代码?

Code Review 是一场苦涩但有意思的修行。(一)改掉这些坏习惯,还怕写不出健壮的代码?(二)改掉这些坏习惯,还怕写不出优雅的代码?(三)改掉这些坏习惯,还怕写不出优雅的代码?书接...

一猿小讲 1930

直接输出代码_(二)改掉这些坏习惯,还怕写不出优雅的代码?

Code Review 是一场苦涩但有意思的修行。上期分享,通过示例剖析编码中一些经常触犯的性能点,以及编码时常犯的一些小毛病,来告诉新手程序员如何写出健壮的代码。咱们书接上篇,本次一起来探讨一下,该如何写出优雅的代码?编码时:少一点不行 坏习惯一:记录日志时,缺失参数。反例:正解:1. 日志打印时,占位符 {} 要严格与参数相对应,如果对应不上,按照截图示意,日志输出则不会打印 queryStr...

weixin_42509708的博客 102

(四)改掉这些坏习惯,还怕写不出健壮的代码?(转载)

Code Review 是一场苦涩但有意思的修行。 (一)改掉这些坏习惯,还怕写不出健壮的代码? (二)改掉这些坏习惯,还怕写不出优雅的代码? (三)改掉这些坏习惯,还怕写不出优雅的代码? 书接上篇,本次继续探讨一下,该如何写出健壮的代码? 编码时:看似顺眼,实则不然。 举个栗子: String amount = request.getParameter(“amount”); // 校验金额小数点后最多两位小数 BigDecimal a = new BigDecimal(amount); if (a.d

shuirenbushijun的博客 177

(五)改掉这些坏习惯,还怕写不出精简的代码?(转载)

鲁迅说:嬉笑怒骂里充满了无奈和妥协。 小猿说:先生说的不对,在程序员的世界里,编写代码处处充满了无奈和妥协。 Code Review 是一场苦涩但有意思的修行。 (一)改掉这些坏习惯,还怕写不出健壮的代码? (二)改掉这些坏习惯,还怕写不出优雅的代码? (三)改掉这些坏习惯,还怕写不出优雅的代码? (四)改掉这些坏习惯,还怕写不出健壮的代码? 代码修炼的系列分享,书接上篇,本次探讨一下:该如何利用注解写出精简的代码? 编码时:重复的校验,随处可见。 举个栗子: 再举个栗子: 如栗子示意,项目中参数校验随

zhongqill的博客 180

java十进制小数转化为二进制小数代码 乘二取整法_(四)改掉这些坏习惯,还怕写不出健壮的代码?...

Code Review 是一场苦涩但有意思的修行。(一)改掉这些坏习惯,还怕写不出健壮的代码?(二)改掉这些坏习惯,还怕写不出优雅的代码?(三)改掉这些坏习惯,还怕写不出优雅的代码?书接上篇,本次继续探讨一下,该如何写出健壮的代码?1编码时:看似顺眼,实则不然。举个栗子?:String amount = request.getParameter("amount");// 校验金额小数...

weixin_29284201的博客 355

写Java六年,我总结了这些代码坏习惯

这不是形式主义,是让后来人少死几万个脑细胞。代码是写给人看的,只是顺带让机器执行。

2501_90410679的博客 7

写 Python 时的 5 个坏习惯

很多文章都有介绍怎么写好 Python,我今天呢,相反,说说写代码时的几个坏习惯。有的习惯会让 Bug 变得隐蔽难以追踪,当然,也有的并没有错误,只是个人觉得不够优雅。 注意:示例代码在 Python 3.6 环境下编写 1 用列表作函数的默认参数 看下面这个例子 正常我们期望的结果应该是这样的 a:1 b: [1] a:2 b: [2] 但当我们执行代码后,只会得到这样的结...

人生苦短, 还不用Python? 229

写 Python 时的 5 个坏习惯 | python3

很多文章都有介绍怎么写好 Python,我今天呢,相反,说说写代码时的几个坏习惯。有的习惯会让 Bug 变得隐蔽难以追踪,当然,也有的并没有错误,只是个人觉得不够优雅。 注意:示例代码在 Python 3.6 环境下编写 1 用列表作函数的默认参数 看下面这个例子 正常我们期望的结果应该是这样的 但当我们执行代码后,只会得到这样的结果 与预期不一致。为什...

python学习者的博客 505
上一篇: (二)改掉这些坏习惯,还怕写不出优雅的代码?
下一篇: (四)改掉这些坏习惯,还怕写不出健壮的代码?
一猿小讲
博客等级 码龄15年 294粉丝 156原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值