优秀的代码 vs. 糟糕的代码
http://harttle.com/2015/04/13/elegant-and-bad.html
可持续开发不仅在于项目架构设计,还与代码质量密切相关,代码的整洁度和质量成正比。—— Robert C. Martin, “Clean Code”
如果你还没有发现代码质量的区别,如果你从未见过优秀的代码,或者从未见过糟糕的代码,那么本文将以直观地对比,告诉你代码质量究竟会有多大的区别。
代码量
我们知道代码量显示着功能的复杂程度,例如Windows XP的代码量超过2000万行,Linux内核有1500万行(2012年)。然而代码量和功能数量之间并非线性关系。
优秀的设计中,代码量和功能数的关系是这样的:
糟糕的设计中,代码量和功能数的关系是这样的:
优秀的系统往往会有优秀的结构设计:层次清晰、职责单一、模块化,方便扩展或者复用。功能的添加往往只是在现有框架中添加少量代码。
然而糟糕的设计中,层次混乱、互相耦合、难以阅读,既难以复用又不易扩展。每当被要求添加功能时,不得不几乎完整地实现整个功能的流程,并修复与原系统的所有兼容问题。
注释
优秀的代码中,注释是这样的:
糟糕的代码中,注释是这样的:
最愚蠢的程序员都能写出机器能读懂的代码,而优秀的程序员能写出人可以读懂的代码。
程序的注释是为了让人读得懂。多数优秀的代码中,注释几乎接近代码行数的一半,描述函数功能、解释参数配置、指出陷阱所在。而糟糕的代码中不仅不含这些注释,甚至会保留大量残余代码,可读性差又难以重构。
命名
优秀的代码中,命名是这样的:
糟糕的代码中,命名是这样的:
命名是为了让代码更加容易阅读,使用规范的术语不仅更加易懂,同时也是开发者知识水平和开发经验的表现。如果说以中文拼音命名显得奇怪,那么直接以a
, b
, c
, d
命名的便会显得可恨,谁记得你的a
是神马东西!
冗余
看一个经典的例子,字符串替换:
稍微有点Javascript常识的便会想到正则表达式:
何必拷贝这一堆的代码给老板看呢?开发中确实有很多时候,直接拷贝代码既能立竿见影地完成功能,又不会影响原有功能。但这样的代码多起来之后,万一功能调整你便需要重新debug所有的副本。花一些时间学习更优雅的用法是值得的。
函数
保持函数的短小,使你的代码更加易读,例如:
将复杂的逻辑分步骤完成。如果写在一起将会是这样的:
相信我,一旦你写了这样的函数,它会随着时间的推移变得越来越长,直到有一天,你也忘了其中的一段代码到底是做什么的。
事实上,复杂的函数不仅可以按照步骤划分,更应按照层次来细化。不要在一个函数中进行不同层次的操作,否则它会变得非常难懂。
优秀的代码 vs. 糟糕的代码相关推荐
- 这么糟糕的代码,真的是我以前写的吗?
GitChat 作者:Zm 原文:日常开发与设计模式的那点事 关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 前言 "很多程序员不知道怎么组织代码.怎么提升效率.怎么提高代码 ...
- 怎样处理糟糕的代码?
在职业生涯中,程序员难免会遇到糟糕的代码(bad code)--但是你并不需要成为一个打败这些糟糕代码的"恶人". 从轻松的角度来讲,糟糕的代码可以创造大量的就业机会.比如: 需要 ...
- 五种糟糕的代码实践,程序员注意避坑
本文将向你展示五种糟糕的代码实践,它们足以让所有程序员深恶痛绝. 1将变量命名变成解谜游戏 图译:parseDBMXML 代指什么:A.解析 DBM XML .B.解析 DB MXML.C.解析 DB ...
- 这五种糟糕的代码实践,程序员要学会规避
点击上方"程序猿技术大咖",关注并选择"设为星标" 回复"加群"获取入群讨论资格! 作者丨Marcin Gajda 译者丨马可薇 策划 | ...
- [转]为什么程序员总是写糟糕的代码?这3个原因
原文请看:为什么程序员总是写糟糕的代码?这3个原因 我最近一直在想我们作为一个行业为什么总是产出糟糕代码的原因. 1.明显原因-- 我一下子想到的最明显的原因是,有好的程序员,也有不那么好的程序员,有 ...
- 优秀程序员眼中的整洁代码
点击上方蓝字关注公众号 码个蛋第274次推文 看看大神们怎么说 作者:风铃无声江舟听雨 博客:https://www.jianshu.com/u/b525437c0777 有多少程序员,就有多少定义. ...
- python猜数字代码_python猜数代码
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 ...
- Lombok!代码简洁神器还是代码“亚健康”元凶?
以下文章来源方志朋的博客,回复"666"获面试宝典 关于Lombok,DD是一个重度用户,从我编写的Spring Boot教程还是Spring Cloud教程中,都可以看到几乎每个 ...
- 天天写业务代码?写业务代码中的成长机会!
写业务代码有成长机会吗?关于这个问题,答案非常肯定:必须有成长机会.对于大部分公司而言,能够写底层代码或者中间件代码的人总是有限的,写业务代码会面临更高的复杂度. 这里分三个层次来看其中的成长机会. ...
最新文章
- 计算机科学经典论文(zz)
- camera理论基础和工作原理【转】
- [译]解密Airbnb的数据科学部门如何使用R语言
- 今年美国广告程序化购买支出将超252亿美元
- centos7 xampp启动mysql数据库_mysql主从配置,用win xampp和centos7环境下测试
- PHP Token(令牌)设计
- 自建比赛服务器,《三国杀》怎么自己创建比赛?自建赛事规则介绍
- 做一个vue的todolist列表
- cloud源码-Ribbon
- Linux平台下裸设备的绑定:
- android Broadcast广播消息代码实现
- spring - ioc和aop
- a标签增加onclick事件提示未定义function
- 自学-Linux-老男孩Linux77期-day5
- 网络监控解决方案及拓扑图
- java基础简答题1
- MySQL之查询关键字
- Jzoj5444【NOIP2017提高A组冲刺11.2】救赎
- JAVA基础——对象与引用概念(转载)
- mah和mwh的关系?