说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

一段代码引发的思考

HTML文档下载 WORD文档下载 PDF文档下载
作者Lukas Eder发表了一篇文章《code-made-me-cry》,引发了开发者们的广泛讨论及思考。在他看来,阻力最小的方法往往容易出错,但也不应该为如此琐碎的事情编写10行代码。

作者Lukas Eder发表了一篇文章《code-made-me-cry》,引发了开发者们的广泛讨论及思考,我们一起来看下(以下是译文)。

我的一位朋友告诉我,他最近遇到关于正在维护的遗留应用程序的一些问题。下面的这段代码就能说明我们正在讨论的内容:

String q = "select replace('" +              accountNo +              "%','- ','-') from dual";rs = stmt.executeQuery(q);if (rs.next()) {accountNoFormatted = rs.getString(1);}

看到这,瞬间让我感到欲哭无泪。如果这只是一个简单的示例,那么我能想象出该应用程序剩余部分是怎样的。事实上,再找出这些问题的缘由前,首先应确定为何他需要这些事项,他(我的朋友)甚至考虑在该应用中引入jOOQ或者其他新技术。

下面是一些关于如何在应用程序中操作数据库的建议:

1.不要给数据库发送过类似这样的琐碎逻辑( trivial logic 

我曾经在博客中发表了《10 Common Mistakes Java Developers Make when Writing SQL》。感兴趣的不妨移步去看看。尽管是一段简单的字符串替换,但并非是小事。为什么要冒着数据库往返/网络延迟、数据库连接或者数据传输超时,或者各种问题可能发生的风险去让数据库做一些Java就可以完成的事情?

accountNo.replace("- ", "-");

这里,我们还能采用SQL函数命名的方法。为什么要经历使用JDBC API这么繁琐的过程?亲爱的开发者们,利用1小时来研究java.lang.String可用的方法列表吧,这个方法看起来很棒,千万别低估了类!

2. 切勿格式化已格式过的数据

这是条经验法则:一旦数据被格式化,那么它就不可用于计算/数据处理。

这就是为什么没有任何人想要格式化数据的原因。通常这些数据是为了显示给人们看的,因为人们并不善于破译或记忆这些数据。

a56225e0-45ef-11e3-8f96-0800200c9a66

相反的,人们更擅于阅读且记忆类似这样的:

My wife's bank account

正如前面所说的,一旦数据被格式化,那么它就不可用于计算/数据处理。如果在格式化过程中出现错误,那么修复格式化也是错误的。因此,永远不要格式化已经格式过的数据。

3. 切勿在数据访问层中格式化数据

正如人们不擅长操作比较长的特有ID一样,机器也不擅长操作格式化数据。事实上,在数据访问层进行格式化是有理由的,也许你还未遇到过。当然,一个可以接受的理由是你在DB中需要运行一个非常复杂的、高度优化报告。但通常你不会这么做,这是因为你会考虑从Java字符串中使用 SQL replace() 函数来删除空格,这并不是个复杂的报告。

因此,永远不要在数据访问层中格式化数据,除非你拥有一个令人信服的技术。accountNo应该保持不变,ID-style尽可能地贯穿整个应用。在accountNo干扰UI之前,完全没必要去格式化数据。

OK,说句公道话,也不是没有例外。假如当你选择在UI中进行数据排序,那么你可能想通过格式化各种accountNo来进行数据排序,排序结果正如下面所例举的这样:

SELECT ..FROM accounts aORDER BY a.account_no_formatted

4. 懒惰

这里有个非常简单的方式来帮助你成为更加优秀的程序员——偷懒。

由于太懒你不会将 "- " 替换为"-",为这样的小事编写10行代码。你甚至还会认为:

There HAS to be a better way to write this。总会有更好的方式来编写这个。

阻力最小的方法往往容易出错,但也不应该为如此琐碎的事情编写10行代码。一旦你能够用1行代码来解决琐碎的事情,那么,你的生活会变得更好。

英文出自:Dzone

VB中实现同一窗口的多个实例及控件的动态增减 VB中阴影字体的实现 VB自定义数据结构的传输转换 Visual Basic 窗体背景花纹的实现 Visual Basic 中的界面设计原则和编程技巧 Visual Basic 中文本框处理技巧集萃 Visual Basic 中字符淡出淡入的实现 Visual Basic窗体背景花纹的实现 Visual Basic下工具条的制作 Visual Basic中的界面设计原则和编程技巧 Visual Basic中在同一界面输入大量数据的几种方法 VisualBasic中的界面设计原则和编程技巧 VisualBasic中用户界面的设计原则 把 VB 标准的工具栏变成平面式 把窗体卸载干净-VB资料 保持初始的窗体大小-VB资料 编程实现将所有窗口最小化-VB资料 不规则形状窗口详细说明 -VB资料 不用 API ,直接调用关联的程序 -VB资料 处理过程时的鼠标显示 -VB资料 窗口处理技巧大全 -VB资料 窗口事件的发生顺序-VB资料 VB创建不规则窗口 VB创建透明窗体 VB创建位图菜单 VB创建无 Icon 的窗口 打开 Win95 的创建快捷方式窗口-VB资料 打印机技巧 -VB资料 带有历史记录功能的菜单-VB资料 得知目前Mouse所指的Menu Item是哪一个-VB资料 调整 Combo 下拉部分的宽度 -VB资料 怎么在Gtk+的gnomemessagebox显示中文? (在线等待,急!)在vc中怎么使用datagrid控件 我使用的是odbc访问数据库 好急的问题,有关于SMS的接收字符处理问题,想了好几天没有结果 那位兄弟手头上有ASP.NET高级编程的电子书? DataGrid 控件问题,帮帮我把,朋友! automount? 一个比较难的问题! 关于datagrid的问题 在线等待 在cmd编辑器中用java运行已编译的文件运行不成功怎样解决 各位帮我解决一下这个问题!!!谢谢 关于ResourceManager的疑惑? 两台机器无法访问? 大家有没有听说过zebudom.js这个javascript的API?请问哪里可以下载它? 模块的连接 如何用php开发一个在线语音聊天室? 请问:有谁能提供Microsoft Project 2002简体中文专业版下载地址????急用!!!!!! 《The C++ Programming Language》有没有中译版? 请高手帮我看看: session的范围 硬件加、解密卡合作 请问那里能下到C或者C++的编译环境? 我的网页做好了,在我自己的机子上显示的很好看,在别的机子上有的显示的和在我的机子上显示的一样,很不错,但在有些机子上显示就变形了 怎样在文件中查找指定的字串? 为什么这两个查询都不能运行呢? 请教有关比对数据库的思路 运行结果出错!!!!!!!!!! google主页的问题(在线) (在线等待,急!)对话框中画图,超过了对话框大小,但是滚动条不能用 jbuilder7+jboss的配置问题? 求教:用UML做分析设计工具、用JAVA开发的一个办公管理系统的详细时间节点计划书。 數據庫數據顯示問題///急,在線等!!!!!個位幫幫忙? 讨论一下,eregi和strpos 为什么这两个查询都不能运行呢? 集成多文件夹操作窗口的软件有吗?有的请发QQ;6138215 怎么获得checkbox组中被选中的部分? sybase表中有没有自动编号的字段啊? 问一个很菜的问题?(在线等……) DOMINO的B/S开发:如何自动更新一页面中的多分类新闻标题AS WWW。WXRB。COM 如何用一根电话线让两台电脑同时上网 急!!“SQLserver不存在或访问被拒绝”怎末回事? 有没有防止关于用户未经登陆,直接访问的好办法,和思想?仁者见仁! 请问芯片的封装主要有哪几种? servlet问题 关于数据库的问题? URL,HTTP含义是什么? oracle8.17安装好后,无法使用!!!俺只有50分??? 请问高手关于发布的问题 兄弟们,帮我测一下论坛的反应速度 关于水晶报表的问题,请指教. 如何设计一个温度采集系统? 麻烦大家看下本世纪最难的物理题帮帮着急的人吧, 1.汽车从A地开往B地,共用了两小时,第1小时中行驶80千米,第2小时中运行了60千米,两种情况中平均速度各多大?在总的过程中的平均速度多大?2.高速路上为了避免发生汽车追尾事故,有关部门在公 help!China will be_______the 2008 Olympic Games.A.hosting B.host C.a host D.hosted 题中是will be有了be是不是B就选不了?改选什么啊?意思是什么? 关于六国论的的课文 若你依靠一根指南针导航,当你到达地球某区域时,那儿远离城市,没有电磁干扰迹象,发现水平放置的指南针失去了指向性.但是若将指南针竖直放置,发现指南针静止时N极总指向地面.那么你能 初三的一元二次方程你可以帮下我吗? 水下地形图的意思 大家帮看看物理物理问题问题有点着急了啊,本人先在此感谢各位朋友2a 这个成语盲人什么阿 六国论原文 问几道物理题,我着急!1 用长为90cm,能承受最大拉力为10N的细绳,上端固定在天花板上,下端系一个m = 0.5kg的小球,静止在空中,今给球施加一个水平冲量后,悬绳即刻挣断,试求:此水平冲量至少为多 怎样才能认识到自己? 标准原文准确的原文, 于谦两袖清风的故事一定加标点,和段意. 要怎么样才能更清楚地认识到自我我有的时候很茫然,不知道人生的方向,人是如何来 又如何去的. 活着的目的是什么? 六国论 原文 翻译 妈妈正在上班 英文 怎样才能认识到自己的不足 35、6岁的人最想的是什么? 以“六国论”写片文章!以六国论写片文章,文体不限,字数200左右就可以了!谈论下六国是怎么灭亡的!要群面阐述!超不200字也没关系! 先在此谢过了 画出你想象中的海边美景怎么画 功成名就的意思是什么? 问下物理问题!在线等了,本人先在此谢谢大家5Q 窃读记窃读指什么 成语什么于途 SQE是什么意思啊? 窃读记,窃表现在哪 成语什么途? PE和SQE分别代表什么? 古人的书信具体有哪几种形式 道()途()的成语有哪些 SQD和SQE的区别是什么啊? 功成名就的‘就’是什么意思? 填成语()()于途? sqa和qa的区别 七一红色瑞金的由来 成语:日()途() SQE是什么的英文缩写 图书馆 磁条图书馆里的书除了反面右下角的条形码,还有就是书的第一或第二叶人工贴的条形码(也就是如果你要借的话,工作人员会用东西把这个人工贴的条形码照一下).把这个人工贴的条 给家乡孩子的一封信 你如何理解一心为自己,一身为自己的人这句话 于丹论语心得《论语微子》 不假思索和功成名就的意思 请问下有人知道物理问题,紧急j谁知道 非常谢谢大伙了7GN 我忍无可忍的青春是一本什么样的书 《海滨仲夏夜》作者描写月下的海滩时重点写了什么?表达了作者怎样的思想感情? 紧急有人了解的告诉下哟, help me1.(Thanksgiving)Day is my favourite festival.[对打括号的部分提问]2.I’ve got lots of stamps from China.(改成一般疑问句) 3.These stamps are forom (Canada).[对打括号的部分提问]4.we can see the Dragon Boat race on Dr 老( )识途!填成语 请问有谁知道物理题目n有会的人说下嘛,感谢你们了5Yq C7H14的同分异构体这些的结构简式要一一对应的急 补充成语,汗〈〉充栋 有538箱鲜奶,每辆货车一次运62箱,每次大约需要多少辆这样的货车? C7H14有多少同分异构体,为什么我写出来40种 什么什么识途的成语 于丹论语心得后面的原文全吗 C7H14的同分异构体怎么找啊(别直接说答案,我要的是方法) 麻烦给看下这两个物理题好吗~ 《沁园春·雪》中用“北国风光,千里冰封,万里雪飘”的词句来描述雪景,形成这种自然景象的主要物态変化是( C7H14的同分异构体有哪些? 马尔代夫总统候选人一致同意提前举行新韩国要求美国澄清是否窃听韩总统 在野亚马孙热带雨林4年发现441个新物种法国夫妇汽车行李箱内藏一岁女婴 警方世界最高人举行婚礼 夫妻身高相差77日本天皇夫妇访问日水俣市 向水俣病纪日本小学生制成长33.9米鱼卷 打破日本拟上调育儿休假补贴发放比例 增加印尼首都雅加达打击街头“面具猴”表演悉尼遭遇强降雨 城区多条公路被迫封(美国网络销售辱华面具与服饰 迎接万圣美国现实版越狱:4囚犯通过浴室天花板日本一轿车与赛马相撞 司机不治身亡报告称美国一年有500名少年儿童因枪阿富汗一婚礼客车遇袭爆炸 造成18人外媒分析耶伦若就任美联储下任主席 面巴武装分子向以色列发射火箭弹 其中一法国再出现鲨鱼袭击 男子冲浪遇险一条巴武装分子向以色列发射火箭弹 其中一印尼首都雅加达打击街头“面具猴”表演法国再出现鲨鱼袭击 男子冲浪遇险一条白马湖畔教书声白马湖畔教书声苏亚雷斯“咬”了世界杯?研究决定完善农产品价格和市场调控机制配电箱码啤酒罐 值班员涉嫌上班喝酒江西53名小学生饮污水患痢疾诗与大地事务“隐形”党员做不得乡愁式的怀旧保护并不现实73种儿童用品被曝不合格“ATM机取同号假币”不实花旗:中国经济下行空间有限王竹琴同志逝世中国医师道德准则发布直升机监测烧秸秆防治大气污染“亲历中国茶文化”沙龙活动举行青海湖将办首届中国商学院环湖跑61毒贩去年被判无期至死刑会·展·演气象台“定格”七百年的老胡同
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘