首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
聪敏的卡尔在开会
郑州大学 前端工程师
发布于北京
关注
已关注
取消关注
@程序员鱼皮:
这些代码,差点把我气出内伤
大家好,我是鱼皮,一个正在烂代码的泥潭里面摸爬滚打的程序员。先问大家一个小问题:你觉得看别人代码累,还是自己写代码累?我相信有很多朋友会说,当然是自己写代码累了,要思考逻辑、要动手敲键盘,身心俱疲啊;但是,如果你需要经常阅读别人的代码,尤其是烂代码,答案就不一定了。因为自己写代码,逻辑是自己来梳理的、代码自己是熟悉的;但是看别人的代码,你就要去理解别人的代码逻辑,再加上烂代码的加持,可能很简单的逻辑,你都得看半天才能懂。所以很多大佬在面对前人的 “屎山” 项目时,宁愿自己重写,也不去读烂代码。举个夸张的例子:让你实现 1 + 1 的求和自己写:let sum = 1 + 1;某烂代码可能是:let a = {};let b = {};a.toString = function() { return 1;};b.valueOf = function() { return "1";};let sum = a + b;把简单的逻辑搞复杂,便是绝大多数程序员的拿手好戏(当然也包括我)。因为我从大学就开始带团队做项目了嘛,所以经常会审查团队同学的代码,做好二次校验。包括现在虽然开公司了,前端 / 后端同学的代码,也都会在我这过一遍才会发布上线。总之算是看了很多代码,其中有一些真的是让我哭笑不得。下面给大家分享一些代码片段出来,希望大家 不要学习 。1、过于抽象的命名还记得咱们刚学编程的时候,变量的命名都是用的 abcdefg。自学时这么写完全没问题,但是在实际项目中,如果还用过于抽象的命名,那就不太合适了。比如下面这段,大家能看懂是什么意思么?const [l, setL] = useState<boolean>(false);const [d, setD] = useState<any>();但如果我稍微完善下命名呢:const [loading, setLoading] = useState<boolean>(false);const [data, setData] = useState<any>();很多同学应该立刻能看懂了,一个是 “加载中” 的变量,一个是 “存储数据” 的变量。最好的代码应该是不用写注释的,因为 代码即注释 。如果你能把命名做到 “见名知义”,看代码的人会极度舒适。2、有深度的代码比如下面这段:if (condition1) { // 逻辑 A if (condition2) { // 逻辑 B if (condition3) { // 逻辑 C if (condition4) { // 逻辑 D } } }}这里的深度有 2 重含义,一重是字面意思:代码一层嵌一层、深不见底;另外一重是指真的 “很有深度” —— 指让人看不懂。阅读这段代码的感觉就像是你在一座巨大的迷宫里,每次转弯都要判断下是左还是右,最后你只会迷失方向。如何改进呢?最简单直接的方法就是使用早返回策略(early return):if (!condition1) // 逻辑 A return;if (!condition2) // 逻辑 B return;if (!condition3) // 逻辑 C return;if (!condition4) // 逻辑 D return;这样,你的代码就清晰了很多,阅读这种代码的感觉就像是走在了一条直路上,前方的路一目了然。当然,还可以将一些逻辑抽象成独立函数来简化代码,或者使用设计模式来优化。怎么判断一段代码是否过于复杂、应该优化了呢?这里提到一个概念: 圈复杂度 ,这是一种量化代码复杂程度的概念。通常你代码中的 if else 分支越多,圈复杂度就越高,代码就越复杂。企业中一般建议圈复杂度不要超过 10 - 15,我个人的编码习惯是一般不会在代码中出现 3 层以上的嵌套(除非必要)。3、冗余代码这是我遇到最多的问题!分为 3 种情况:能用一行代码搞定,偏偏要写 10 行能用一个变量或函数搞定,偏偏每次都是复制粘贴重复写没有用到的代码,又不舍得删除举个例子,下面这段前端代码,大家觉得有什么问题:这是我们鱼聪明 AI 前端开发过程的真实代码<Spin spinning={!(currDownloadUrl || originPictureUrl || pictureUrl)}> {type === DRAW_APP ? ( drawImg(image) ) : ( drawImg(currDownloadUrl || originPictureUrl || pictureUrl) )}</Spin>第一眼看到这段代码时,我就发现了,判断 spinning(旋转)的代码逻辑比较复杂,包含了两个 || 逻辑。而下面的 drawImg 函数的参数中,又包含了这段一模一样的逻辑。这段判断,其实就是冗余代码,完全没必要写两遍!我调整过后的代码如下:// 要展示的图片地址const showPictureUrl = currDownloadUrl || originPictureUrl || pictureUrl;直接定义一个通用变量,写上清晰的注释,其他地方要使用时就无需关注内部判断逻辑,看注释就行了。这就是所谓的 DRY 原则(Don't Repeat Yourself) ,尽量避免代码冗余。如果你在多处写下相同的代码,那么当需要修改这段代码时,你就需要在所有这些地方都修改,漏一个地方就是一个 Bug。还有,关于项目中没有用到的函数和变量,如果你近期没有使用计划,不妨就删除或者注释掉,别舍不得。利用好 Git 版本控制系统,只要你的代码提交信息写得好,要用到被删掉的历史代码时,去提交记录里找即可。注意,如果是学习时写代码,多保留一些也是合理的。但企业项目中,项目代码精简凝练些会更好。这里打个比方,写代码就像是我在公司里堆东西,一开始总觉得多一点没关系,反正有空间。但是,冗余代码就像是杂物,会越堆越多,迟早有一天,会影响到你,就像我们公司现在一样(右边有一堆杂物):大概就分享到这里,请大家在评论区 @ 出你写烂代码的同事吧 🐶 ~
点赞 135
评论 17
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-22 13:06
OPPO_AI算法部_AI研究员(准入职员工)
霸王茶姬内推,霸王茶姬内推码
1️⃣霸王茶姬面经(hr面) “简单自我介绍一下” 我大概讲了专业成绩和获奖等,我特意提到了我在社团有过活动策划的经历 “嗯有过活动策划经历是吧,说一下你对最近的市场热点有关注吗” “你了解霸王茶姬吗?就你的了解说一下” “你知道我们最近做的活动吗?” “你觉得你的沟通能力怎么样” “你知道达人是什么吗” “你了解我们这个岗位吗” “你觉得以你的经历,能为这个岗位带来什么,你做这个岗位的优势是什么” “你从大学城到公司大概要多久” -反问环节 问了薪资和上下班时间之类的 2️⃣霸王茶姬复试面经(部门主管面) “简单介绍一下自己” “你觉得做一个活动策划最重要的是什么” “你想从我们这个实习中获...
点赞
评论
收藏
分享
今天 02:42
字节跳动_后端开发工程师
教你把普通简历“榨”出技术深度
学弟学妹们大家嚎,今天和大家聊一聊春招。现在这个时间节点,准备春招的大概有两类人,一类是没拿到心仪offer的,一类是提前实习不满意想跑的。今天我根据过往的经验(其实我个人提前批就结束了,主要是当时室友们、同届朋友们的经历)、看学弟学妹们简历过程中遇到的问题、结合自己的工作情况,写一篇总结性的帖子,希望对大家有帮助。简历如何增色?心态建设很多同学都对简历不满意,觉得自己没实习,或者实习没做什么东西。其实这是一定的,客观上:没有公司会指着实习生来做核心的工作,要不然你走了公司怎么办?即使你入职了,绝大部分时间也都是在写业务、梳理业务逻辑等等。所以首先,心态上不要有负担。 你没实际产出是一定的、别...
春招启动,你开始投递了吗...
点赞
评论
收藏
分享
2025-12-29 23:03
已编辑
东华理工大学 Web前端
27届前端找实习简历求改
准备背八股文在寒假找个实习,求大佬帮忙看一下有什么地方需要修改和注意的地方
点赞
评论
收藏
分享
01-19 10:15
库洛游戏_HR(准入职员工)
步步高内推,步步高内推码
步步高实验学校 2026届校招启动啦【学校简介】东莞市步步高实验学校于 2023 年投入运营,占地 230 亩,是一所集幼儿园、小学、初中、高中于一体的十五年一贯制非营利性高端民办学校,学校全面实行小班化教学,学校师生比为 1:5;步步高教育专家团队由来自一流大学的国家课标专家、教育学家,来自著名学校的卓越校长,来自一线、有着丰富教学经验的著名特级教师,以及来自国家级教育媒体的教育策划专家共同组成,为步步高的课程、教学、管理奠定了坚实基础。【招聘岗位】• 幼儿园、小学部及初中部各学科类教师 & 国际教师,类别多多,等你pick! 【福利待遇】• 薪资:幼儿园老师年收入16万起 、中小学...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
牛客吐槽大会 | 有槽不吐,留着过年?吐完领现金红包,痛快!
2057
2
...
拥抱AI,程序员的最后出路
1844
3
...
J人永远闲不下来于是去提前实习
1625
4
...
真正会被取代的,是你心里面的幻觉
1551
5
...
mentor视角下的优秀实习生
1494
6
...
马斯克最新炸裂采访,AI会带走一半工作岗位,普通人将何去何从?
1229
7
...
努力挣钱的意义具象化了
1221
8
...
大厂提前实习对AI开发的新感悟
1184
9
...
去独角兽做龙头还是去大厂做凤尾
1104
10
...
我身材再曼妙,也没有我的工资好笑!
1040
创作者周榜
更多
正在热议
更多
#
牛客吐槽大会
#
2576次浏览
60人参与
#
机械人你知道哪些单休企业
#
83027次浏览
414人参与
#
今年春招是金一银二嘛?
#
7762次浏览
100人参与
#
参加完秋招的机械人,还参加春招吗?
#
103573次浏览
684人参与
#
1月小结:你过的开心吗?
#
1768次浏览
50人参与
#
抛开难度不谈,你最想去哪家公司?
#
4042次浏览
107人参与
#
为什么有人零实习也能进大厂?
#
4828次浏览
116人参与
#
AI时代的工作 VS 传统时代的工作,有哪些不同?
#
8055次浏览
194人参与
#
没关系,至少我的__很曼妙
#
3632次浏览
63人参与
#
赚钱的意义在这一刻具象化
#
3846次浏览
93人参与
#
当你问AI“你会取代我的工作吗”,它说_?
#
3563次浏览
128人参与
#
你的第一家实习公司是什么档次?
#
4053次浏览
69人参与
#
机械人春招想让哪家公司来捞你?
#
379189次浏览
3140人参与
#
你的landing期是如何度过的?
#
8362次浏览
159人参与
#
AI求职实录
#
3243次浏览
98人参与
#
除了Java,最推荐学什么技术?
#
5550次浏览
141人参与
#
一人一道大厂面试题
#
114083次浏览
1263人参与
#
你在职场上见过哪些“水货”同事
#
30719次浏览
167人参与
#
设计人如何选offer
#
187088次浏览
864人参与
#
你觉得什么岗位会被AI替代
#
36720次浏览
255人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务