QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

代码之丑(八)——不一致的困惑

  • 2010-12-12
  • 本文字数:841 字

    阅读完需:约 3 分钟

下面是一段代码,出现在一个函数里面:

复制代码
XString groupid;
getGroupidByTel(tel, groupid);
YString sql;
sql.SetData("select subsid from subscriber b");

如果你没有注意到问题,我稍微提醒一下,这里用到了两个字符串类型。

这确实是一段真实的代码,于是,我找到了项目组中的人,询问两个字符串的来历。终于,一个颇有资历的人给了我一个答案。

项目之初,有人编写了 XString,用了一段时间之后,在某些特定的场景下,XString 会出问题,于是,又有英雄出现,编写了 YString。从此,XString 和 YString 并立于江湖。

其实,我想搞清楚的只是一个问题,什么时候该用哪个类。

可是,我把这个问题抛给了不只一个人,却没有人能给我一个确定性的答案。好吧!当时,编写 YString 的动机是 XString 出了问题,那问题是什么呢?我看到的依旧是困惑的面孔。

XString 和 YString 让我不安,原因在于,它们的并存破坏了概念一致性。一旦要写一段用到字符串的代码,我会纠结于到底该用 XString 还是 YString。有时候,没有选择是幸福的。对于大规模团队而言,尤其如此。

最简单的做法自然是,选择其一,一统江湖。方法很简单,做一次全局替换就好了。

不过,理性告诉我,这是冲动的做法,特别是没有人对两个字符串有足够清晰认识的情况下。在一个叫现实的东西面前,我不得不低下头,改动遗留代码风险极大,况且没有足够的测试支撑我们。

但我们至少可以在编写的新代码中做出统一的要求,选择一条路走下去,而不是放任所有开发人员根据自己的脾气秉性、喜怒哀乐,甚至天气,随机的做出选择。

好吧!我可以再退一步,如果在全系统统一确实是一件困难的事情,但至少,至少在一个函数内别再混用不同的字符串了。

作者简介:

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

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

2010-12-12 23:353800
用户头像

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

关注

评论

发布
暂无评论
发现更多内容

倒计时 2 天|请收好 Kyligence 用户大会参会指南

Kyligence

数据分析 指标平台

AIGC 对程序员的影响 | 社区征文

sidiot

AI AIGC 年中技术盘点

从0到100:定制公交预约小程序开发笔记

CC同学

PyTorch: nn网络层-卷积层

timerring

PyTorch

C++中map的使用方法

芯动大师

阿里云容蓓:DCDN 助力云原生时代的应用构建及最佳实践

阿里云CloudImagine

云计算 阿里云

2023-07-12:RocketMQ如何做到消息不丢失?

福大大架构师每日一题

福大大架构师每日一题

go 实现ringbuffer以及ringbuffer使用场景介绍

蓝胖子的编程梦

TCP 网络 epoll ringbuffer 环形缓冲区

你信不信,只要学几天javascript就可以使用纯原生实现五星评分效果 【附完整代码】

Geek_yx5md7

JavaScript 前端开发 函数 前端基础 DOM操作

代码随想录 Day14 - 二叉树(一)

jjn0703

代码随想录 Day15 - 二叉树(二)

jjn0703

OCR技术的昨天今天和明天!2023年最全OCR技术指南!

合合技术团队

人工智能 合合信息 OCR技术

百度iOS端长连接组件建设及应用实践

百度Geek说

网络编程 移动端 即时通讯IM 长连接 企业号 7 月 PK 榜

低代码为运营需求发力 | 社区征文

--linshuai

前端 低代码 年中技术盘点

没收入是表象,UMU CEO李东朔的出海经验:第一年破100国家

B Impact

阿里云Redis与Tair压力测评

WizInfo

机器学习洞察 | 挖掘多模态数据机器学习的价值

亚马逊云科技 (Amazon Web Services)

机器学习

从0到1:垃圾上门回收预约小程序开发笔记

CC同学

从0-100:约拍小程序开发笔记

CC同学

华为云CodeArts Check代码检查插件3大版本使用指南

华为云PaaS服务小智

华为云 代码检查 华为开发者

给 ES 插上向量检索的翅膀 | DataFunSummit 2023 峰会演讲内容速达

极限实验室

ES 分布式存储 向量数据库 极限科技 2023数据基础架构峰会

用 Spring 管理 Controller,你觉得可行吗?

江南一点雨

Java spring

代码之丑(八)——不一致的困惑_Java_郑晔_InfoQ精选文章