何为屎山代码?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
PPPPPaPeR.7 分钟前
TopK问题与堆排序
c语言·开发语言·c++·算法
Recitative8 分钟前
python单元测试入门
人工智能·python·深度学习·机器学习·单元测试
小安同学iter12 分钟前
计算机大方向的选择
python·django·pygame
苏十八18 分钟前
前端基础:JavaScript(篇一)
开发语言·前端·javascript·面试·html·ecmascript·html5
人才程序员21 分钟前
【Rust入门】猜数游戏
开发语言·c++·后端·单片机·游戏·rust·c
快乐非自愿25 分钟前
Lfu缓存在Rust中的实现及源码解析
开发语言·缓存·rust
小字节,大梦想26 分钟前
C语言_结构体初阶(还未写完)
c语言·开发语言
黑泽明Coding29 分钟前
编译rust程序,并让它依赖低版本的GLIBC库
开发语言·rust
人才程序员29 分钟前
【Rust入门】生成随机数
开发语言·数据库·后端·单片机·rust
Roy Teng29 分钟前
数学建模MATLAB绘图大全
开发语言·数学建模·matlab