Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 热议话题 › 史上最烂的代码大集合,程序员慎入!

史上最烂的代码大集合,程序员慎入!

Eswlnk的头像
Eswlnk
2022-06-11 20:26:06
史上最烂的代码大集合,程序员慎入!-Eswlnk Blog
智能摘要 AI
GitHub 上有一个名为“State of the Art Shitcode”的项目,旨在教开发者如何写出难以理解的代码。该项目提供19条准则,如使用最少的变量名、混合命名风格、不写注释、使用母语注释、混合不同格式、将代码写成一行、不处理错误、使用全局变量、创建未使用的变量、不指定类型、不执行的代码函数、嵌套条件语句、混合缩进、不锁定依赖项、编写长函数、不测试代码、避免代码风格统一、不写README文档以及保留不必要的代码。这些技巧虽看似荒谬,却能有效增加代码复杂度,给接手者带来困扰。

GitHub上有个额外的项目,主要是传授你怎样写出一个”让人梗塞“的代码。这样在他人接办你的项目代码时,可以充裕恶心一下他。当年我写用C语言抄下第一个课本上的hello world代码时候,加上括号一共五行,能够报出来十几个bug。我感受这是程序对我的第一次劝退。我一直没懂得它的良苦埋头。入行十年,方知,写代码即是一条不归路。

史上最烂的代码大集合,程序员慎入!-Eswlnk Blog

这个项目截止到目前为止,已经有2.5K的星星数。看来很多人都在努力学习,如何写出令人狗血不止的亮眼代码了

史上最烂的代码大集合,程序员慎入!-Eswlnk Blog


该项目一共提供了19个准则,项目地址如下,读者们可以根据自己的实际情况看看自己是否有中招了。
https://github.com/trekhleb/state-of-the-art-shitcode

史上最烂的代码大集合,程序员慎入!-Eswlnk Blog

变量命名越少字越好

如果我们在编写代码的时候输入的东西越少,那么就有越多的时间去思考代码逻辑等问题。其中Good表示写出了好代码。

Good

let a = 42;

Bad

let age = 42;

变量/函数混合命名风格

变量和函数命名时进行混搭,把多种命名法混合在一起,显示自己的学识渊博。

Good

let wWidth = 640;
let w_height =480;

Bad

let windowWidth = 640;

不要写注释

没人看你的注释,为什么要多此一举呢?

Good

const cdr = 700;

Bad

更多时候,评论应该包含一些“为什么”,而不是一些“是什么”。如果“什么”在代码中不清楚,那么代码可能太混乱了。

// 700ms的数量是根据UX A/B测试结果进行经验计算的。
// @查看: <详细解释700的一个链接>
const callbackDebounceRate = 700;

使用母语写注释

如果的一定要写注释,尽量使用母语作为注释,比如可以使用阿拉伯语,法语等作为注释

Good

// Закриваємо модальне віконечко при виникненні помилки
toggleModal(false);

Bad

// 隐藏错误弹窗
toggleModal(false);

尽可能混合不同的格式

混合多种不同的格式,比如可以使用多个双引号,打乱读者的阅读逻辑

Good

let i = ['tomato', 'onion', 'mushrooms'];

let d = [ "ketchup", "mayonnaise" ];

Bad

let ingredients = ['tomato', 'onion', 'mushrooms'];

let dressings = ['ketchup', 'mayonnaise'];

尽可能把代码写成一行

代码有多长写多长,这样能够充分说明你写代码的时候“文思泉涌”

Good

document.location.search.replace(/(^\?)/,'').split('&').reduce(function(o,n){n=n.split('=');o[n[0]]=n[1];return o},{})

Bad

document.location.search
  .replace(/(^\?)/, '')
  .split('&')
  .reduce((searchParams, keyValuePair) => {
    keyValuePair = keyValuePair.split('=');
    searchParams[keyValuePair[0]] = keyValuePair[1];
    return searchParams;
  },
  {}
)

不要处理错误

不需要让别人发现代码的错误,只要没有错误,就没有bug。

Good

try {
  // 意料之外的情况。
} catch (error) {
  // tss...  
}

Bad

try {
  // 意料之外的情况。
} catch (error) {
  setErrorMessage(error.message);
  // and/or
  logError(error);
}

广泛使用全局变量

使用全局变量,让你的代码更加适应全球化

Good

let x = 5;

function square() {
  x = x ** 2;
}

square(); // 现在x是25

Bad

let x = 5;

function square(num) {
  return num ** 2;
}

x = square(x); // 现在x是25

创建你不会使用的变量

多创建几个变量,以防万一你会使用到它,这样的代码才叫做未雨绸缪

Good

function sum(a, b, c) {
  const timeout = 1300;
  const result = a + b;
  return a + b;
}

Bad

function sum(a, b) {
  return a + b;
}

如果语言允许,不要指定类型和/或不执行类型检查。

如果对自己的代码有信心,就不需要去检查变量的类型,这充分说明了你的胸有成竹。

Good

function sum(a, b) {
  return a + b;
}

// 在这里享受没有注释的快乐
const guessWhat = sum([], {}); // -> "[object Object]"
const guessWhatAgain = sum({}, []); // -> 0

Bad

function sum(a: number, b: number): ?number {
  // 当我们在JS中不做置换和/或流类型检查时,覆盖这种情况。
  if (typeof a !== 'number' && typeof b !== 'number') {
    return undefined;
  }
  return a + b;
}

// 这个应该在转换/编译期间失败。
const guessWhat = sum([], {}); // -> undefined

有存在不执行的代码函数

多构造不需要执行的函数,者能充分说明你有多个plan b。

Good

function square(num) {
  if (typeof num === 'undefined') {
    return undefined;
  }
  else {
    return num ** 2;
  }
  return null; // 这就是我的"Plan B".
}

Bad

function square(num) {
  if (typeof num === 'undefined') {
    return undefined;
  }
  return num ** 2;
}

三角法则

多嵌套条件语句,写起来就很顺手

Good

function someFunction() {
  if (condition1) {
    if (condition2) {
      asyncFunction(params, (result) => {
        if (result) {
          for (;;) {
            if (condition3) {
            }
          }
        }
      })
    }
  }
}

Bad

async function someFunction() {
  if (!condition1 || !condition2) {
    return;
  }
  
  const result = await asyncFunction(params);
  if (!result) {
    return;
  }
  
  for (;;) {
    if (condition3) {
    }
  }
}

混合缩进

避免缩进,因为它们会使复杂的代码在编辑器中占用更多的空间。这样代码会变得不简洁

Good

const fruits = ['apple',
  'orange', 'grape', 'pineapple'];
  const toppings = ['syrup', 'cream', 
                    'jam', 
                    'chocolate'];
const desserts = [];
fruits.forEach(fruit => {
toppings.forEach(topping => {
    desserts.push([
fruit,topping]);
    });})

Bad

const fruits = ['apple', 'orange', 'grape', 'pineapple'];
const toppings = ['syrup', 'cream', 'jam', 'chocolate'];
const desserts = [];

fruits.forEach(fruit => {
  toppings.forEach(topping => {
    desserts.push([fruit, topping]); 
  });
})

不要锁住你的依赖项

频繁更新依赖项,为什么坚持使用过去的版本,让我们使用最先进的库版本。

Good

$ ls -la
package.json

Bad

$ ls -la
package.json
package-lock.json

函数长的比短的好

代码写得越长,说明你的逻辑思维能力也越厉害。所以不要把程序逻辑分成可读的部分。

  • 一个文件中10000行代码是OK的。
  • 一个函数体有1000行代码是OK的。

不要测试你的代码

测试你的代码是很愚蠢的动作,说明你对自己的代码没有信心

避免代码风格统一

编写您想要的代码,风格不一定要统一,特别是在一个团队中有多个开发人员的情况下。这是“自由”的味道。

构建新项目不需要 README 文档

不需要readme文档,只需要看代码内容就知道功能了。这样会使得项目更加简洁。

保存不必要的代码

不需要的代码,肯定是需要删除的,不然会占空

本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
互联网代码低代码开发平台程序员编程编程代码学习计算机技术
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
关于《乘风破浪》第四期的看点
上一篇
油价剧烈震荡,上班族该何去何从?
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 小工具开发之EdgeOne免费计划兑换工具
  • 漏洞资讯:Ollama 未授权访问漏洞分析与防护指南
  • 「日志记录」逆向必应翻译网页版API实现免费调用
  • 「渗透分析」如何防范JS注入?nbcio-boot代码审计攻略大公开
  • 「代码分享」第三方平台VIP视频解析API接口
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

「热议话题」即将发布的 WordPress 6.1 预期的功能和变化
2022-09-06 23:34:32
Brave Search 从搜索结果页面中删除了 Bing 的最后残余,实现了 100% 的独立性
2023-04-28 11:28:59
微软修复了影响Bing搜索和新Azure AD漏洞
2023-04-03 12:37:31

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.785 秒   |  SQL查询 57 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈