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

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

3天内不再提示

十九条垃圾代码书写准则

Q4MP_gh_c472c21 来源:机器之心 作者:Jack-Cui 2022-05-18 14:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

项目地址:
https://github.com/trekhleb/state-of-the-art-shitcode

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

第一条:打字越少越好

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

b3c40a8e-d661-11ec-bce3-dac502259ad0.png

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

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

b3df8ea8-d661-11ec-bce3-dac502259ad0.png

第三条:不要写注释

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

b3f6656a-d661-11ec-bce3-dac502259ad0.png

第四条:使用母语写注释

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

b41e0d7c-d661-11ec-bce3-dac502259ad0.png

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

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

b4339a66-d661-11ec-bce3-dac502259ad0.png

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

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

b4508f90-d661-11ec-bce3-dac502259ad0.png

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

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

b46f2f40-d661-11ec-bce3-dac502259ad0.png

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

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

b47ff154-d661-11ec-bce3-dac502259ad0.png

第九条:构建备用变量

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

b48ec166-d661-11ec-bce3-dac502259ad0.png

第十条:Type 使用需谨慎

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

b4a8045a-d661-11ec-bce3-dac502259ad0.png

第十一条:准备「Plan B」

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

b4cd01b0-d661-11ec-bce3-dac502259ad0.png

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

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

b4f73ade-d661-11ec-bce3-dac502259ad0.png

第十三条:混合缩进

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

b51160ee-d661-11ec-bce3-dac502259ad0.png

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

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

b52fe67c-d661-11ec-bce3-dac502259ad0.png

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

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

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

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

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

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

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

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

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

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

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

END 审核编辑 :李倩

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

    关注

    30

    文章

    4976

    浏览量

    74358
  • GitHub
    +关注

    关注

    3

    文章

    489

    浏览量

    18758

原文标题:手把手教你写出令人窒息的烂代码

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    家用智能垃圾桶控制板方案设计原理以及设计中需要注意的事项

    智能垃圾桶的核心目标是通过传感器和微控制器,实现自动开盖、垃圾压缩、状态监测、联网通信等功能,从而提升卫生与便利性。 主要功能: 1红外感应开盖:手或物体靠近感应区域(通常15-35cm),桶盖自动
    发表于 03-25 15:36

    红外+按键多模感应!纳祥科技智能感应垃圾桶方案0.5秒极速响应

    传统垃圾桶手动开盖易沾染细菌且操作不便,尤其在厨余垃圾处理场景中,卫生隐患问题较为突出。而随着智能家居的普及,感应式垃圾桶需求激增,其非接触操作更卫生,已广泛渗透到生活的方方面面。基于此,纳祥科技为
    的头像 发表于 02-26 15:29 260次阅读
    红外+按键多模感应!纳祥科技智能感应<b class='flag-5'>垃圾</b>桶方案0.5秒极速响应

    诚迈科技携手应急管理大学、中铁十九局共建智慧应急科技创新研究院

    1月25日,由诚迈科技、应急管理大学、中铁十九局共同组建的智慧应急科技创新研究院(以下简称“研究院”)在应急管理大学南校区正式启动。应急管理大学党委书记赵峰华,中铁十九局党委常委、副总经理赵琦,诚迈
    的头像 发表于 01-27 11:51 687次阅读
    诚迈科技携手应急管理大学、中铁<b class='flag-5'>十九</b>局共建智慧应急科技创新研究院

    ​智能垃圾桶红外和TOF高精度感应方案

    ​         垃圾桶这么一个不起眼的小玩意在智能化以后其实也有大市场,智能垃圾桶的零售端价格从几十元到几百甚至上千元。 传统垃圾桶和智能垃圾桶的区别 传统的
    的头像 发表于 01-07 09:55 367次阅读
    ​智能<b class='flag-5'>垃圾</b>桶红外和TOF高精度感应方案

    工业智能网关赋能餐厨垃圾处理设备远程监控与智慧运维

    行业背景 餐厨垃圾若未能及时妥善处理,不仅会造成影响市容、污染水质、传播疾病等负面影响,还易引发食品安全隐患,危害人体健康。随着城市规模持续扩大与消费水平稳步提升,厨余垃圾产生量日益增多,对餐厨
    的头像 发表于 12-19 10:58 412次阅读
    工业智能网关赋能餐厨<b class='flag-5'>垃圾</b>处理设备远程监控与智慧运维

    【启扬方案】基于RK3576的智能垃圾分类站应用解决方案

    伴随着城市化进程的加速和环境问题的日益凸显,人们对于环境保护的关注度也在不断提高,垃圾分类处理成为社会发展的重要议题。为有效解决垃圾分类和管理的难题,智能垃圾分类站应运而生。智能垃圾
    的头像 发表于 12-04 17:29 1097次阅读
    【启扬方案】基于RK3576的智能<b class='flag-5'>垃圾</b>分类站应用解决方案

    RFID在垃圾分类中的核心优势

    RFID在垃圾分类中的核心优势精准溯源每个居民或单位的垃圾桶配备唯一编码的RFID标签,系统可记录每次投放的时间、地点和责任人,实现垃圾来源可追溯。自动识别分类在智能垃圾箱上安装RFI
    的头像 发表于 09-23 11:08 675次阅读
    RFID在<b class='flag-5'>垃圾</b>分类中的核心优势

    智慧城市物联网解决方案:垃圾中转站监控运维平台

    垃圾中转站是保障城市生活垃圾集中收纳、暂存与转运的核心基础设施,承担着从垃圾收集进场、压缩处理到转运出库的全流程运行职能,其运行过程中的设备运行稳定性、环境污染物控制与垃圾转运效率,直
    的头像 发表于 09-03 15:20 689次阅读
    智慧城市物联网解决方案:<b class='flag-5'>垃圾</b>中转站监控运维平台

    深度解读PCB设计布局准则

    无论您是在进行高速设计,还是正在设计一块高速PCB,良好的电路板设计实践都有助于确保您的设计能够按预期工作并实现批量生产。在本指南中,我们汇总了适用于大多数现代电路板的一些基本PCB设计布局准则
    的头像 发表于 09-01 14:24 7704次阅读
    深度解读PCB设计布局<b class='flag-5'>准则</b>

    声智科技荣获第十九届北京发明创新大赛银奖

    声智科技自主研发的 “声学 - AI 智能交互”项目凭借领先的技术优势与创新应用,在第十九届北京发明创新大赛中荣获银奖。
    的头像 发表于 08-14 16:53 1200次阅读

    广州黄埔城管携手海康威视打造垃圾分类智慧管理系统

    走进广州黄埔社区,"无异味、无污渍、无混投"的垃圾投放点已成为新日常。四色分类垃圾桶整齐摆放,清新空气与整洁环境让居民倍感舒心。
    的头像 发表于 08-06 10:28 1031次阅读

    RFID标签在垃圾分类的应用

    二、RFID标签在垃圾分类中的优势高效率:RFID可以快速批量读取垃圾信息,大幅缩短操作时间,提高垃圾分类效率。准确性:RFID减少了人工操作的错误率,提高了垃圾分类的准确性和可靠性。
    的头像 发表于 07-31 16:48 881次阅读
    RFID标签在<b class='flag-5'>垃圾</b>分类的应用

    施耐德电气推动AI在垃圾焚烧发电领域的应用落地

    清晨六点,上海某垃圾发电厂的中控室大屏突然弹出预警:3号炉火线位置持续走高,有脱料风险。
    的头像 发表于 07-30 09:50 1013次阅读

    餐厨垃圾处理设备数据采集远程监控系统

    餐厨垃圾处理设备通过物理破碎、脱水、油水分离等核心工艺,实现垃圾减量化和资源化处理,从而成为学校、酒店、医院等场景的重要环保设备。
    的头像 发表于 07-05 14:16 554次阅读
    餐厨<b class='flag-5'>垃圾</b>处理设备数据采集远程监控系统

    生活垃圾焚烧发电厂数据采集可视化管理系统

    生活垃圾焚烧发电是通过对燃烧热值较高的垃圾进行高温焚烧,使得在高温焚烧中产生的热能转化为高温蒸汽,进而推动汽轮机并带动发电机发电,是一种污染较小、效益较高的污染治理方式。但同时焚烧发电也会带来废水
    的头像 发表于 06-04 17:13 680次阅读