写点什么

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

  • 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:353616
用户头像

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

关注

评论

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

Apache Doris 在某工商信息商业查询平台的湖仓一体建设实践

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

「代码舞者」2023开放原子开发者大会——开源大侠秘闻

开放原子开源基金会

开源 开发者 算法

权威认可,天翼云云原生一体机iStack斩获“2023云原生企业TOP50”第一名

编程猫

博睿数据参与支持2023年度证券期货业标准研究课题获评“优秀”

博睿数据

Scrutiny for Mac v12.8.3激活版:网页开发人员的得力助手

iMac小白

千万用户的人群过滤,做好这几个点,竟然支持亿级流量

Geek_j8uecm

架构 后端 高并发

精细经营:为 Web3 游戏长期卓越奠定基石

Footprint Analytics

区块链 Web3 游戏 加密攻略

叮,你有一份来自2023开放原子开发者大会的邀请函,请查收!

开放原子开源基金会

Java 开源 程序员 开发者 算法

Integrity Plus for Mac:数据完整性校验的得力助手

iMac小白

Luminar Neo for Mac(AI技术图像编辑软件) 1.17.0完美激活版

mac

Luminar Neo 苹果mac Windows软件 AI技术图像编辑软件

现在大火的低代码是什么?有哪些优势?

高端章鱼哥

低代码开发 应用程序 JNPF

“基于inBuilder低代码平台开源社区版的应用开发”创新赛获奖队伍公示

inBuilder低代码平台

云原生的实践探索和深入学习

Geek-yan

SecureCRT for Mac:实现安全稳定的远程工作

iMac小白

海外云手机在跨境外贸中的作用

Ogcloud

云计算 跨境电子商务 跨境电商 电子商务

在极狐GitLab 上使用 DVC 实现简单机器学习

极狐GitLab

Machine Learning MLOps

一分钟了解人工神经网络(ANN)

小魏写代码

使用TikTok云手机轻松拓展全球市场

Ogcloud

云计算 TikTok 手机云服务

虾皮商品评论接口(Shopee.item_review)|虾皮API接口指南

tbapi

shopee API 虾皮商品评论接口 虾皮商品评价接口 虾皮评论接口 shopee 商品评论接口

Metasequoia 4 for Mac v4.8.6b激活版

iMac小白

一文教你提高写代码效率,程序员别错过!

伤感汤姆布利柏

效率 程序员 敏捷开发 低代码

海外云手机怎么帮助您运营facebook?

Ogcloud

云计算 facebook 弹性云手机 手机云服务

数据库产品层出不穷,金融行业如何选择?|FCon 专访

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

天猫商品评论数据接口(Tmall.item_review)

tbapi

天猫API接口 天猫商品评论接口 天猫评论接口 天猫商品评论内容接口 天猫评论API接口

华为云Astro,让业务专家秒变“技术大拿”

华为云PaaS服务小智

低代码 华为云

速度与稳定性的完美结合:深入横测ToDesk、TeamViewer和AnyDesk

阿Q说代码

远程办公 ToDesk TeamViewer AnyDesk

SecureFX for Mac(ftp文件传输工具)附注册码 v9.4.3破解激活版

mac

苹果mac Windows软件 SecureFX 文件传输客户端

热热热!开放原子开发者大会议题征集火爆!

开放原子开源基金会

Java 开源 程序员 开发者 算法

MongoDB中的分布式集群架构

EquatorCoco

分布式 索引 db 集群架构

Tower for Mac注册激活版下载(强大的Git客户端)

iMac小白

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