语雀又崩了?今天咱们玩点花的,手把手教你写出令人窒息的“烂代码”

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

相关推荐
一丝晨光24 分钟前
C++、Ruby和JavaScript
java·开发语言·javascript·c++·python·c·ruby
Front思26 分钟前
vue使用高德地图
javascript·vue.js·ecmascript
zqx_71 小时前
随记 前端框架React的初步认识
前端·react.js·前端框架
惜.己1 小时前
javaScript基础(8个案例+代码+效果图)
开发语言·前端·javascript·vscode·css3·html5
什么鬼昵称2 小时前
Pikachu-csrf-CSRF(get)
前端·csrf
长天一色2 小时前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
NiNg_1_2342 小时前
npm、yarn、pnpm之间的区别
前端·npm·node.js
秋殇与星河2 小时前
CSS总结
前端·css
NiNg_1_2342 小时前
Vue3 Pinia持久化存储
开发语言·javascript·ecmascript
读心悦2 小时前
如何在 Axios 中封装事件中心EventEmitter
javascript·http