何为屎山代码?

news2025/1/12 20:53:00

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

丽水职业技术学院:以太彩光网络筑基教育信息化标杆之路

丽水职业技术学院作为教育信息化的先行者,是浙江省首批“浙江省高职高水平学校”、“浙江省教育信息化试点校单位”,也是“浙江省数字校园示范校”的一员。学院紧握“十四五”规划契机,全面加速数字化转型,旨在通过基础网络的革新、数字化教学的深化、信息服务的优化、学生管理…

wma和mp3哪个音质好?让我告诉你哪个更胜一筹

在数字音频领域,WMA和MP3是两种常见的音频格式,它们在网络上的音频传输和储存中都扮演着重要的角色。然而,许多人可能会对这两者之间的音质差异产生疑问,想知道哪一个更适合他们的需求。wma和mp3哪个音质好?在本文中&a…

Transformer介绍

Transformer的诞生 2018年Google发出一篇论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》, BERT模型横空出世, 并横扫NLP领域11项任务的最佳成绩! 而在BERT中发挥重要作用的结构就是Transformer, 之后又相继出现XLNET&a…

如何制作MapBox个性化地图

我们在《如何在QGIS中加载MapBox图源》一文中,为你分享了在QGIS中加载MapBox的方法。 现在为你分享如何制作MapBox个性化地图的方法,如果你需要最新版本的QGIS及高清图源,请在文末查看获取软件安装包的方法。 新建地图样式 进入Mapbox Stu…

[2024-06]-[大模型]-[Ollama]- WebUI

主要涉及要部署的前端webui是来源于:https://github.com/open-webui/open-webui 正常就使用: docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-web…

MySQL—多表查询—练习(1)

一、引言 上几篇关于多表查询的基本几个部分全部学习完了。 多表查询的基本类型的查询包括以下: 1、内连接(隐式内连接、显示内连接):... [INNER] JOIN ... ON 条件; ) 2、外连接(左外连接、右外连接&…

中国蚁剑 安装教程 2024年5月

2024/5/11 中国蚁剑 安装教程 一、下载中国蚁剑的加载器和核心源码(两个都要用到) github官方下载地址:https://github.com/AntSwordProject/ 参考文档:antSword/README_CN.md at master AntSwordProject/antSword GitHub 核…

iPhone - 为什么姓名和付款都变成灰色?

问题描述 为什么姓名和付款都变成灰色?点开订阅也显示图 2 的无法连接? 原因分析 联网 WIFI 没有对『设置』开放权限。 解决方案 设置 - 无线局域网 - 使用无线局域网与蜂窝网络的App - 找到『设置』应用 - 勾选『无线局域网与蜂窝数据』

品牌渠道健康发展的关键与方法

一个品牌的渠道健康与否对其长期发展至关重要。品牌虽多,但并非所有产品都能成为品牌,创建品牌需大量精力,而让品牌长久健康发展则需多方面努力。 力维网络服务众多知名品牌,总结出一些渠道治理方法供品牌参考。首先,管…

Matlab 2024a 建模基础知识全面指南

一、Matlab简介 1. Matlab是什么? Matlab(Matrix Laboratory)是由MathWorks公司开发的一个高性能的数值计算环境和编程语言。它以其强大的矩阵运算能力、丰富的工具箱和便捷的数据可视化功能而闻名,广泛应用于科学研究、工程模拟…

IP协议(二)

TOC 一: 网段划分 同一个局域网的主机,要按一定的规则分配IP地址 把一个IP地址分为两部分: 前半部分 ,网络号 >用来表示局域网后半部分,主机号 > 用来区分同一个局域网中的不同主机 同一个局域网内部,主机之间的IP , 网络号相同,主…

进口电动双座调节阀选型-美国品牌

在选型进口电动双座调节阀时,需要综合考虑多个因素以确保选择到最适合的调节阀。以下是一个清晰的选型指南,结合了参考文章中的相关信息: 1. 根据工艺需求确定调节阀类型 流量需求:对于需要大流量调节的场合,双座调节…

选电气还是机械?

电气工程和机械工程都是非常重要的工程领域,但它们确实有不同的特点和就业前景。我这里有一套自动化入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习自动化,不妨点个关注,给个评论222,私信22&…

基于LangChain的Prompt模板

简介: LangChain是一个开源库,简化了基于LLM的AI应用开发,充当AI开发的万能适配器,抽象并整合了大语言模型(如OpenAI和文心)的交互。要使用LangChain,首先通过pip install langchain安装。示例展…

还在为复制粘贴烦恼吗?这5个工具帮你轻松搞定

在日常工作中,CtrlC和CtrlV无疑是我们使用最为频繁的快捷键组合。 复制粘贴,轻松快捷。 但是在使用中,也会有一点不便,那就是无法保存剪贴历史内容。 比如我说复制之后,我想要想要找回这一次复制之前的内容&#xf…

2024年,计算机相关专业还值得选择吗?

计算机专业:2024年的热门选择还是明智之选? 随着2024年高考的尘埃落定,许多考生和家长都站在了人生新的十字路口,思考着如何为未来的职业生涯铺设基石。在众多专业中,计算机相关专业始终占据着一席之地,其…

javaspringbootmysql小程序的竞赛管理系统71209-计算机毕业设计项目选题推荐(附源码)

摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景, 运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数库来完成对系统的设计。整个开发过程首先对竞赛管理系统进行需求分…

上位机图像处理和嵌入式模块部署(f407 mcu中的网络开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 和大家想的不太一样,只要mcu当中带有了mac ip,那么就意味着mcu本身支持了网络开发。但是如果需要mcu支持完整的tcp/ip&…

用友U8 表单视图名查询方法

比如要获取【采购订单】表名和视图名 具体操作如下: 先打开写字板,然后进入U8的采购订单做单界面,按住键盘上的,CtrlshiftC,有的是CtrlC,点增加 然后CtrlV到写字板 key就是采购订单的值 打开SQL 输入语句…

《大道平渊》· 拾贰 —— 天下大事必作于细:做好每一件小事,必然大有所成!

《平渊》 拾贰 "天下难事必作于易,天下大事必作于细。" 社群一位大佬最近在研究新项目, 他做事的 "方法论" 令我深受启发。 他在测试项目时, 每一步都做的非常细致: 整个项目的测试都被划分为一件件小事, 然后有条不紊地推进…… …