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

一段代码引发的思考

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

得到内存的 Status-Delphi资料 得到上一个激活的组件-Delphi资料 得到在内存中运行的所有应用程序的handle-Delphi资料 调用控制面板项目大全-Delphi资料 动态改变当前显示模式-Delphi资料 动态改变屏幕分辨率-Delphi资料 动态建立不常用的对象-Delphi资料 对控制面板进行操作-Delphi资料 返回程序执行参数-Delphi资料 防止 Win95 显示严重错误-Delphi资料 改变操作系统日期-Delphi资料 改计算机名-Delphi资料 关闭 Windows-Delphi资料 关闭外部应用程序-Delphi资料 监视剪贴板内容-Delphi资料 检测磁盘是否变化-Delphi资料 检测驱动器容量-Delphi资料 检查驱动器是否就绪:-Delphi资料 建立简单的任务栏应用程序-Delphi资料 将程序放在Windows启动中-Delphi资料 将光标限制在某区域-Delphi资料 将文件放入回收站-Delphi资料 禁止用户切换任务-Delphi资料 控制面板大全-Delphi资料 控 制 系 统 菜 单-Delphi资料 拦截消息处理过程-Delphi资料 利用API函数开发DELPHI程序三例 利用Hook技术实现键盘监控-Delphi资料 利用浏览窗口 DragDrop 任意文件-Delphi资料 利用未公开函数实现Shell操作监视-Delphi资料 妙用Delphi的标识号 周五不好干什么,没女朋友,编程水平又菜,学校又不好,文凭又差自修室又不开放??? 各位同志,我有个问题搞不清楚.请不吝赐教. 如何在局域网中实现共享只读文件(没有共享密码)的写操作 杭州的朋友,请问........ 如何在explore显示的网页的文本框中设置正文??? 谁能告诉我学软件工程到底有多少用? 这里有20分,谁要? 大家来看,这就是别人对中国程序员的看法! 寻找图书~? 获取NT管理员权限创意 ?寻找图书~? 为什么运行时正常的程序,编译成可执行文件后运行过程中出错... 怎样填充按钮客户区? 寻找图书~?? 请问如果数据量很大,比如大型企业的即时采集数据,应该用什么数据库系统处理呢?oracle,sysbase,db2,sqlserver还是cobol?? 这么简单的问题,难道就没有人能帮我了吗?!太遗憾了! 敬一杯“情人醉”给MM_mimi(人淡如菊),别人不要进来呀! 谁有过同样的遭遇??? 长整数除法的算法?? 关于Java Plug-in和Applet的一个问题 请求推荐有关SDK的好书!!!!!!! 我受不了了 个人主页链接如何让鼠标变成手形?谢谢! 老话题:三层结构中blob字段的存取出问题了? run-time类是怎么回事? 当多个程序对同一个文件进行读写操作,如何防止同时写入造成混乱? 求银行家算法的c程序! 请问W2K下面鼠标阴影的效果是用哪个API实现的? 我提议有编程经验的朋友们,一起来研究一种真正符合我们实际开发工作的模板 我用上kylix了!!!!!!! 请教,关于NT域用户的问题!NT账号,怎么设定唯一性呀?比如有aa的用户,我用aa登陆后,别人不能用aa同时登陆了?应该在那儿设置呀? Mfm1992?是个什么东西呀! 如何在informix/esql c中使用大事物? 如何保存收下來的email呢???!!!!! 关于一个网站建设的问题,望高手指点。 求救;如何建立一个登陆页面? 谁能给出一个远程访问互联网ACCESS数据库的经典代码?有28分送上! 怎样将-个十六进制数转换为十进制? 如何将java程序编译成dll文件 cannot focus a disabled or invisible window 一表我想通过文本框来增加记录,为何不能发送到表中,不要告诉我是没有post的原因。 奇怪,borland的开发能力这么强,为什么几乎没有一个象office那样流行的应用软件呢?如果它的应用软件很多,就不会象现在这样穷了吧? Delphi 数据库不如Power Builder 吗? 请问怎么安装新的控件? B样条曲线:如何由经过点反算控制点? Berzer曲线:如何由经过点反算控制点? 关于activereport的字符集问题 有没有计算曲线长度和交点的好方法? Install Shield For VC6怎么用???????????????????? ODBC数据库 ****有没有计算曲线长度和交点的好方法? 苏教版小学数学六年级补充习题61页第二大题 六年级数学下册练习册很急啊 急、啊 用猜想和尝试法解决1.一个笼子里,鸡和兔共有28个头,80只脚.鸡和兔各有几只?这个列表我忘了,你们能提醒我一下么?同学们进行队列寻列,排场一个4层的空心方阵,还多15人.如果在方阵的空心部 苏教版小学数学补充习题(六年级上册)23页答案 人教版小学六年级数学下册配套练习册第108页第五题怎么计算,急需算式步骤. 某船队遇晴天和阴天均正常出海捕鱼,逢雨天则休息(晴天、阴天和雨天之外的情形不考虑).那么,在下个月的10日逢雨天的可能性为几分之几?11日出海捕鱼的可能性为几分之几?这两天均不能 人教版六年级上册数学补充习题49 50页 1.一个数的6.4倍加上2.6,等于6.1,求这个数2.甲数的五分之二比它的⑦份之①多二分之三,甲数的½是多少?3.1.8的5倍,比一个数的75%少4.5,这个数是多少?4.35除40的商乘以¼与五分之一的差,是 一个正方形,如果长增加2米,宽增加3米,面积就增加46平方米,那么原来正方形的面积是多少平方米?小红有118元钱,全是1元、5元、10元三种面额的,共23张.其中5元和1元的张树一样多.那么1元、5元 六年级小学数学上册补充习题答案46到51页所有答案请你都告诉我! 5题 6题 7题列式 六年级上数学练习册22页第5题答案全说!速度! 数学六年级下补充习题46——48答案拜托啦 六年级下册数学练习册90页答案,要列式的哦,好的加分! 六年级数学练习册23页的1、2、4、5、6、7、的题目 苏教版六年级下册数学配套练习册86---95页答案苏教版六年级下册配套练习册! 人教版六年级下册数学配套练习册答案10到12页 六年级数学练习册22页第2题、3题、5题、7题和23页的3题 小学六年级下册数学苏教版练习册的第102页10.1111(1):一个长方形的长减少6厘米,面积减少30平方厘米,剩下的部分正好是个正方形,求原来的长方形面积是多少? 要有意思,列式( 六年级下册数学配套练习册15——21页答案人教版最好有公式的,会答的答,不会答的,别说什么不让抄啊 快 明天就交 不然我就完了 2010至2011六年级下册数学期中试卷苏教版 谁有北师大版六年级下册数学练习册72、73页答案我不确定我写的对不对,我想对一下题 六年级下册数学练习册答案47和48补充44和45 六年级上册数学配套练习册64页 北师大版六年级下册数学练习册答案5页 六年级下册数学练习册答案30页的第3题,快.苏教版的.要8个比例试。3/4,4,9. 六年级上册小学语文配套家庭练习册11课第五大题第一小题答案老人是聋子吗?你是从哪里看出来的?用“波浪线”标一标……以后,每天清晨,我都到小树林去练琴,面对我唯一的听众,一位耳聋 小学6年级下册北师大版数学练习册答案(只要29 30 31 32页的) 六年级上学期数学练习册习题3.5的9-14小题.(上海教育出版社) 小学数学配套家庭练习册 六年级上册第10页第三大题第五小题答案. 六年级数学练习册下册北师大版86页答案 六年级上数学练习册40页答案 拜托 急 啊 1.甲、乙两数的比是5:6,甲比乙少2,甲数是( ),乙数是( ).这么算出来的. 篮球场长28米,宽15米.把它画在边长为30厘米的正方形纸上,选择怎样的比例尺比较合适?画好后的篮球场长和宽各是多少厘米?(要算式,有依据) (六年级下学期数学帮你学75页2题) 人教版六年级上册数学练习册41页人教版六年级上册数学练习册41页全部的题 小学数学配套家庭练习册(北师大版) 六年级下册的数学练习册答案 41页、42页、43页答案. 图上距离 实际距离 比例尺 25cm 50km 280km 1:400000还有 0.6cm 4:1人教版的,芝麻开花的快! 六年级下数学练习册41页(三元一次方程)只要做习题6.10 解下列方程 三元一次方程一、 5x-3y+z=25x+2y-4z=3-5x+y-z=2二、x+y=-2x+z=13y+z=1三、x-y-z=-13x+5y+7z=114x-y+2z=-1 青岛版六年级数学上册配套练习册50页计算题答案! 六年级数学练习册共几页 六年级数学练习册答案青岛版12到13页一瓶果汁2分之3升用4分之1的杯子来乘能成多少杯 谁有青岛版六年级下册数学配套练习册49页综合练习答案? 六年级数学练习册 冀教版六年级下册数学练习册第13页答案一块长方形铝板长125.6厘米,宽62.8厘米.用这块铝板卷成一个圆筒,这个圆筒的直径可能是多少厘米?高是多少厘米? 青岛版小学五年级下册数学配套练习册42页答案 急! 六年级数学!练习册! 复式条形统计图中每个单位长度直条表示什么 66页应用题答案 谁能告诉我小学人教版数学六年级配套练习册第36页的答案? 复习题1到8 小学五年级数学上册课本应用题的答案 六年级下册数学配套练习册第六单元综合练习答案人教版会的帮帮忙,不会的别说一些废话啊!整个大题(四)算一算不用给,其他的. 六年级数学练习册下册第35页第3题的第2小题怎么写小明家和小刚家相距1240米.一天两人约定在两家的路上会合.小明每分钟走75米,小刚每分钟走80米,两人同时从家里出发,多长时间后能相遇? 小学6年级上册数学课本66页答案 六年级数学下册练习册63 六年级下册数学练习册24页的题.(1)为修公路准备了一大堆石子,堆放成圆锥形.这堆石子底面积是1256㎡,高6m.用这堆石子铺宽20米的路,厚度0.2m,能铺路多少米? 在一个长25厘米,宽12厘米,高20厘米的长方体玻璃缸中放入一个棱长9厘米的正方体铁块,然后在玻璃缸中加入一些水,使铁块完全浸没在水中,当铁块从水中取出时,玻璃缸中的水会下降多少厘米? 数学六年级下册练习册54页要的是那种皮子和教科书是一样的练习册哦!只有54页的!我要的是53页的答案 1、5x6/1+6x7/1+7x8/1+8x9/1+9x10/1+……+19x20/12
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn