如何写出防御性代码(屎山代码)

一、想说的

这两年各大公司纷纷实现广进计划,开猿节流,吾辈程序员家人们深受其害。大厂程序员被裁,向下挤压中小厂老铁们的岗位,内卷的不行。

为了咱们保住咱们的饭碗,形成护城河,形成核心竞争力,防止被裁。“防御性编程” 概念又重新流行了起来。

防御性编程,不在再是保护程序了,而是保护广大程序员家人们 😎。

二、具体方案😎

1、命名误导

  • 变量名方法名、类名,包名使用单个字母
  • 命名瞎写,让别人猜不出这个变量用来干啥的
int a, b, c;// 而不是
int firstValue, secondValue, thirdValue;// 变量名瞎起
String newBilityName = "牛逼名字";

2、混合使用大小写字母

int a, A, b, B;
// 这样的变量名很难区分大小写,容易造成混淆

3、误导性的注释

/*** 该方法用于计算两个整数的和。* * @param a 第一个整数,表示年龄。* @param b 第二个整数,表示体重。* @return 返回两个参数的和。*/
public int calculateSum(int a, int b) {// 实际是返回两数的乘积return a*b;
}

4、滥用多态性

public class MultiPolymorphic {public void doSomething(Object o) {if (o instanceof String) {// ...} else if (o instanceof Number) {// ...} else if (o instanceof SomeRandomClass) {// ...}}
}
// 这样的代码很难一眼看出o的具体类型和对应的逻辑

5、过度使用异常处理

public void riskyMethod() {try {// 可能抛出多种异常的代码} catch (Exception e) {// 通用的异常处理,不提供具体的错误信息}
}
// 这样的代码会隐藏潜在的错误,不利于调试和维护

6、滥用匿名内部类

public void setupListeners() {button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// ...}});// 匿名内部类的使用使得代码上下文不明确
}

7、复杂的位运算

int result = a + (b << 1) - (c >> 2);
// 位运算的使用使得代码逻辑难以理解

8、不必要的复杂逻辑

if (a > 0 && b < 10 || c > 20 && d < 30) {// ...
}
// 复杂的逻辑条件使得代码难以阅读和理解

9、滥用反射

Class<?> clazz = Class.forName("some.package.ClassName");
Method method = clazz.getMethod("someMethod");
method.invoke(instance, args);
// 反射的使用使得代码的意图不明确,且性能开销较大

三、最后想说的

虽然在当前的互联网环境中,一些公司可能会进行裁员,但是编写“防御性代码”并不是一个建议采取的策略写这篇文章的目的,只是为了开个玩笑,大家别那么认真。

这种做法不仅不利于团队合作,还可能对项目的长期维护和公司的整体利益造成负面影响。

作为一名专业的程序员,我们应该追求编写清晰、可维护、高质量的代码,以促进团队协作和项目成功。(实际上大点的公司,都会有代码CR(code review)环节),你写一些屎山代码,分分钟被怼死。o(╥﹏╥)o

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/774702.shtml

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

相关文章

STM32的SPI通信介绍

SPI简介 SPI:串行外设接口,与IIC一样都是通用数据总线。四根通信线&#xff1a;SCK&#xff0c;MOSI&#xff08;DO&#xff09;&#xff0c;MISO&#xff08;DI&#xff09;&#xff0c;SS。同步&#xff08;共用一根时钟线&#xff09;&#xff0c;全双工&#xff08;数据发…

阿里云服务器多少钱一个月?低至5元1个月

阿里云服务器一个月多少钱&#xff1f;最便宜5元1个月。阿里云轻量应用服务器2核2G3M配置61元一年&#xff0c;折合5元一个月&#xff0c;2核4G服务器30元3个月&#xff0c;2核2G3M带宽服务器99元12个月&#xff0c;轻量应用服务器2核4G4M带宽165元12个月&#xff0c;4核16G服务…

搜维尔科技:【应急演练】【工业仿真】救援模拟演练可视化仿真项目实施

安全救援综合演练系统是一套面向公共安全事故、预案管理、应急救援模拟演练的虚拟仿真解决方案&#xff0c;它为警察、消防以及专门的应急救援保障部门提供一个综合的应急救援培训和仿真演练平台。平台主要通过设计不同的事故模型和特定的灾难场景&#xff0c;定制不同的应急救…

上班几周了,

过年回来后&#xff0c;时间变得飞快&#xff0c;很多事情都是马上要去干&#xff0c;而且又是很着急的事&#xff0c;呵呵&#xff0c;真的要干趴了 然后——经历了第一次年后的周末连续加班出版本保量产&#xff0c;经历了加班到凌晨3点调试问题&#xff0c;经历我们在疯狂的…

【TypeScript系列】实用工具类型

实用工具类型 TypeScript 提供一些工具类型来帮助常见的类型转换。这些类型是全局可见的。 目录 Partial<T>&#xff0c;TypeScript 2.1Readonly<Type>&#xff0c;TypeScript 2.1Record<Keys, Type>&#xff0c;TypeScript 2.1Pick<Type, Keys>&am…

【字符串算法题记录】反转字符串中的单词(leetcode),右旋字符串(kama)——双指针以及反转的奇思妙用

反转字符串中的单词 题目链接 思考 这题的思路顺序是&#xff1a;移除多余空格&#xff08;双指针法&#xff09;——》反转整个字符串&#xff09;——》反转字符串中每个单词。 移除多余空格&#xff08;双指针法&#xff09; 因为字符串开头也可能有多个字符&#xff0…

深入理解React的setState机制

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

修复ubuntu引导

一、制作ubuntu启动U盘 进入启动盘后&#xff0c;点击Try ubuntu&#xff0c;进入U盘的ubuntu系统。 二、配置和添加源 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update三、运行 Boot Repair重新制作引导 sudo boot-repair注意&#x…

关于HashSet的五个问题

1.HashSet集合的底层数据结构是什么样的? HashSet 集合的底层数据结构是哈希表&#xff0c;它是由一个数组和链表&#xff08;或红黑树&#xff0c;具体取决于 JDK 版本&#xff09;组成的数据结构。 数组&#xff1a;哈希表的主要部分是一个数组&#xff0c;它的每个位置称为…

【java】线程thread

线程池 线程池状态 1.RUNNING 表示线程池正常运行&#xff0c;既能接受新任务&#xff0c;也会正常处理队列中的任务 2. SHUTDOWN 当调用线程池的shutdown(&#xff09;方法时&#xff0c;线程池就进入SHUTDOWN状态&#xff0c;表示线程池处于正在关闭状态&#xff0c;此状…

STEP 格式三维模型读取

STEP是常用的三维模型存储格式&#xff0c;使用Express语言描述几何图形&#xff0c;文件存储方式为BRep&#xff0c;分为STEP203和STEP214&#xff0c;后者多了颜色信息&#xff0c;opencascade中提供了相应算法读取STEP文件。 #include <STEPControl_Reader.hxx>TopoD…

冒泡排序(六大排序)

冒泡排序 冒泡排序的特性总结&#xff1a; 1. 冒泡排序是一种非常容易理解的排序 2. 时间复杂度&#xff1a;O(N^2) 3. 空间复杂度&#xff1a;O(1) 4. 稳定性&#xff1a;稳定 动图分析&#xff1a; 代码实现&#xff1a; Swap(int*p1,int*p2) {int tmp *p1;*p1*p2…

利用Cas中service重定向钓鱼网站问题

前言 今天运维反馈现网有个系统http://aaa-test-env.com/cas/logout?servicehttp://www.evil.com/存在重定向钓鱼网站的安全漏洞。熟悉Cas实现单点登录的都知道&#xff0c;通过service参数&#xff0c;在Cas认证中心登录认证之后重定向到service对应的业务系统。但是Cas本身…

Vue.js 实例

每个 Vue 应用都需要通过实例化 Vue 来实现。 语法格式如下&#xff1a; var vm new Vue({// 选项 }) 接下来让我们通过实例来看下 Vue 构造器中需要哪些内容&#xff1a; <div id"vue_det"><h1>site : {{site}}</h1><h1>url : {{url}}…

tewa-707e光猫超级密码获取方法

这款光猫很魔性&#xff0c;没有WIFI&#xff0c;没有USB接口&#xff0c;没有Telnet&#xff0c;试了很多方法去获取超级密码都不行。后来偶尔的机会找到了方法&#xff0c;现与大家共享。 1、用FTP登录&#xff0c;用户名和密码就是光猫背面标签上的。FTP软件比较好使的是&am…

基于 Linux 的更新版 MaxPatrol VM 可扫描 Windows

&#x1f47e; MaxPatrol VM 2.1 是俄罗斯唯一一款可以安装在 Linux 上并以审计和五重测试模式扫描 Windows 主机&#xff08;甚至是旧版本&#xff09;的漏洞管理产品。 让我们告诉你更新后的 MaxPatrol VM 还有哪些有用的功能&#xff1a; 1. 由于采用了新的数据存储模式&a…

p8782题解

此处仅讲思路。 1 题意&#xff1a;两个 X X X 进制数&#xff0c;求差最小值。 为了方便描述&#xff0c;我们规定&#xff1a; M A M B M_AM_B MA​MB​。两个数为 ( A ) X {(A)}_X (A)X​ 与 ( B ) X {(B)}_X (B)X​ 两个 X X X 进制数。两个数可表达为 ( A ) X x…

基于SSM的高校推免报名(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的高校推免报名&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

37、Linux中Xsync数据同步备份工具

37、Linux中Xsync数据同步备份工具 一、介绍二、配置集群hostname三、修改xsync文件四、赋权五、安装Rsync六、验证一七、配置免密登录1、生成rsa密钥2、copy机器自身公钥到目标机器3、.ssh/文件目录赋权 八、验证二 ⚠️ 注&#xff1a;本文全程在普通用户下操作&#xff0c;…

【数字图像处理matlab系列】数组索引

【数字图像处理matlab系列】数组索引 【先赞后看养成习惯】【求点赞+关注+收藏】 MATLAB 支持大量功能强大的索引方案,这些索引方案不仅简化了数组操作,而且提高了程序的运行效率。 1. 向量索引 维数为1xN的数组称为行向量。行向量中元素的存取是使用一维索引进行的。因此…