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

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

相关推荐
web行路人8 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
番茄小酱0019 分钟前
Expo|ReactNative 中实现扫描二维码功能
javascript·react native·react.js
子非鱼92128 分钟前
【Ajax】跨域
javascript·ajax·cors·jsonp
超雄代码狂30 分钟前
ajax关于axios库的运用小案例
前端·javascript·ajax
长弓三石38 分钟前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
小马哥编程40 分钟前
【前端基础】CSS基础
前端·css
嚣张农民1 小时前
推荐3个实用的760°全景框架
前端·vue.js·程序员
周亚鑫1 小时前
vue3 pdf base64转成文件流打开
前端·javascript·pdf
落魄小二1 小时前
el-table 表格索引不展示问题
javascript·vue.js·elementui
y5236481 小时前
Javascript监控元素样式变化
开发语言·javascript·ecmascript