首页 > 其他分享 >何为屎山代码?

何为屎山代码?

时间:2024-06-13 19:29:33浏览次数:27  
标签:祖传 哥们 何为 一个 代码 编程 注释

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

编程圈流传着这样一个有趣的小故事:一个哥们上班忽然怒气冲冲,大声质问:“这 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

标签:祖传,哥们,何为,一个,代码,编程,注释
From: https://blog.csdn.net/sxc1414749109/article/details/139587091

相关文章

  • 低代码编辑器的前端开发,难度值不低。
    低代码平台涌现出N多,这个平台中有个重要的功能就是编辑器,如果用前端开发做出编辑器的界面和交互功能,难度值不是一般的大,贝格前端工场在这里浅显的分析一下。一、挑战和难点在低代码编辑器的前端开发中,可能会面临一些挑战和难点,包括:可扩展性:低代码编辑器需要能够支持多种不......
  • 基于注意力机制卷积神经网络结合门控单元CNN-GRU-SAM-Attention实现柴油机故障诊断附m
    以下是一个基于注意力机制卷积神经网络结合门控单元(CNN-GRU)和自适应注意力机制(SAM-Attention)的柴油机故障诊断的示例Matlab代码:matlab%设置参数inputSize=[32323];%输入图像尺寸numClasses=10;%类别数numFilters=32;%卷积核数量filterSize=3;%卷积......
  • 【java计算机毕设】图书管理系统javaweb java MySQL springboot vue html maven送文档
    1项目功能【java计算机专业学长毕业设计分享】智慧图书管理系统JavaSpringBootvueHTMLMySQL前后端分离2项目介绍系统功能:智慧图书管理系统包括管理员和用户两种角色。管理员的功能包括在个人中心修改个人信息和密码,管理员功能模块管理管理员。基础数据管理模......
  • 量化交易:miniQMT的可转债与正股折价套利策略python代码
    哈喽,大家好,我是木头左!套利是一种艺术,一种利用市场的价格差异来获取无风险利润的艺术。而可转债与正股之间的折价套利,更是量化交易者眼中的香饽饽。今天,我们将一起揭开这层神秘的面纱,探索如何使用miniQMT和Python来实现这一策略。......
  • 低代码开发平台:解锁企业创新潜力的关键
    随着数字化转型的深入推进,企业对技术创新的需求日益增长。在这种背景下,低代码开发平台应运而生,成为企业提升研发效率、降低开发成本、加速创新进程的关键工具。本文将从低代码开发平台的定义、优势、应用场景以及我国低代码市场的发展等方面展开论述。低代码开发平台的定义及......
  • 低代码开发平台:加速企业数字化转型的利器
    随着数字化时代的到来,企业数字化转型已经成为关乎生存和发展的关键议题。在这个背景下,低代码开发平台应运而生,为企业提供了高效、便捷的数字化转型途径。本文将探讨低代码开发平台如何加速企业数字化转型,并分析其优势与适用场景。什么是低代码开发平台? 低代码开发平台是一......
  • 用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类|附代码数据
    全文下载链接:http://tecdat.cn/?p=8640在本文中,我们将看到如何开发具有多个输出的文本分类模型。我们开发一个文本分类模型,该模型可分析文本注释并预测与该注释关联的多个标签。多标签分类问题实际上是多个输出模型的子集。在本文结尾,您将能够对数据执行多标签文本分类。数据集......
  • python运行js代码拿到逆向数据-execjs库
    #前提安装了node.js并且设置环境变量https://blog.csdn.net/bestyellow/article/details/119820509importsubprocessfromfunctoolsimportpartialsubprocess.Popen=partial(subprocess.Popen,encoding='utf-8')importexecjs#如果funcs_name是js代码里面的函数名字var代......
  • Kimichat使用案例015:用kimichat批量重命名markdown文件并合并(零代码编程)
    文章目录一、介绍二、需合并的内容三、kimi输入内容四、kimi输出内容五、运行程序一、介绍  一个文件夹里面有很多个markdown文件,需要全部合并成一个txt文件。二、需合并的内容三、kimi输入内容  可以在kimichat输入框中输入提示词:你是一个Python编......
  • 将 Visual Studio .net 代码注释 英文转为中文
    转化之前:  转换之后 1.官方文档有详细讲解 https://learn.microsoft.com/zh-cn/dotnet/core/install/localized-intellisense2.汉化包下载: https://dotnet.microsoft.com/zh-cn/download/intellisense 3.下载后解压:  4. 导航到.NETIntellisense文件夹......