程序员写出这样的代码,能不挨骂吗?

程序员懵逼时刻:几个月后,之前自己写的代码也看不懂了? 程序员们大多都会有过这样的经历,就是要看别人写的代码。比如说公司有同事离职了,他的业务就需要有其它的小伙伴们给接下来继续维护。 这对好多程序员来说是一种折磨,边看边骂,这写的是什么东西呀。相信好多人都有这种经历。 那么为什么会出现这样一个局面呢,其实这里面就有很多讲究的地方了,如果不注意的话,不光是看不懂别人写的代码,即使是自己写的代码,几个月后你再去瞧瞧,你也会发现,咦,看不懂了呢。 ... 阅读详情

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。

但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?

昨夜,闲情雅致,瞅了瞅隔壁小王的代码,看完之后真是太上火,气不打一处来。

于是,把小王犯的错误拉了个清单,一起帮他改进一下,顺便看看这些坏习惯,你是否也有呢?

1.

过度相信别人,会给自己挖坑。

针对接口输入参数,没有进行严格校验,尤其是要插入数据库库的参数,一路透传到底(数据库层面),数据库就报数据插入异常。

对于调用者而言,会一直等待接口响应,而最后拿到数据库错误,会一脸懵 B;对于接口本身而言,会占用数据库连接,损耗资源,如果并发量大的情况,影响可想而知。

建议:业务代码研发过程中,不要相信调用者会按照要求传参数,要做到防御性编程。

2. 

异常捉都捉啦,就差一哆嗦。

2.1. 抓住了异常,却什么都没做!

2.2. 打印异常栈的方式,却显得毫无意义。

估计很多人,都会这么写,但是在生产上,却显得意义不大,所以最好用记录日志的形式输出异常信息。

建议:业务代码研发过程中,针对接口中发生的异常,既然进行了 catch,那就一定要好好封装处理,若不做任何处理,私自把异常给吞没了,一旦线上出了问题,却不知道问题出在了哪里。

3. 

小儿科的问题,会大意失荆州。

3.1. 代码这么写,还谈什么用户体验?

例如,用户绑定银行卡场景,判断银行卡是否已经绑定,未绑定则进行绑定。

循环遍历用户绑定的银行卡列表,然后比较传入的卡号(cardNo)是否已经绑定过,当传入的卡号与绑定的卡号一致时,修改 hasCard 为 true,并没有跳出循环,继续下一次比较判断。

那么,如果类似这种代码,发生在数据量比较大的场景下,势必会降低性能,过度浪费资源,用户肯定会骂街。

建议修改方式(仁者见仁智者见智):

3.2. 数据挨个去处理,怎么还出现了漏网之鱼?

例如,三方数据对账时,判断三方传过来的数据在本地状态是否正常匹配,把没匹配的数据进行注销处理。

代码这么写,一旦条件匹配,进行删除某条记录后,list 的大小发生了变化,而 i 的值也在变化,就会导致在遍历的时候,漏掉某些记录。

比如,当删除第 1 个元素后,继续根据索引访问第 2 个元素时,因为删除的关系,后面的元素都往前移动了一位,所以实际访问的是第 3 个元素。

建议采用 Iterator 删除,或者集合倒序遍历删除。

3.3. & 与 && 的使用不当,终酿错。

例如,在 Web 项目中,判断输入的邮箱是否为空。

当 email 输入为 null 时,& 使用时,后面的条件会发生空指针异常。

建议修改为:

同样,|  与 || 也有类似的情况,所以在使用时,也要注意此类场景的问题。

3.4. equals 比较,搞不好会出幺蛾子。

当 resMap.get(Global.RETCODE) 为 null 时,会发生空指针异常。

鉴于 Object 的 equals 方法容易抛空指针异常,所以业务研发中,应使用常量或确定有值的对象来调用 equals。

建议修改为:

3.5. 数学运算,搞不好会倾家荡产。

输出结果:0.010000000000005116,一般遇到需要用到浮点数运算的地方,都可以使用 java.math.BigDecimal。

建议修改为:

注意构造 BigDecimal 的参数为 String,千万别搞错了,这也是新手易犯的问题。

3.6. 奇葩的注释,看到就想骂街。

3.6.1. 项目中的某类的注释。

代码的作者是管理员,敢问,管理员 TM 又是谁?而且源文件有过修改,但是修改描述的是啥?着实让人费解!

3.6.2. 项目中的某方法的注释。

方法参数没有解释;方法返回值没有解释;作者又是属于管理员;修改描述描述的是个啥?

4.

让代码会说话。

4.1. 避免江边卖水。

4.1.1. 业务接口验签代码片段。

红色圈住部分,感觉有点江边卖水,多此一举。那么,可以去掉 false 判断,建议修改如下:

同样的,代码研发中,true 的判断也一样可以去掉。

4.1.2. 用户登录代码片段。

最后的 else 有点多此一举,可以省略,可以修改为:

 

4.1.3. 用户是否绑定银行卡片段。

在 return 前的判断,貌似略显多余,可以修改为:

4.2. 减少 Bug,减少圈的复杂度。

(图片来源于网络)

会发现嵌套层数越多,代码越复杂,其圈复杂度也就可能越高。不过,控制嵌套层数,便是降低 Bug 发生概率的一个有效手段。

例如,下面的代码片段,项目中可谓是一抓一大把。

根据场景,可以适当调整如下:

4.3. 统一作战,代码未动,规范先行。

为了让写出的代码能够清晰阅读,前提是团队要进行统一,不能为了个人嗜好,而独创研发秘笈。

敢问,有哪些需要进行统一呢?

统一的开发环境(JDK版本、集成开发工具 IDE、存放目录...);

统一的开发框架,更多精力集中到业务开发上;

统一的开发模板,开发工具要进行统一 Scheme;

统一的开发规约,命名、注释、代码结构等约束;

统一的 DB 规约,具备一个良好的标准。

统一的 ... ...

5.

代码评审的过程,会让人哭笑不得!

铁打的营盘流水的码农,你的代码迟早会被其他同事接手,为了让接手你代码的同事,心里不默默骂你,建议还是好好对待编码这件事,认真写好每行代码。

写代码是一件快乐的事情,评审代码更是一件有趣的事情,通过评审代码,能够相互学习,并使代码更加健壮,提早发现 Bug,所以每一次都不要错过。

最后,本次分享就到这里,希望你们能够喜欢。

 

程序员为什么没有女朋友?看完这篇文章你就明白了,每个字都尽显程序员的辛酸! 大家好,我是狗子,也是一名程序员。我每天的工作就是写代码,所以经常自嘲自己是程序猿、码农。作为世界上最苦逼的人群,我刚入行那会,就算不用飘柔,对自己的头发还是很自信,直到工作几年后… 虽然头发变少了,但是我也练就了一项非凡的本领,就是我只需要瞄一眼,就能知道同事有没有认真工作。比如: A同事正在快速的打字,而且中间还有停顿,那他一定是在写代码; B同事鼠标键盘并用,而且还在不停的点击,那他一定是在改BUG; C同事在不停的用鼠标滚轮,那他一定是在查错; D同事在不停的按F5刷新,那是他的脚本卡住了; E 阅读详情

相关推荐

易语言骂人源码

源码类型

chatgpt赋能python:Python的“骂人”——如何优雅地吐槽

Python的“骂人”方式不仅可以用来发泄自己的情绪,更可以用来传达问题的本质和解决方案。作为一名程序员,我们需要避免使用过激的言语来表达自己的情绪,而是要使用优雅的方式来进行沟通和表达。只有这样,我们才能构建一个和谐、融洽的工作环境。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。

suimodina的博客 3639

易语言整人小程序代码 可以试试

易语言 代码完整 简单易学整人小程序,让你的朋友的电脑不停地弹网页,光驱,程序始终在最前面,发出可怕的怪叫,在9秒后自动关机。

chatgpt赋能python:Python骂人的代码-让你愤怒升级!

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

aijinglingchat的博客 4214

详解一典型的反激式开关电源方案

如图,在某系统方案上看到下图所示的单端反激式开关电源方案。

alala120的博客 1万+

薛定谔虚拟筛选实战:如何用PDB文件快速构建受体格点(避坑指南)

本文提供了薛定谔虚拟筛选实战指南,聚焦于如何从PDB文件快速、精准地构建受体格点。文章详细解析了可变残基的理性处理策略、基于配体尺寸的盒子量化设置方法,并分享了高级约束与排除体积的实战技巧,旨在帮助用户避开常见陷阱,提升虚拟筛选的成功率与效率。

weixin_28419039的博客 252

chatgpt赋能python:如何用Python骂人——一个不得已而为之的教程

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

turensu的博客 1019

mcgs数据查表功能,用于大量数据对比查找对应数据,减少PLC代码

mcgs脚本实现数据查表功能

qq_24866535的博客 3270

优快云在作死的路上越走越远

现在的博客质量稍微高一些的都被系统自动给设置成VIP可见,不开VIP,现在基本很难找到有用的资料,真的怀念刚认识优快云的那段时光,好多大佬在上面分享,对于小白的我们是多么宝贵的经验,遇到问题第一反应就是去优快云里面求助。现在的优快云真是让人越来越失望,希望哪位大佬赶紧出一个新的博客平台把优快云取代了吧!csdn 现在吃相越来越丑,本来是一个大家相互交流学习的平台,现在真的是被资本家彻底给玷污了,管理层的眼里只剩下金钱了。

IT你我 2111

Stable Diffusion跑图总爆显存?别急着换显卡,试试这个PYTORCH_CUDA_ALLOC_CONF参数调优

本文深入解析了Stable Diffusion运行中常见的显存不足问题,特别是由显存碎片化导致的假性OOM现象。通过详细讲解PYTORCH_CUDA_ALLOC_CONF参数中的max_split_size_mb设置技巧,提供了一套完整的显存优化方案,帮助用户在无需升级硬件的情况下显著提升AI绘画的稳定性与效率。

weixin_42524100的博客 347

syslog RFC5424协议详解

RFC5424协议解读与报文分析。

chenwr2018的博客 6690

优快云 还是一个不错的技术社区

随笔一篇,和技术无关。

hoodlum1980的专栏 1万+

从STM32转战STC32G?逐飞开源库帮你快速上手GPIO、PWM与ADC(避坑指南)

本文详细介绍了从STM32迁移到STC32G32K128的开发实践,重点解析了GPIO、PWM和ADC等基础外设的设计差异,并提供了基于逐飞开源库的高效应用方案。通过对比两种平台的开发工具和操作方式,帮助开发者快速上手STC32G,避免常见陷阱,提升开发效率。

weixin_30316097的博客 529

转载 程序员写出这样的代码,能不挨骂吗?

原文链接(https://blog.youkuaiyun.com/javaforwork/article/details/104853358) 侵删 当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。 但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?

weixin_47090923的博客 234

多路输出电源的交叉调整率:从理论到无源优化实践

本文深入探讨了多路输出电源中的交叉调整率问题,分析了其物理根源及无源优化方法。通过漏感与耦合的理论分析,结合加权反馈、电感耦合等五种无源优化技术,帮助工程师有效解决交叉调整率挑战。文章还以TDK-Lambda CUT75系列为例,展示了优化技术的实际应用与效果。

weixin_26886855的博客 280

论文阅读:Query-Dependent Video Representation for Moment Retrieval and Highlight Detection

近年来,随着视频理解需求的急剧增加,视频时刻检索和高亮检测(MR/HD)成为人们关注的焦点。MR/HD的主要目标是对给定的文本进行视频时刻定位和内容一致性估计,即显著性得分。尽管最近基于transformer的模型带来了一些进步,但我们发现这些方法并不能完全利用给定查询的信息。例如,在预测时刻及其显著性时,有时会忽略文本查询与视频内容之间的相关性。为了解决这个问题,我们引入了基于查询的DETR (QD-DETR),这是一种为MR/HD量身定制的检测transfomer。

qq_42681787的博客 919

程序员写出这样的代码,能不挨骂吗?(转载)

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。 但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好? 昨夜,闲情雅致,瞅了瞅隔壁小王的代码,看完之后真是太上火,气不打一处来。 于是,把小王犯的错误拉了个清单,一起帮他改进一下,顺便看看这些坏习惯,你是否也有呢? 过度相信别人,会给自己挖坑。 针对接口输入参数,没有进行严格校验,尤其是要插入数据库库的参数,一路透传到底(数据库层面),数据库就报数据插入异常。 对于调用者而言,会一直等待接口响应,而最后拿到

jianye33的博客 286

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

你竟然写出这样的代码

上周开会时,跟同事在讨论,什么是好的代码。什么是好的代码,怎么定义好的代码。往简单了说,自己刚写的代码都是好的代码,别人写的都是垃圾。往复杂了说,高内聚,低耦合,OCP、SRP、ISP,...

eclipse_xu 1610

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

在企业中git的使用流程,看完少挨骂哦~

一、在前东家的欢乐时光 回忆:在上一家公司,由于做的项目规模不大,公司的开发流程以及体系不是太完善,在写代码时就是想到哪写到哪,没有人管,非常的 be real 非常的野 ~ 写代码提交的话直接是提交到master分支(因为我们没有测试,我们就是测试~嘿嘿嘿),只要不是逻辑走不通的,就直接提交。线上出现问题了再去解决。舒服 ~ 无形中我在git这个领域上挖了很多个坑… continue… 二、到了新公司填Git的坑 在我入职的第一天,刚坐到工位上的那一刻,我就开始控制不住我内心的野,想写bug了\⊙_⊙/…

是江迪呀 的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

不给工资,还要挨骂?免费给你写代码?

01log4j背后的心酸团队前几天的文章,我们介绍了log4j的巨大漏洞,大半个地球上的企业的程序员都在连夜修漏洞。但是也就在这几天,log4j的维护团队在网上发文诉苦:翻译:log4j的...

寒羽的博客 200

程序员的梦想,打工是不可能打工的,这辈子不可能打工的!

打工是不可能打工的,这辈子不可能打工的!(这是窃格瓦拉名言) 如果还不知道窃格瓦拉是谁,可自行网上搜索! 总之,前几天冲上了微博热搜第1的宝座! ...

一只苟延残喘的卑微蝼蚁 3421

看完你不笑证明你不是真的程序员

3 和同事QQ 聊天,对面说先去赶个代码,然后突然发过来一个“:wq”。 啥叫职业病?职业病就是作为一个IT民工,如果有一天5点钟就下班,你会很无比内疚;如果连续两天5点下班,你会无比自责;如果连续三天5点下班,你会严重怀疑公司是不是准备把你给炒了。 编程语言分为两种:一种是天天挨骂的,另一种是没人用的。 搞 C 的看不起搞 C++ 的, 搞 C

Good_Man_的博客 2596

新手修复代码缺陷总问人?先掌握这 3 个自查方法,少挨骂

比如,新手开发前端表单验证功能时,遇到 “手机号验证不生效” 的问题,可在控制台直接调用验证函数(如 “checkPhone ('13800138000')”),查看返回结果是否为 “true”,若返回 “false”,则说明验证函数内部逻辑有误,而非表单提交流程的问题。比如,新手开发 “购物车结算” 功能时,遇到 “结算金额计算错误” 的问题,该功能涉及 “获取购物车商品”“计算商品折扣”“叠加优惠券”“计算税费” 四个步骤,此时就可以逐个验证:​。以 Git 为例,操作步骤如下:​。

2503_92848840的博客 1029

这个在阿里内网挨骂的程序员 做出了最受欢迎的开源软件

2020年6月3日,阿里巴巴的内网热搜忽然挤进一个词——Fastjson,很快,一条关于「Fastjson,我心里永远的痛」被拱上热贴第一名。大家的吐槽挺含蓄,比如这样:这张图至今存在我...

weixin_43167418的博客 228

怎样才能写出高质量的代码呢?

<br />这几天一个项目要进行项目验收,却发现系统不稳定,会死机。<br />查问题也难查出来,只是在多个客户端同时操作时。出现这种情况,不竟让思考起来怎么才能写出高质量的代码来。上网搜了很多,还是没有发现很好的解决方案。难道真的就只能这样吗?<br />最后终于发现了篇很好的文章:<br />1,大部分人所在的公司,开发人员仅3-5人,多的在10人。别看就这几条枪,还从售前支持,软件开发,测试、打包发布、文档编写、实施安装、培训、技术支持都做。西安程序员俱乐部 软件开发、软件测试 高级人才俱乐部(n l

秋风扶柳笛的专栏 1271
上一篇: 拥有这些工具,还怕干不出好活?
下一篇: Java 程序该怎么优化?(技巧篇)
一猿小讲
博客等级 码龄15年 294粉丝 156原创
评论 21
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值