前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大厂程序员提倡“防御性编程”:故意把代码写得很烂,万一被裁,要确保留下的代码不可维护!!

大厂程序员提倡“防御性编程”:故意把代码写得很烂,万一被裁,要确保留下的代码不可维护!!

作者头像
Python编程爱好者
发布2023-12-29 18:26:50
1610
发布2023-12-29 18:26:50
举报

Hi,我是Johngo~

看到一则消息,挺震惊的,脱离我们现有的认识,虽这种情况一直有。但是目前看来被大家重中之重的提上了日程。

你没看错,就是 “防御性编程”!

前一段时间,闹得沸沸扬扬的阿里、腾讯、滴滴,纷纷出现宕机的情况,也被咱们所有的 coder 笑称“降本增笑”!

也就在这两年,在职的同学担心哪一天被裁,找工作的同学期盼着哪一天能拿到一个合理的offer。

很多公司裁员的策略也的确出现了一些问题。

比如说,很多公司对中层下手,也就是这帮维护着整个的项目,维护着所有的落地的代码的人。

也就是这批人,薪资高、待的时间久,就把这一波人裁员了,的的确确降本了。

直接带来的后果就是,高层无法维护线上的代码,初级程序员搞不定,问题就来了。

反正就是,把最能coding的人裁掉了,不出现问题才怪!

像这样的,都在代码留一手,大家怎么看?

我们在大学课堂上,以及刚刚毕业那会儿,听到的都是:

一定要:确保代码的可读性、可维护性、可扩展性和安全性!

比如说:

  1. 清晰明了的命名: 使用有意义、清晰易懂的变量名、函数名和类名,以提高代码的可读性。
  2. 适当的注释: 添加清晰、简洁的注释,解释代码的关键部分、算法和设计决策。以达到其他人也容易看懂和维护。
  3. 模块化和函数化: 将代码分解为小的、可重用的模块和函数。这有助于提高代码的可维护性和可测试性,并促使良好的代码组织。

等等等等。。。。

结果目前的状况就是保全自己,故意写的很烂,故意写的不可维护,提高自己在公司岗位上的“不可替代性”。

这就叫“技术壁垒” ??!

有人说,防御性编程坑的只有接手的人,资本家才不会管这些。

也有人说,对于高手,什么屎山没见过,什么烂代码没维护过,根本不是事儿,只是费事儿~

总归我觉得吧,不反对,但也不提倡!!记得去评论区参与~

还是那个初心:不断提高自身能力,无论是coding,还是业务!提高自身防御力,此处不留爷,自有留爷处。

说了这么多,再说一些技术方面的事情。

最近已经分享了很多关于机器学习和深度学习的内容,大家可以点击文末链接进行查看。

同时这里分享一个面试题,大家可以查缺补漏,给出自己的见解。

最近后台有同学问:为什么SVM在高维数据上表现得较好?

你好,咱们来说说你的这个问题。

SVM在高维数据上表现较好的原因,其实可以从5个方面来解释。

1. 维度的诅咒

在低维空间中,数据点之间的距离相对较小,容易造成类别之间的混淆。而在高维空间中,数据点之间的距离相对较大,这有助于更好地分离不同的类别。这是因为随着维度的增加,数据在空间中变得更加分散,使得样本之间更容易分开。

2. 核技巧(Kernel Trick)

SVM通过核技巧将低维空间中的非线性问题映射到高维空间中的线性问题。在高维空间中,原本非线性可分的数据在某种变换下可能变得线性可分。这种映射通过核函数来实现,常见的核函数包括线性核、多项式核和径向基函数(RBF)核。

3. 间隔最大化(Maximal Margin)

SVM的目标是找到一个能够最大化不同类别之间间隔的超平面。在高维空间中,样本点更容易被超平面分开,并且最大间隔的超平面对于新的数据点的泛化能力更强。

4. 鲁棒性(Robustness)

在高维空间中,SVM对于噪声和异常点的影响相对较小。这是因为在高维空间中,异常点的影响更容易被稀释,不容易对整体的决策边界产生显著的影响。

5. 维度的增加提供更多信息

随着维度的增加,数据中包含的信息也相应增加。这使得在高维空间中更容易发现和利用数据的内在结构,从而更好地进行分类。

下面咱们使用sklearn来写一段Python代码,同时使用了一个二维数据集和一个径向基函数(RBF)核:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm

# 生成一个二维数据集
np.random.seed(0)
X = np.random.randn(300, 2)
y = np.logical_xor(X[:, 0] > 0, X[:, 1] > 0)

# 使用径向基函数(RBF)核的SVM进行分类
clf = svm.SVC(kernel='rbf', gamma=1)
clf.fit(X, y)

# 绘制决策边界
h = .02
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.coolwarm)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('SVM with RBF Kernel')
plt.show()

上面代码可以看到SVM在高维数据上的表现,同时说明了如何通过核函数进行非线性映射。

有任何问题和见解,欢迎评论区给出~

我是Johngo下期见~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Johngo学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档