0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

垃圾代码应该怎么写

strongerHuang 来源: strongerHuang 作者: strongerHuang 2021-01-18 11:08 次阅读

在 GitHub 上有一个新项目,它描述了「最佳垃圾代码」的十九条关键准则。从变量命名到注释编写。这些准则将指导你写出最亮眼的烂代码。

为了保持与原 GitHub 项目一致的风格,下文没有进行转换。读者们可以以相反的角度来理解所有观点,这样就能完美避免写出垃圾代码。

当然,以下十九条垃圾代码书写准则并没有面面俱到,如果读者们发现有一些难以忍受的烂代码习惯,也可以留言发表你的看法。

这是一个你的项目应该遵循的垃圾代码书写准则的列表:

以一种代码已经被混淆的方式命名变量

如果我们键入的东西越少,那么就有越多的时间去思考代码逻辑等问题。

变量/函数混合命名风格

为不同庆祝一下。

Good

letwWidth=640;letw_height=480;

Bad

letwindowWidth=640;letwindowHeight=480;

不要写注释

反正没人会读你的代码。

Good

constcdr=700;

Bad

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

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

使用母语写注释

如果您违反了“无注释”原则,那么至少尝试用一种不同于您用来编写代码的语言来编写注释。如果你的母语是英语,你可能会违反这个原则。

Good

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

Bad

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

尽可能混合不同的格式

为不同庆祝一下。

Good

leti=['tomato','onion','mushrooms'];letd=["ketchup","mayonnaise"];

Bad

letingredients=['tomato','onion','mushrooms'];letdressings=['ketchup','mayonnaise'];

尽可能把代码写成一行

Good

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

Bad

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

不要处理错误

无论何时发现错误,都没有必要让任何人知道它。没有日志,没有错误弹框。

Good

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

Bad

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

广泛使用全局变量

全球化的原则。

Good

letx=5;functionsquare() { x=x **2; }square();// 现在x是25

Bad

letx=5;functionsquare(num) {returnnum **2; } x=square(x);// 现在x是25

创建你不会使用的变量

以防万一。

Good

functionsum(a, b, c) {consttimeout=1300;constresult=a+b;returna+b; }

Bad

functionsum(a, b) {returna+b; }

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

Good

functionsum(a, b) {returna+b; }// 在这里享受没有注释的快乐constguessWhat=sum([], {});// -> "[object Object]"constguessWhatAgain=sum({}, []);// -> 0

Bad

functionsum(a: number, b: number): ?number {// 当我们在JS中不做置换和/或流类型检查时,覆盖这种情况。if(typeofa !=='number'&&typeofb !=='number') {returnundefined; }returna+b; }// 这个应该在转换/编译期间失败。constguessWhat=sum([], {});// -> undefined

你应该有不能到达的代码

这是你的 “Plan B”.

Good

functionsquare(num) {if(typeofnum==='undefined') {returnundefined; }else{returnnum **2; }returnnull;// 这就是我的"Plan B".}

Bad

functionsquare(num) {if(typeofnum==='undefined') {returnundefined; }returnnum **2; }

三角法则

就像鸟巢,鸟巢,鸟巢。

Good

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

Bad

asyncfunctionsomeFunction() {if(!condition1||!condition2) {return; }constresult=awaitasyncFunction(params);if(!result) {return; }for(;;) {if(condition3) { } } }

混合缩进

避免缩进,因为它们会使复杂的代码在编辑器中占用更多的空间。如果你不喜欢回避他们,那就和他们捣乱。

Good

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

Bad

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

不要锁住你的依赖项

以非受控方式更新每个新安装的依赖项。为什么坚持使用过去的版本,让我们使用最先进的库版本。

Good

$ ls -la package.json

Bad

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

函数长的比短的好

不要把程序逻辑分成可读的部分。如果IDE的搜索停止,而您无法找到所需的文件或函数,该怎么办?

一个文件中10000行代码是OK的。

一个函数体有1000行代码是OK的。

在一个‘ service.js ’ 中处理许多服务(第三方库和内部库、一些工具、手写的数据库ORM和jQuery滑块)? 这是OK的。

不要测试你的代码

这是重复且不需要的工作。

避免代码风格统一

编写您想要的代码,特别是在一个团队中有多个开发人员的情况下。这是“自由”原则。

构建新项目不需要 README 文档

一开始我们就应该保持。

保存不必要的代码

不要删除不用的代码,最多注释掉。

责任编辑:xj

原文标题:GitHub这份垃圾代码书写准则,火了

文章出处:【微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4637

    浏览量

    67608
  • GitHub
    +关注

    关注

    3

    文章

    461

    浏览量

    16153

原文标题:GitHub这份垃圾代码书写准则,火了

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FlexLua低代码零基础开发智能垃圾桶产品原型(接入机智云)

    目标功能介绍基于功能强大的ShineBlink低 代码物联网核心模组和灵活轻巧的Lua脚本编程语言实现如下功能。1、监测和报警监测圾桶内的烟雾并声光报警监测圾桶内的酒精等有害气体并声光报警监测 垃圾桶内
    的头像 发表于07-11 08:11 1223次阅读
    FlexLua低<b class='flag-5'>代码</b>零基础开发智能<b class='flag-5'>垃圾</b>桶产品原型(接入机智云)

    基于PYNQ的智能垃圾分类系统

    第一部分 设计概述 /Design Introduction 1.1 设计目的 随着现代社会的高速发展,其带来的环境压力也越来越大,对于日益剧增的 垃圾产量已经成为世界关注的焦点。 垃圾分类成为
    发表于07-09 18:44

    UART传输在控制台中显示垃圾值是哪里的问题?

    的控制台窗口上显示的不是"Hello World" ,而是 垃圾字符。 我检查了流程,发现与示例 代码相似,如波特率设置正确,缓冲区流程也正确。 错误还可能出现在哪里?
    发表于07-02 08:24

    垃圾清运以及垃圾处理“神器”让垃圾清运更高效。

    随着城市功能的不断丰富,城市管理工作也从粗放到精细、从纯人工管理到数字化应用逐渐转变。近日,某小区 垃圾满溢监测“神器”上线,能够实时监控区内果皮箱的数量、位置、 垃圾量情况,让 垃圾清运更高
    的头像 发表于05-13 09:37 188次阅读
    <b class='flag-5'>垃圾</b>清运以及<b class='flag-5'>垃圾</b>处理“神器”让<b class='flag-5'>垃圾</b>清运更高效。

    如何提升代码质量与效率的秘诀

    提高编程能力其实没有捷径,最佳方式就是多 代码。 不过,除了 大量 代码,提升编程能力还需要大量阅读别人
    的头像 发表于04-28 14:53 258次阅读
    如何提升<b class='flag-5'>代码</b>质量与效率的秘诀

    阿里云内部全面推行AI代码

    阿里云正在内部全面推行 AI 编程,使用通义灵码辅助程序员 代码、读 代码、查 BUG、优化 代码等。
    的头像 发表于04-07 09:22 432次阅读

    AI垃圾溢出识别摄像机

    随着城市化进程的加快, 垃圾处理成为城市管理中的一项重要工作。然而, 垃圾桶溢出现象经常发生,给城市环境卫生和市民生活带来不便。为了解决这一问题,AI 垃圾溢出识别摄像机应运而生,利用人工智能技术,实现
    的头像 发表于03-13 11:04 319次阅读
    AI<b class='flag-5'>垃圾</b>溢出识别摄像机

    如何使用Arduino制作智能垃圾

    在这个项目中,我将向您展示如何使用Arduino制作智能 垃圾箱,当您带着 垃圾接近时, 垃圾箱的盖子会自动打开。
    的头像 发表于02-11 12:22 2284次阅读
    如何使用Arduino制作智能<b class='flag-5'>垃圾</b>箱

    代码即注释,注释即代码的概念是如何形成的

    " 代码即注释,注释即 代码"这个概念是如何形成的呢?记得之前看一些讨论,程序员 应该如何 代码的注释,大家的意见很多,不过我只对两句话记忆非常深
    的头像 发表于11-18 16:52 572次阅读
    <b class='flag-5'>代码</b>即注释,注释即<b class='flag-5'>代码</b>的概念是如何形成的

    3个IO控制16个按键扫描方式应该怎么代码

    3个IO控制16个按键扫描方式 应该怎么 代码
    发表于10-27 06:54

    来看看他们用代码的“三行诗”

    往期精选 原文标题:来看看他们用 代码 的“三行诗” 文章出处:【微信公众号:宏景智驾】欢迎添加关注!文章转载请注明出处。
    的头像 发表于10-25 15:55 240次阅读
    来看看他们用<b class='flag-5'>代码</b><b class='flag-5'>写</b>的“三行诗”

    STM32智能垃圾桶自动识别各类垃圾概述

    离线语音识别识别 垃圾种类并且 垃圾桶自动翻盖:** 说出唤醒词“ 垃圾桶”后,再说一句 垃圾名称,语音识别模块端识别到相应关键词
    的头像 发表于10-25 09:58 1140次阅读
    STM32智能<b class='flag-5'>垃圾</b>桶自动识别各类<b class='flag-5'>垃圾</b>概述

    如何选择垃圾收集器

    1、 垃圾收集器种类 事实上Java虚拟机规范对 垃圾收集器 应该如何实现,并没有任何的规定,所以不同的厂商、不同版本的虚拟机所提供的 垃圾收集器都会有所不同,并且一般都会提供参数供用户根据自
    的头像 发表于10-09 16:48 534次阅读
    如何选择<b class='flag-5'>垃圾</b>收集器

    VR环保教育 | 全民垃圾分类虚拟仿真互动体验,游戏化场景轻松学会垃圾分类

    在我们的日常生活中, 垃圾分类已成为一项重要的公民责任。然而,由于缺乏对 垃圾分类的深入理解和相关知识,许多人在实践中往往感到困惑和挫败。为了解决这个问题,一种创新的解决方案应运而生:全民 垃圾分类虚拟
    的头像 发表于08-28 15:41 715次阅读
    VR环保教育 | 全民<b class='flag-5'>垃圾</b>分类虚拟仿真互动体验,游戏化场景轻松学会<b class='flag-5'>垃圾</b>分类

    用了Stream后,代码反而越越丑?

    在Java中,同样的功能, 代码行数 的少了,并不见得你的 代码就好。由于Java使用;作为 代码行的分割,如果你喜欢的话,甚至可以将整个Java文件搞成一行,就像是混淆后的JavaScri
    的头像 发表于08-23 15:08 356次阅读