当前位置: 首页 > news >正文

何为屎山代码?

在这里插入图片描述

在编程界,有一种代码被称为"屎山代码"。这并非指某种编程语言或方法,而是对那些庞大而复杂的项目的一种形象称呼。屎山代码,也被称为"祖传代码",是历史遗留问题,是前人留给我们的"宝藏"。它不是一个人堆成的,而是无数前辈一层一层堆起来的。

在这里插入图片描述

一些新手程序员,自信满满,决定重构或修改这些屎山代码。但听我一句劝:屎山代码虽然看着难受,但一旦动手,山就可能塌了,将自己深埋于屎山之中,臭不可闻。

在这里插入图片描述

想象一下,你有一个满是锁的箱子,手上拿着一串没有备注的钥匙。你一个一个锁地试,最终打开了箱子,却没想到里边还有一个满是锁的箱子。当你费尽心思解决了所有锁,钥匙却断了。你完全不明白为什么要这样设计,它看起来那么愚蠢。

在这里插入图片描述

当你有了个新想法,忙碌之后,可能会发现自己写得更蠢。不要试图去理解它,改变它。罗马不是一天建成的,屎山也不是一天堆出来的。千万不要凭一己之力,愚公移山。谁愿意搭上子子孙孙去搞屎山?

那有什么办法解决呢?我告诉你,无解。只要这坨屎山还能支撑业务运作,就不会有领导关心。你一个人和领导沟通,领导又不懂技术,对牛弹琴。你一个人硬着头皮改,你必然疲惫不堪,身心俱疲,最后也必成拉屎之人,千万不要明知山有屎,偏向屎山行。

在这里插入图片描述

编程圈流传着这样一个有趣的小故事:一个哥们上班忽然怒气冲冲,大声质问:“这 TMD 谁写的代码,这么明显的 bug 都能写出来,还不写注释?简直就是一坨屎”。当时项目组的码农们都心惊胆战,不敢说话,瑟瑟发抖,生怕把自己揪出来示众。项目经理听到后发话:"哥们查一下 git 记录。"查出来后通报。哥们说:"在查了。"过了几分钟后,哥们说:"不可能吧!"大家都凑过来看,发现这段代码是哥们一年前自己提交的。为了避免尴尬,大家都没有再提这件事情。

言归正传,造成屎山代码的原因有很多:

  1. 离职工作交接不重视
  2. 无项目文档
  3. 代码注释不全
  4. 团队机制不完备
  5. 领导客户的原因

如果项目需要添加新功能怎么办?那只能在屎山上挖个坑,然后自己再拉坨屎上去。

在这里插入图片描述

屎山是神圣的,为了让你的下一任有点事情做,你可以这样:

  1. 定义看不懂的命名
  2. 定义过长的类或者函数
  3. 写大段重复代码,不进行封装
  4. 写一堆没有注释的代码
  5. 定义 100 个参数的函数
  6. 让业务过度耦合

不幸的是,大多数项目中,上述屎山代码是随处可见的。毕竟几百个人写的屎山代码,就像几百个人堆积木,堆得歪歪扭扭、摇摇晃晃、乱七八糟。你千万不能抽掉一块,指不定抽了一块就塌了。只能看见哪里不牢靠,不停地往哪边堆积木,只要不倒就好,这也是大部分程序员的工作。

在这里插入图片描述

其他行业里的祖传是指有传统的根基,良好的信誉品质好,可以说是前人栽树后人乘凉。但代码如果挂上祖传二字,就意味着无数修不完的 bug。

面对屎山代码,我们或许无法完全避免,但我们可以尽力减少它的产生。通过良好的编程习惯,清晰的代码结构,充分的注释和文档,我们可以为后来者留下一个更加稳固的代码基础…,好了我编不下去了,因为我也是挖坑拉屎的人~~~

![[Pasted image 20240608000755.png]]

原文地址:https://mp.weixin.qq.com/s/uIhRYcZ0IqNGpNeMuJk1rQ
往期文章合集:https://stormsha.blog.csdn.net/article/details/139203741

http://www.lryc.cn/news/369396.html

相关文章:

  • 基于esp8266_点灯blinker_智能家居
  • Web前端开发交流群:深度探索、实践与创新的集结地
  • 苹果AI一夜颠覆所有,Siri史诗级进化,内挂GPT-4o
  • 量子计算的奥秘与魅力:开启未来科技的钥匙(详解)
  • redis 主从同步时,是同步主节点的缓存积压区的数据,还是同步主节点的aof文件
  • Unity年中大促618活动又来了3折模板特效角色动画插件工具FPS生存建造模板RPG和2D素材优惠码UNITY6182024限时20240611
  • 【MyBatis-plus】saveBatch 性能调优和【MyBatis】的数据批量入库
  • 前端三剑客之JavaScript基础入门
  • Fyndiq买家号下单:自养号测评如何打造本土物理环境系统?
  • 自动检测曲别针数量:图像处理技术的应用
  • 【Git】多人协作 -- 详解
  • Eureka和Nacos有哪些区别?
  • 如何正确使用 include-what-you-use
  • 企业内网安全软件分享,有什么内网安全软件
  • 【摘葡萄game】
  • java如何实现字符串连接
  • 流量卡选卡攻略,拯救不会选流量卡的小白!
  • python class __format__ __bytes__区别
  • C++ | Leetcode C++题解之第134题加油站
  • 【Linux】ls命令
  • 多态、虚函数表与动态绑定的深入解析
  • VitePress+Docker+jenkins构建个人网站
  • Windows11下Docker使用记录(五)
  • 快速学习Java的多维数组技巧
  • C语言运算类型有哪些
  • 【深度学习】Loss为Nan的可能原因
  • 解密!考研数学满分学霸的备考书单
  • AI绘画工具介绍
  • 【APP逆向】央视频播放量增加,逆向全过程解密
  • 三星系统因何而成?或许是因为吞噬了第四颗恒星