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

一、想说的

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

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

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

二、具体方案😎

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() {
        @Override
        public 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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值