写点什么

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

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

    阅读完需:约 3 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

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

复制代码
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:353502
用户头像

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

关注

评论

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

最后一天,职场火焰杯测试开发大赛报名马上结束

霍格沃兹测试开发学社

高效简单办赛的秘诀:自定义判题器

华为云PaaS服务小智

云计算 华为云 大赛 赛事

8家券商综合评级上升,4月券商App终端业务体验评测报告发布

博睿数据

SDK实战指南:从配置到管理,一步步创建阿里云ECS实例

Geek_2d6073

Spring Boot中的 6 种API请求参数读取方式

快乐非自愿限量之名

Java Spring Boot 后端 API

预约直播丨ETLCloud训练营:ETL中多流数据合并与运算专题

RestCloud

直播 ETL

为你的程序精选的7个最佳天气API

幂简集成

API 天气api

邀您参会丨飞天技术沙龙 AI 原生应用架构专场·北京站

阿里巴巴云原生

阿里云 AI 云原生

面了一个程序员,因为6休1拒绝了我

伤感汤姆布利柏

卓越开发管理之道

凌晞

团队管理 项目管理 技术管理 开发管理

面向对象变成VS函数式编程

FunTester

全面掌握甲骨文云 OCI MySQL 服务:从自动运维到高效管理

Geek_2d6073

腾讯面试:如何提升Kafka吞吐量?

王磊

客户案例|博睿数据助力中泰证券App用户体验全面升级

博睿数据

哈银消费金融七载风雨兼程,创新引领稳健前行

Geek_2d6073

LinkedIn最新研究:图+向量数据库,客服解答时间缩短64%

Fabarta

Java静态变量在静态方法内部无法改变值

EquatorCoco

Java Python 开发语言

常态化运营,让数据安全工作落地生根!

极盾科技

数据安全

加速短剧出海,阿里云视频云获优秀出海产品技术服务金帆奖

阿里云视频云

云计算 视频云 出海 微短剧 短剧

数据互通新纪元,企业如何实现系统无缝对接?

聚道云软件连接器

案例分享

高效查询秘诀,解码YashanDB优化器分组查询优化手段

YashanDB

数据库 优化器 分组查询 yashandb 崖山数据库

微服务下认证授权框架的探讨

不在线第一只蜗牛

架构 微服务 框架

迭代器的一些简单理解

不在线第一只蜗牛

迭代 迭代器

虚拟ECU:汽车空调压缩机控制系统

DevOps和数字孪生

虚拟ECU 汽车行业

优化数据查询性能:StarRocks 与 Apache Iceberg 的强强联合

StarRocks

14个Flink SQL性能优化实践分享

快乐非自愿限量之名

数据库 sql 大数据 flink

探索Solana链上DApp开发:高性能区块链生态的新机遇

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发

基于 Prometheus 的超算弹性计算场景下主机监控最佳实践

阿里巴巴云原生

阿里云 云原生 Prometheus

2023全球DDoS攻击态势分析,与众多行业专家共议DDoS破局之道

百度安全

AI日报|腾讯,科大讯飞加入百模价格战,黄仁勋预言AGI或五年内出现,DeepL获3亿融资...

可信AI进展

人工智能

上海站丨飞天技术沙龙 Serverless + AI 专场开启报名!

阿里巴巴云原生

阿里云 Serverless 云原生

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