Hello,大家好,我是Sunday。
10月23日
2023年10月23日,语雀崩溃 10 个小时,作为一款知名度极高的产品,这样的一次崩溃可以说对语雀的口碑影响极大。
不过,好在语雀的公关团队处理的还不错,没有甩锅而是及时发布公告,明确是自己的问题。同时在问题解决之后,给大家 六个月的会员补偿 也可以说是诚意满满(以下为10月24日语雀团队公告)。
毕竟大家都是程序员嘛,这种事也不是不能接受。毕竟:谁还没搞崩过系统呢?😂
本以为这件事就这么过去了,哪知道昨天的一个故障,再次让语雀登上了"风口浪尖"......
11月12日
昨天下午,我在正常使用语雀记录同学学习情况的时候,突然出现了无法保存的情况。心想:"这不会是又崩了吧~~"
看了眼语雀群的微信,果然......
说实话,当时我的第一反应是:"又有瓜可以吃了~~~~~,开心😂"
反正也写不成了,坐等吃瓜就行了。正好恰逢双十一,看看买的硬盘到哪了。
结果打开淘宝才发现,这次不对劲啊,淘宝也崩了!!!
最终我们了解了事情的全貌:
本次事故是由于阿里云 OSS 的故障导致的。钉钉、咸鱼、淘宝、语雀都崩了....
从语雀的公告也体现出了这点:
公告内容如下:
尊敬的客户:您好!北京时间2023年11月12日 17:44起,阿里云监控云产品控制台访问及API调用出现出现使用异常,阿里云工程师正在紧急介入排查。非常抱歉给您的使用带来不便,若有任何问题,请随时联系我们。
可以说,语雀这次有点躺枪了(谁让你刚崩过呢~~~)。
玩点花的!教你写出令人窒息的"烂代码"
好啦,瓜吃完啦。
关于语雀崩溃的反思,网上有很多文章,我就不凑这个热闹了,想要看的同学可以自行搜索~~
"回归正题",接下来咱们就来看看咱们的文章正题:"如何写出烂代码"。
以下共有十三条烂代码书写准则,可能并没有面面俱到,如果大家发现有一些难以忍受的烂代码习惯,也可以留言发表意见~~
第一条:打字越少越好
js
// Good 👍🏻
const a = 18
// Bad 👎
const age = 18
第二条:变量/函数混合命名风格
js
// Good 👍🏻
const my_name = 'Suday'
const mName = 'Sunday'
const MnAme = 'Sunday'
// Bad 👎
const myName = 'Sunday'
第三条:不要写注释
js
// Good 👍🏻
const cbdr = 666
// Bad 👎
// 666ms 是根据 UX A/B 测试结果进行经验计算的。
// 具体可查看 xxxxxx
const callbackDebounceRate = 666
第四条:使用母语写注释
js
// Good 👍🏻
// 666 мс было эмпірычна вылічана на аснове вынікаў UX A/B.
const callbackDebounceRate = 666
// Bad 👎
// 666ms 是根据 UX A/B 测试结果进行经验计算的。
// 具体可查看 xxxxxx
const callbackDebounceRate = 666
第五条:尽可能混合不同的格式
js
// Good 👍🏻
const n = 'Sunday';
const a = "18"
const g = "MAN"
// Bad 👎
const name = 'sunday'
const age = '18'
const gender = 'man'
第六条:尽可能把代码写成一行
js
// Good 👍🏻
document.location.search.replace(/(^\?)/, '').split('&').reduce(function (o, n) { n = n.split('=') })
// Bad 👎
document.location.search
.replace(/(^\?)/, '')
.split('&')
.reduce((searchParams, keyValuePair) => {
keyValuePair = keyValuePair.split('=')
searchParams[keyValuePair[0]] = keyValuePair[1]
return searchParams
})
第七条:发现错误要保持静默
js
// Good 👍🏻
try {
...
} catch () {🤐}
// Bad 👎
try {
...
} catch (error) {
setErrorMessage(error.message)
logError(error)
}
第八条:广泛使用全局变量
js
// Good 👍🏻
let count = 1
function addCount() {
count += 1
}
// Bad 👎
function addCount() {
let count = 1
count += 1
}
第九条:构建备用变量
js
// Good 👍🏻
let count = 1
function addCount() {
count += 1
}
// Bad 👎
function addCount() {
let count = 1
count += 1
}
第十条:Type 使用需谨慎
js
// Good 👍🏻
function sum(a, b) {
return a + b
}
// Bad 👎
function sum(a: number, b: number) {
return a + b
}
第十一条:准备「Plan B」
js
// Good 👍🏻
function square(num) {
if (typeof num === 'undefined') {
return undefined
} else {
return num ** 2
}
return null
}
// Bad 👎
function square(num) {
if (typeof num === 'undefined') {
return undefined
}
return num ** 2
}
第十二条:嵌套的三角法则
js
// Good 👍🏻
function somFun(num) {
if (condition1) {
if (condition2) {
asyncFunction(param, (result) => {
if (result) {
for (; ;) {
if (condition3) {
}
}
}
})
}
}
}
// Bad 👎
async function somFun(num) {
if (!condition1 || !condition2) {
return;
}
const result = await asyncFunction(params);
if (!result) {
return;
}
for (; ;) {
if (condition3) {
}
}
}
第十三条:混合缩进
js
// Good 👍🏻
const f = ['zs'
, 'lisi', 'wangwu']
const d = {
name: 'zs',
age: '18'
}
// Bad 👎
const f = ['zs'
, 'lisi', 'wangwu']
const d = {
name: 'zs',
age: '18'
}
总结
所谓的"烂代码",是大家一定 不要 照着写的哈。
"教你写出令人窒息的"烂代码"" 是一个反义,这个大家肯定是可以明白的哈~~~~。
"烂代码"内容参考自:zhuanlan.zhihu.com/p/516564022