一、想说的
这两年各大公司纷纷实现广进计划,开猿节流,吾辈程序员家人们深受其害。大厂程序员被裁,向下挤压中小厂老铁们的岗位,内卷的不行。
为了咱们保住咱们的饭碗,形成护城河,形成核心竞争力,防止被裁。“防御性编程” 概念又重新流行了起来。
防御性编程,不在再是保护程序了,而是保护广大程序员家人们 😎。
二、具体方案😎
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