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

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

3天内不再提示

烂代码你能忍吗?优秀的代码VS糟糕的代码

C语言编程基础 来源:未知 作者:伍文辉 2018-03-30 10:09 次阅读

可持续开发不仅在于项目架构设计,还与代码质量密切相关,代码的整洁度和质量成正比。—— Robert C. Martin, “Clean Code”

如果你还没有发现代码质量的区别,如果你从未见过优秀的代码,或者从未见过糟糕的代码,那么本文将以直观地对比,告诉你代码质量究竟会有多大的区别。

[ 代码量 ]

我们知道代码量显示着功能的复杂程度,例如Windows XP的代码量超过2000万行,Linux内核有1500万行(2012年)。然而代码量和功能数量之间并非线性关系。

优秀的设计中,代码量和功能数的关系是这样的:

糟糕的设计中,代码量和功能数的关系是这样的:

优秀的系统往往会有优秀的结构设计:层次清晰、职责单一、模块化,方便扩展或者复用。功能的添加往往只是在现有框架中添加少量代码。

然而糟糕的设计中,层次混乱、互相耦合、难以阅读,既难以复用又不易扩展。每当被要求添加功能时,不得不几乎完整地实现整个功能的流程,并修复与原系统的所有兼容问题。

[ 注释]

优秀的代码中,注释是这样的:

糟糕的代码中,注释是这样的:

最愚蠢的程序员都能写出机器能读懂的代码,而优秀的程序员能写出人可以读懂的代码。

程序的注释是为了让人读得懂。多数优秀的代码中,注释几乎接近代码行数的一半,描述函数功能、解释参数配置、指出陷阱所在。而糟糕的代码中不仅不含这些注释,甚至会保留大量残余代码,可读性差又难以重构。

[ 命名]

优秀的代码中,命名是这样的:

糟糕的代码中,命名是这样的:

命名是为了让代码更加容易阅读,使用规范的术语不仅更加易懂,同时也是开发者知识水平和开发经验的表现。如果说以中文拼音命名显得奇怪,那么直接以a, b, c, d命名的便会显得可恨,谁记得你的a是神马东西!

看一个经典的例子,字符串替换:

稍微有点Javascript常识的便会想到正则表达式:

何必拷贝这一堆的代码给老板看呢?开发中确实有很多时候,直接拷贝代码既能立竿见影地完成功能,又不会影响原有功能。但这样的代码多起来之后,万一功能调整你便需要重新debug所有的副本。花一些时间学习更优雅的用法是值得的。

[ 函数 ]

保持函数的短小,使你的代码更加易读,例如:

将复杂的逻辑分步骤完成。如果写在一起将会是这样的:

相信我,一旦你写了这样的函数,它会随着时间的推移变得越来越长,直到有一天,你也忘了其中的一段代码到底是做什么的。

事实上,复杂的函数不仅可以按照步骤划分,更应按照层次来细化。不要在一个函数中进行不同层次的操作,否则它会变得非常难懂。

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

    关注

    30

    文章

    4774

    浏览量

    68502
  • 程序员
    +关注

    关注

    4

    文章

    951

    浏览量

    29791

原文标题:没有对比就没有伤害,优秀的代码VS糟糕的代码

文章出处:【微信号:xx-cyy,微信公众号:C语言编程基础】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GPIO如何只更新通知代码而不是替换旧代码吗?

    大家好,当我尝试更改 GPIO 通知时遇到问题,然后我按下“生成代码”。但它取代了我的旧代码告诉我如何只更新通知代码而不是替换旧
    发表于 01-31 07:44

    参考代码--俄罗斯游戏代码

    使用C语言编程的参考代码--俄罗斯游戏代码
    发表于 05-20 17:01 14次下载

    的 Python 代码优雅又地道

    vs NP (pythonic vs non-pythonic)的讨论。pythonic的代码简练,明确,优雅,绝大部分时候执行效率高。阅读pythonic的代码
    的头像 发表于 03-06 10:35 3615次阅读

    如何编写无法维护的代码代码没有重构的风险

    自己弄个铁饭碗,因为除了之外,没人维护写的代码。再而且,如果练就秘籍中的全部招式,那么
    的头像 发表于 04-29 19:11 2594次阅读

    什么是低代码

    传统的软件开发方式需要漫长的时间才能完成应用程序的开发工作,这容易造成应用程序开发任务的堆积。为了提高应用程序的开发速度,现在出现了一种低代码开发平台。知道什么是低代码开发吗?知道
    发表于 05-09 15:26 1971次阅读

    垃圾代码应该怎么写

    在 GitHub 上有一个新项目,它描述了「最佳垃圾代码」的十九条关键准则。从变量命名到注释编写。这些准则将指导写出最亮眼的代码。 为了保持与原 GitHub 项目一致的风格,下文
    的头像 发表于 01-18 11:08 1992次阅读

    TouchGFX代码框架以及如何添加用户代码

    和View之间的桥梁,View负责显示,Model负责交互,这三大类撑起了TouchGFX的天空,可以再里面任意翱翔。 清除了MVP结构后,对代码
    的头像 发表于 01-18 11:28 2657次阅读
    TouchGFX<b class='flag-5'>代码</b>框架以及如何添加用户<b class='flag-5'>代码</b>

    九个单片机仿真优秀案例及源代码

    九个单片机仿真优秀案例及源代码
    发表于 03-17 09:13 161次下载
    九个单片机仿真<b class='flag-5'>优秀</b>案例及源<b class='flag-5'>代码</b>

    为什么有时候会写出代码

    本文的内容是最近我刚刚遇到的一个问题,问题代码是我自己写的,也是我自己写单元测试的时候发现的,也是我自己修复的,修复完之后,我反思了一下:这样的问题代码,我实习的时候都写不出来。 可是为什么我
    的头像 发表于 08-27 10:23 1352次阅读
    为什么有时候会写出<b class='flag-5'>烂</b><b class='flag-5'>代码</b>

    快速找到代码运行最慢部分的编程神器

    天下武功,唯快不破。 编程也不例外,代码跑的快,快速找出代码慢的原因,的码功就高。 今
    的头像 发表于 10-13 16:40 1584次阅读

    微软最新写代码神器代码之旅

    【导语】:CodeTour(代码之旅)是微软官方开发的 VS Code 扩展,允许记录和回放代码的演练和思路。 简介 CodeTour 是一个 VS Code 插件,允许记录和回放
    的头像 发表于 10-26 10:00 1691次阅读

    VS上配置MPI教程(含代码

    VS上配置MPI教程(含代码
    发表于 01-17 11:24 1次下载

    什么是整洁的代码

    WTF/min是衡量代码质量的唯一标准,Uncle Bob在书中称糟糕代码为沼泽(wading),这只突出了我们是糟糕代码的受害者。国内有
    的头像 发表于 01-30 10:45 509次阅读

    静态代码块、构造代码块、构造函数及普通代码块的执行顺序

    在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家彻底了解它们之间的执行顺序。 1、静态
    的头像 发表于 10-09 15:40 1309次阅读
    静态<b class='flag-5'>代码</b>块、构造<b class='flag-5'>代码</b>块、构造函数及普通<b class='flag-5'>代码</b>块的执行顺序

    vs中如何快速注释多行代码

    VS中,快速注释多行代码可以通过以下几种方法实现。我将详细介绍每种方法的步骤和应用场景。 方法一:块注释 块注释是一种常见的注释多行代码的方法。它适用于需要注释大块代码的情况,可以方
    的头像 发表于 11-22 10:26 1.6w次阅读