限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

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

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

关注

评论

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

连接未来 驱动创新|腾讯云 CODING DevOps 主题沙龙诚邀您的参与

CODING DevOps

火山引擎云调度GTM“同城容灾”与“异地多活”实践

火山引擎边缘云

容灾 容灾备份 容灾多活

C++函数重载

芯动大师

【高危】致远A8前台上传解压漏洞 (MPS-6tdh-8qpu)

墨菲安全

网络安全 漏洞 致远

机器学习会取代数据科学吗?

3D建模设计

机器学习

【严重】Smartbi windowUnloading 限制绕过导致远程代码执行 (MPS-e2z8-wdi6)

墨菲安全

网络安全 漏洞

领域驱动设计(DDD): 三层架构到DDD架构演化

付威

领域驱动设计

精进语言模型:探索LLM Training微调与奖励模型技术的新途径

汀丶人工智能

自然语言处理 强化学习 深度强化学习 LLM模型

【高危】WPS Office 远程代码执行漏洞(WPSSRC-2023-0701绕过) (MPS-qjky-hw9x)

墨菲安全

网络安全 漏洞 WPS Office

谁能代表中国软件的未来

B Impact

对话无服务器专家 Luca Mezzalira:你真的为 Serverless × AI 做好准备了吗?

亚马逊云科技 (Amazon Web Services)

Java 人工智能

如何使用图形数据库构建实时推荐引擎

3D建模设计

数据分析 数据工程

中小企业建站,采购云服务器上需注意什么?

YG科技

企业新业务拓展,云耀云服务器L实例能否助其进行快速开发

YG科技

初创公司预算有限,在云服务器选择上应该如何选择?

YG科技

CloudEon入选开源中国最有价值开源项目(GVP)

CloudEon开源

使用大型语言模型进行自主视觉信息搜索

3D建模设计

LLM 大语言模型

使用 OpenAI GPT 模型的最佳实践

3D建模设计

人工智能 openai GPT

制造业为什么要数字化?

优秀

制造业数字化

金融场景的“四边形战士”,容联云赤兔大模型向行业飞驰

脑极体

金融 AI大模型

Presto 设计与实现(七):Event

冰心的小屋

数据湖 Event presto presto 设计与实现

第二期YCA认证培训圆满结束!

YashanDB

对 JDK8 新出的Optional类的探索与思考

emanjusaka

Java jdk 后端

低代码开发平台能开发什么类型的系统和软件?

优秀

低代码开发平台

AIGC如何借AI Agent落地?TARS-RPA-Agent破解RPA与LLM融合难题

王吉伟频道

RPA AIGC autogpt AI大语言模型 AI Agent

ARTS 打卡第 13 天

自由

ARTS 打卡计划

YashanDB获强制性国家标准GB 18030-2022最高级别认证

YashanDB

当高并发来袭:StarRocks Query Cache 一招搞定!

StarRocks

数据库 后端 高并发 StarRocks 湖仓一体

精彩回顾 | CommunityOverCode Asia 圆满落幕

Apache IoTDB

服务质量不能掉链子,中小企业采购云服务器为何更要选择大厂?

YG科技

利用 XGBoost 进行时间序列预测

3D建模设计

机器学习

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