写点什么

专栏:代码之丑——开篇

2010 年 11 月 16 日

我是一个程序员,也是一个咨询师。

成为咨询师之后,我有机会在不同的项目中穿梭。同客户合作的过程中,我经常干的一件事是:code diff,也就是用源码管理工具的 diff 功能把当天全部修改拿出来,从编码的角度来分析代码写得怎么样。

因为这个工作,我看到了许多不同人编写的代码,我的编码底线不断受到挑战。许多东西,我以为是常识,但实际上不为许多人所知。比如,下面这段代码,你会做何感想?

复制代码
if(db.Next()) {
return true;
} else {
return false;
}

有的人会想,怎么写得这么笨啊!但是,请放心,绝对会有人这么想:挺好的,实现功能了。这并非我臆造出的代码,而是源自一个真实的 codebase。

这些代码的存在,给了我很多机会与人分享一些编码的心得。其间,有人建议,为什么不能把你说的这些内容写下来,与更多人分享。于是,有了这个即将看到的系列:《代码之丑》,以此向《代码之美》致敬。

最后要说的是,上面那段代码可以写成这样:

复制代码
return db.Next();

作者简介:

郑晔,ThoughtWorks 公司咨询师,拥有多年企业级软件开发经验,热衷于探索各种程序设计语言在真实软件开发中所能发挥的威力,致力于探寻合理的软件开发方式,加入 ThoughtWorks 公司后,投入到敏捷开发方法的实践之中,为其他公司提供敏捷开发方法方面的咨询服务。他的 blog 是梦想风暴

查看原文:代码之丑(零)

【编者按】:这是 InfoQ 中文站新推出的专栏栏目。专栏旨在邀请国内一线的技术领域专家,定期撰写发表连载专栏,从深度和质量上为国内的技术从业者提供专业性、持续性的知识分享。这个《代码之丑》专栏计划推出系列共十篇,敬请期待后续精彩内容。也欢迎向 InfoQ 中文站推荐专栏作者及内容

2010 年 11 月 16 日 03:007829
用户头像

发布了 22 篇内容, 共 11.8 次阅读, 收获喜欢 37 次。

关注

评论

发布
暂无评论
  • 结对编程 vs. 代码复查

    结对编程、代码复查、鼓励知识共享,这些都可以有助于提升软件质量。当敏捷 vs. 精益, XP vs. Scrum,vi vs. Emacs的争论渐渐消隐,开发人员又开始对结对编程和代码审查的价值所在展开了争论。Theodore Nguyen-Cao在他的文章中将代码复查者比作鸡,结对编程者比作猪。

  • 程序员修炼之路 | 设计能力的提升途径

    一大波程序员在艰辛修炼路上的心声:如何才能快速提升自己的设计能力?

    2019 年 3 月 26 日

  • 「架构师训练营」第 3 周作业

    请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。

    2020 年 11 月 7 日

  • “完成”宣言

    完成宣言 Alixx Skevington贴出一篇“完成宣言”以引发讨论,其中谈到团队成员针对各自的工作质量向彼此做出的承诺,并清晰表明了他们对于使用代码交付业务价值的承诺。覆盖的内容包括编码标准、可用的代码、单元测试和测试覆盖率等,他还强调了高质量工作的重要性。

  • 高效学习:如何学习和阅读代码

    如果想了解思想、方法和原理,读书和读文档会更有效率;如果想知道具体细节,还是应该读代码。

    2018 年 9 月 6 日

  • 结束语 | 不愁明月尽,自有夜珠来

    希望专栏的内容能够起到抛砖引玉的作用,启发和引导你去探索性能优化和容量效率这一领域。

    2020 年 2 月 19 日

  • 新书 |《跃迁:从技术到管理的硅谷路径》

    在专栏结束的第 77 天后,我出了一本书:《跃迁:从技术到管理的硅谷路径》。专栏是这本书的起点,也是书中的一部分。可以说,是专栏促成了这本书的诞生。

    2018 年 4 月 19 日

  • 架构师训练营 Week03 作业 - 手写单例模式

    在草稿纸上手写一个单例模式的实现代码

    2020 年 11 月 8 日

  • 小程序之性能优化

    2018 年 4 月 18 日

  • 总复习 | 重新来“看书”

    今天我站在“看书”的视角,带着你进行一次复习。这些书大多是在我个人成长过程中,给我留下深刻印象的。

    2019 年 4 月 26 日

  • 悄咪咪提高团队幸福感 & Surprise!

    本文的灵感是在几个月以前工作不忙(摸鱼)时想到的,老是自己一个人往前冲冲冲也没啥意思,需要想一点办法,来提高团队的效率,提高团队的幸福感(效率起来了,单位时间内代码写的更多,那不就幸福啦 😜),经过几个月的摸索,总结出了几个小点,如果大家

    2020 年 8 月 13 日

发现更多内容

面向对象设计原则

陈皮

「架构师训练营」第 2周作业

旭东(Frank)

架构 极客大学架构师训练营

听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理

小林coding

面试 计算机网络 计算机基础

Libra教程之:Libra testnet使用指南

程序那些事

比特币 区块链 以太坊 libra blockchain

Libra教程之:运行自定义move modules

程序那些事

比特币 区块链 以太坊 libra blockchain

【架构师训练营】第2周总结

花生无翼

极客大学架构师训练营

架构师训练营-第二周-作业1

狂奔嘀兔纸

极客大学架构师训练营

一款开源的Diffy自动化对比测试框架:超详细实战讲解

狂师

测试 测试驱动开发实战营 自动化测试 开源项目

为什么 Vue 更符合这个时代的大势所趋

Geek_Willie

Vue SpreadJS

程序员开发色情游戏,赴日寻找AV女优真人拍摄,结果...

程序员生活志

程序员 游戏开发

架构师训练营 第二周 总结

Poplar

依赖倒置原则理解

Thrine

Spring源码-自定义标签

云淡风轻

xml spring

学习一下:我的学习之道

非著名程序员

学习 程序人生 提升认知 程序员成长

0616作业2

Geek_10

【架构师第二周】总结

浪浪

「架构师训练营」第2周作业 - 设计原则

guoguo 👻

极客大学架构师训练营

如何高效开会?

石云升

高效工作 时间管理 高效 开会

重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」

小傅哥

设计模式 小傅哥 重构 代码优化

T4P

xujiangniao

Redis系列之扫盲篇(一)

z小赵

Java 分布式 高并发系统设计

架构师训练营第二周总结:软件开发简史和框架设计的方法

hifly

设计模式 极客大学架构师训练营

架构师训练营-week2命题作业

J.Spring

极客大学架构师训练营

BAT面试题汇总:分布式+Dubbo +JVM+微服务+多线程+Spring附答案(建议收藏)

程序员生活志

Java spring 面试 分布式 mybatis

[Redis源码阅读]redis持久化

老胡爱分享

数据库 redis 缓存 持久化

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十二)编写测试-超时

编程道与术

Java 编程 TDD 单元测试 JUnit

Libra教程之:来了,你最爱的Move语言

程序那些事

比特币 区块链 以太坊 libra blockchain

基于 Docker 实现 MySQL 主从复制

ytao

MySQL Dockerfile

第二周总结

changtai

架构师训练营作业 --Week2

吴炳华

极客大学架构师训练营

2020年6月17日 MySQL基准测试

瑞克与莫迪

专栏:代码之丑——开篇-InfoQ