写点什么

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

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

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

关注

评论

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

鲸鸿动能荣获2023 TopDigital 3项大奖

最新动态

这些面试技巧,助你升职加薪、迎娶白富美

伤感汤姆布利柏

hive数据迁移

数新网络官方账号

大数据 hadoop hadoop spark hive

[NLP] langchain-ChatGLM 本地知识库

alexgaoyh

知识库 私有化部署 langchain ChatGLM-6B

香港云主机为你的业务注入强大的云端动力!

一只扑棱蛾子

香港云主机

玖章算术与百度智能云达成合作,「NineData SQL 开发」成为百度智能云主推的数据库工具

NineData

数据库 百度智能云 云市场 玖章算术 NineData

k8s实战案例之部署redis单机和redis cluster

不在线第一只蜗牛

k8s

华为云CodeArts TestPlan测试设计:守护产品开发质量之魂

华为云PaaS服务小智

云计算 软件开发 华为云 产品测试

通过腾讯云SES服务发送邮件

排骨虾

腾讯云 #go 邮件通知

BI商业智能工具改变企业发展态势

对不起该用户已成仙‖

2023年,低代码秀起了肌肉

树上有只程序猿

HTML5 游戏开发实战 | 贪吃蛇

TiAmo

html html5 6 月 优质更文活动

一名中级程序员应该具备的技能

树上有只程序猿

编程 程序员 低代码 职业生涯 JNPF

一次搞懂线性稳压器/LDO的工作原理

元器件秋姐

物理 电路 元器件 PCB 稳压器

解读 RocketMQ 5.0 全新的高可用设计

阿里巴巴云原生

阿里云 RocketMQ 高可用 云原生

华为云专家出品《深入理解边缘计算》电子书上线

华为云PaaS服务小智

边缘计算 华为云 华为开发者联盟

预约直播 | 展心展力MetaApp:基于DeepRec的稀疏模型训练实践

阿里云大数据AI技术

人工智能 模型训练

车联网 CAN Bus 协议介绍与数据实时流处理

EMQ映云科技

物联网 mqtt canbus

如何使用 Terraform 和 Git 分支有效管理多环境?

SEAL安全

git Terraform

Kafka优化

数新网络官方账号

大数据 zookeeper

Flume简述

数新网络官方账号

数据采集 flume

拉链表的原理及简单实现

数新网络官方账号

大数据 拉链式散列表

9 个值得推荐的 VUE3 UI 框架

互联网工科生

Vue UI VUE 3.0 源码

PoseiSwap IDO、IEO 结束,即将登录 BNB Chain

鳄鱼视界

AIGC+办公|大厂争先抢占高位的AI,开始“卷”打工人了吗?

TE智库

人工智能 办公 打工人 AIGC 生成式AI

svn提交规范,与Git相得益彰

互联网工科生

git svn

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