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

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

3天内不再提示

这19种垃圾代码千万不要写!

工程师 来源:机器之心 作者:机器之心 2020-09-11 10:47 次阅读

来源:机器之心

「代码写得好」是对机器学习研究者及开发者最好的赞扬。其第一层意思是说,你的模型非常好,有自己的理解与修正;第二层意思是说代码的结构、命名规则、编写逻辑都非常优秀。

我们曾经将写代码比喻成写文章:不仅需要有一个主旨,告诉别人代码的作用是什么,同时还应该在精炼与易读之间做权衡。代码过于精炼,整体逻辑难以跟随,代码过于易读,整体就显得比较臃肿。

在精简与易读之间做权衡,第一种方法根据列表推导式能获得更精简的代码,但第二种方法更易读。

如果说到什么是好代码,我们肯定都能说出一堆规则,例如使用一致的格式和缩进、使用清晰的变量名和方法名、在必要时提供文档与注释、不要过度精简代码等等。

但是对于什么是烂代码,你有比较清晰的认识吗?

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

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

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

第一条:打字越少越好

如果我们键入的东西越少,那么就有越多的时间去思考代码逻辑等问题。如下所示,「Good」表示遵循该规则的示例,Bad 表示没遵循该规则的示例。

第二条:变量/函数混合命名风格

我们需要混合命名方法与变量,这样才能体现命名的多样性。

第三条:不要写注释

反正代码都看得懂,为什么要写注释?或者说,反正没人看我的代码,为什么要写注释?

第四条:使用母语写注释

如果你违反了第三条规则,那么至少写注释需要用你的母语或者其它语言。如果你的母语是英语,那么你也算违反了这条规则。既然编程语言绝大多数都是用英文,那么为什么不用其它语言注释一下?

第五条:尽可能混合不同的格式

同样,为了代码的多样性,我们需要尽可能混合不同的格式,例如单引号或双引号。如果它们的语义相同,那就应该混用。

第六条:尽可能把代码写成一行

如果一系列参数与方法都是一起实现的,那么代码也要写在一起。

第七条:发现错误要保持静默

当你发现某些错误时,其他人不需要了解它,因此不需要打印出日志或 Traceback。

第八条:广泛使用全局变量

使用全局变量,是面向「全球化」不可或缺的部分。

第九条:构建备用变量

以防万一,我们需要创建一些备用变量,在需要时随时调用它们。

第十条:Type 使用需谨慎

一般不要指定变量类型或者经常做类型检查,无类型才是最好的类型。

第十一条:准备「Plan B」

你需要准备一些运行不到的代码(unreachable code),它们可以作为你的「Plan B」。

第十二条:嵌套的三角法则

如果代码有一些嵌套结构,或者说缩进空行的结构,三角法则是最漂亮的。

第十三条:混合缩进

我们需要避免采用缩进,因为缩进会使复杂代码在编辑器中占用更多的空间。如果一定要采用缩进,那么就使用混合缩进策略。当然,这种策略在 Python 中是行不通的,因为它靠缩进来确定代码结构。

第十四条:不要锁住依赖项

每一次要安装新库时,更新已有的依赖项。为什么要维持之前的版本呢,我们需要时刻保持最新的第三方代码库。

第十五条:长函数比短函数好

不要将程序整体逻辑分割为一些代码块,要是 IDE 突然不行了,它找不到必要的文件或函数怎么办。因此把代码写在一个主体函数中,并且不再维护额外的函数导入或代码文件,那么这样的方法是最稳定的。

单个文件一万行代码是没问题的,单个函数一千行代码也是没问题的。

第十六条:代码不需要做特定测试

这些测试通常是重复且无意义的工作。

第十七条:尽量避免重复代码

按你的想法写代码,尤其是在小团队中,毕竟这是「自由」准则。

第十八条:构建新项目不需要 README 文档

在项目前期,我们可以暂时保持这种状态。

第十九条:保存不必要的代码

在写代码的过程中,经常会产生很多测试代码。这些代码也是非常重要的资料,因此不能删除掉,最多只能注释掉。

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

    关注

    88

    文章

    3591

    浏览量

    93588
  • 源代码
    +关注

    关注

    96

    文章

    2944

    浏览量

    66663
收藏 人收藏

    评论

    相关推荐

    合宙Air201定位模组,千万不要忘记设置这个......

    合宙Air201定位模组,千万不要忘记设置这个:AT+WIFILOC设置wifi定位优先
    的头像 发表于 08-09 18:01 1359次阅读
    合宙Air201定位模组,<b class='flag-5'>千万</b><b class='flag-5'>不要</b>忘记设置这个......

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

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

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

    节省了人力、物力,降低垃圾分类的烦恼,具有长远的利用价值和非常巨大的市场前景。该作品有两操作模式,可在图像识别和语音识别两模式之间自由切换。 1.2 应用领域 本作品应用前景广泛,智能识别自动分类系统实现
    发表于 07-09 18:44

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

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

    基于Vision Board上的openMV垃圾分类

    通过在Vision Board部署openMV实现垃圾分类。
    的头像 发表于 06-17 10:49 576次阅读
    基于Vision Board上的openMV<b class='flag-5'>垃圾</b>分类

    智能垃圾回收箱功能实验

    需要系统地介绍智能垃圾回收箱软件硬件设计完成后的设备运行状况,包括正常工作和问题调试。同时,也要描述当所有设备正常工作时智能垃圾回收箱的操作流程。01硬件模块的试验在智能垃圾回收箱的正常运转
    的头像 发表于 05-24 08:10 412次阅读
    智能<b class='flag-5'>垃圾</b>回收箱功能实验

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

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

    智能垃圾回收箱控制系统硬件设计

    智能高效远程控制智能垃圾桶回收箱控制系统硬件部分的选型与设计是整个产品的基础,所有功能的实现都要围绕其进行开发。本章对智能垃圾回收箱控制系统的硬件进行详细设计。智能垃圾回收箱运行时,通过扫描模块进行
    的头像 发表于 04-13 08:10 776次阅读
    智能<b class='flag-5'>垃圾</b>回收箱控制系统硬件设计

    OpenHarmony南向开发案例:【智能垃圾桶】

    智能垃圾桶可以通过数字管家应用来监测垃圾桶当前可用容量,提醒主人及时处理垃圾;通过日程管家可以实现和其他智能设备联动。
    的头像 发表于 04-11 16:01 491次阅读
    OpenHarmony南向开发案例:【智能<b class='flag-5'>垃圾</b>桶】

    智能垃圾回收箱控制系统硬件设计-机智云

    控制系统硬件部分的选型与设计是整个产品的基础,所有功能的实现都要围绕其进行开发。本章对智能垃圾回收箱控制系统的硬件进行详细设计。 智能垃圾回收箱硬件总体设计 智能垃圾回收箱控制系统结构框图 智能
    发表于 04-09 17:37

    基于机智云物联网平台的智能垃圾回收箱与控制系统研究

    将设备的信息自动保存并上传。 智能垃圾回收箱机械结构方案 总体结构设计 智能垃圾回收箱的主要回收目标是纸张、金属、塑料、织物四可回收物,因此回收箱箱体分为四个部分,针对每一可回
    发表于 04-09 17:25

    瑞萨推出智能垃圾箱解决方案

    随着城市化进程的加速推进,城市垃圾处理问题愈发凸显。传统的垃圾收集方式不仅效率低下,成本高昂,而且往往伴随着严重的环境污染问题。在这一背景下,瑞萨推出的智能垃圾箱解决方案以其环保、高效的特性,为城市
    的头像 发表于 03-16 10:02 925次阅读

    AI垃圾溢出识别摄像机

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

    如何使用Arduino制作智能垃圾

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

    餐厨垃圾设备智能监控运维系统解决方案

    在当今社会,随着科技的不断进步,人们对于环保和资源利用的意识也在不断提高,其中餐厨垃圾的处理回收受到人们的广泛关注。它是一专门用于处理餐厨垃圾的设备,通过对垃圾进行分类、破碎、脱水等
    的头像 发表于 01-09 16:32 440次阅读