点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

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

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

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

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

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

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

第一条:打字越少越好

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

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

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

第三条:不要写注释

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

第四条:使用母语写注释

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

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

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

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

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

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

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

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

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

第九条:构建备用变量

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

第十条:Type 使用需谨慎

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

第十一条:准备「Plan B」

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

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

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

第十三条:混合缩进

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

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

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

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

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

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

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

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

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

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

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

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

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

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

关注我,回复“加群”加入微信讨论群

  • 2020 最新 JVM 生态报告

  • 收藏 | 这100+个免费API,免了自己去爬的烦恼!

  • 真实版删库跑路,宕机36小时市值蒸发9亿!

  • Tomcat 曝高危漏洞:可利用读取webapp下任意文件

  • 除了Postman之外,居然还有个Postwoman...

扫一扫,关注我

一起学习,一起进步

朕已阅 

反其道而行:教人写烂代码的开源项目相关推荐

  1. 哈哈哈,这个教人写烂代码的项目在 GitHub 上火了...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 如果说到什么是好代码,我们肯定都能说出一堆规则,例如使用一致的格式 ...

  2. 从教女友写代码中学到的,教人写代码在一定程度上是硬件问题

    从今年四月一直到七月,我在教我女友写代码.我最大的收获是认识到了教人写代码在一定程度上是个硬件问题.虽然 codecademy.可 汗学 院.Scratch 和其他机构为了教学优化了代码编辑器,但代码 ...

  3. 当写烂代码的人离职之后....

    半个月没有写blog了,正好是春节假期. 静下来,想想自己写的代码,真是有些汗颜,更有些惶恐. 加油吧~ 偶尔看到拉勾网上的一篇文章,记录下来,鞭策自己: 作者:蛋疼的AXB 来源:程序人生 休息一直 ...

  4. 写烂代码才是面向人民币编程的精髓

    俗话说得好:代码撸得好,搬砖搬到老.如果你不是程序员里的top 5%精英,高质量的代码与升职加薪,迎娶白富美的相关系数几乎为0,除了给你带来一种虚幻的优越感与满足感. 难道我们这么多年接受的教育是错误 ...

  5. 手把手教你写web全栈入门项目—React+Koa+MongoDB(3w字教程,真的很详细,有代码)

    手把手教你写web全栈入门项目-React+Koa+MongoDB

  6. 哈哈哈,这个教人写出烂代码的项目在 GitHub 上火了...

    如果说到什么是好代码,我们肯定都能说出一堆规则,例如使用一致的格式和缩进.使用清晰的变量名和方法名.在必要时提供文档与注释.不要过度精简代码等等. 但是对于什么是烂代码,你有比较清晰的认识吗? 在 G ...

  7. 为何你一身本领,却还是逃不过写烂代码的命运?

    编写高质量可维护的代码既是程序员的基本修养,也是能决定项目成败的关键因素,本文试图总结出问题项目普遍存在的共性问题并给出相应的解决方案. 1. 程序员的宿命? 程序员的职业生涯中难免遇到烂项目,有些项 ...

  8. 垃圾代码还能出圈?手把手教你写垃圾代码,从入门到精通!

    全世界只有3.14 % 的人关注了 爆炸吧知识 转自:机器之心 参与:思 如果说到什么是好代码,我们肯定都能说出一堆规则,例如使用一致的格式和缩进.使用清晰的变量名和方法名.在必要时提供文档与注释.不 ...

  9. Node.js 单元测试:我要写测试 - Mocha - Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率

    -------------------------------------- 单元测试Express/NodeJs 个人理解, 1,如果不是测试http请求的单元测试,用Mocha, Chai等基本够 ...

最新文章

  1. Java中的隐藏实现细节
  2. java 线程池ThreadPoolExecutor
  3. feedback from waic
  4. VTK:图表之ConnectedComponents
  5. Hotstar赛事直播编码组合优化
  6. 2021 .NET 开发者峰会顺利在网上落幕,线上直播回看汇总
  7. 移动端UC /QQ 浏览器的部分私有Meta 属性
  8. UVALive4983 UVa1593 POJ3959 Alignment of Code【字符串流+输入输出】
  9. 60-300-024-使用-延迟数据-Flink中延时调用设计与实现
  10. 计算机系要考英语口语吗,2015年高考英语口语由计算机“打分”,这些细节要注意!...
  11. 后台userlist.php,后台用户管理(管理员登录后管理会员)
  12. linux下拷贝某一时间段的文件
  13. vim的大小写转换方法总结
  14. Everybody wants to love and be loved
  15. AI未来是什么样子,这些科幻电影里已经有了答案
  16. 【109期分享】4款毕业答辩论文PPT模板免费下载
  17. 安捷伦自动测试软件,安捷伦精干的测试工具
  18. Docker在自动化测试中的实践应用,看了必有提升
  19. ubuntu下bochs的安装和配置
  20. OllyDbg插件编写

热门文章

  1. python3 sys.stdout.write 实时打印刷新
  2. sqlite3.OperationalError: database is locked
  3. ashx和aspx的区别
  4. OD里alt+F9和Ctrl+F9和shift+F9的区别
  5. Android中实现双缓冲(画板应用)和XML文件定义菜单
  6. Linux文件系统基础之inode和dentry
  7. 服务器硬盘坏道修复教程视频,硬盘坏道修复工具 操作教程
  8. 数据结构 图的定义
  9. 基本概念_程序员基本功——链表的基本概念
  10. c语言会出现fullgc,以上述代码为基础,在发生过一次FullGC后,上述代码在He