写点什么

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

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

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

关注

评论

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

c++11&14-智能指针

赖猫

c++ 后端

维特斯交易所系统开发详情丨维特斯交易所源码案例

系统开发咨询1357O98O718

人工智能会不会最先在智慧家庭领域落地?

DT极客

阿里云盘上线了,2T空间免费领

和牛

软件推荐

覆盖全产业!海尔智家一口气发7个标准,衣食住娱全包了

DT极客

【Doris全面解析】存储层设计介绍2——写入流程、删除流程分析

ApacheDoris

【遇见Doris】Doris核心功能介绍——数据模型和物化视图

ApacheDoris

有趣的技术知识1 | 为什么这些网站电脑打不开,手机却可以访问?(附智能追剧解决方案)

Java_若依框架教程

有趣的技术知识

RUOYI 框架教程 11 | 若依主页面调用类目表,写入主表相关信息,居然这么简单!(第九篇~)

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

大厂喜欢什么样的软件测试人才?

程序员阿沐

程序员 互联网 软件测试 测试开发 测试工程师

如何使用docker-compose快速部署SpringCloud项目

皮特王

Docker nacos Docker-compose spring-cloud

RUOYI 框架教程 4 | 若依操作小技巧,快看看你学"废"了吗!(第二篇~)

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

RUOYI 框架教程 9|若依数据权限这样控制到个人,你是这么用的么!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

RUOYI 框架教程 10 |若依Excell数据导出小数处理,你会么!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

技术中台在企业数字化转型中的践行

EAWorld

知乎、B站为何成「中国社区」概念股?

吴俊宇

知乎

RUOYI 框架教程 8 | 若依给页面加水印这么简单,你见过么!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

时间管理的三个版本

三界

时间管理 职场经验

同样做软件测试,和月收入3W的学弟聊了一晚上,我崩溃了

程序员阿沐

程序员 软件测试 测试开发 测试工程师

【遇见Doris】Doris基于Hive表的全局字典设计与实现

ApacheDoris

【遇见Doris】

有趣的技术知识 2 | 来了,阿里云网盘公测!

Java_若依框架教程

有趣的技术知识

接口测试--自定义断言设置

测试人生路

接口测试

TouChain系统开发案例介绍

系统开发咨询1357O98O718

3种加强身份和访问管理的方法

龙归科技

解决方案 去中心化 零信任

为什么海尔智慧家庭能引领行业?软件硬件都没有短板!

DT极客

RUOYI 框架教程 5 |若依Excell导入这么做,0经验小白都能写!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

RUOYI 框架教程 7 |若依js设置高度及自适应居然这么简单,你敢信么!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

一篇文章带你熟知:软件公司的分类及人员构成

程序员阿沐

互联网 面试 职业规划 软件测试 测试工程师

【实践分享】ProxySQL实现Doris FE高可用

ApacheDoris

RUOYI 框架教程 6 |若依日期操作居然这么多写法,你敢信么!

Java_若依框架教程

Java Ruoyi 教程 框架 若依

Go sync.Map 源码解读

werbenhu

Go 语言

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