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

一段代码引发的思考

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

delphi函数参考手册 DELPHI键盘常用快捷键汇总(DEFAULT 和CLASSIC) Delphi实现自动切换输入法 Delphi使用汇编 Delphi系 统 提 示 信 息 的 汉 化 DELPHI下的多线程程序设计 Delphi下汉字输入法的编程及使用 在Delphi与C++之间实现函数与对象共享 DELPHI中处理时间 Delphi中的INI文件编程 DELPHI中的消息处理机制 Delphi中对目录拷贝、删除和搬移的操作 Delphi中任务栏状态区的编程 Delphi中如何处理2000年问题 Delphi中如何实现系统权限的设置 Delphi中异常的截获及其个性化处理 Delphi自定义消息应用一例 Delphi5中资源文件的创建和使用 Delphi的Bug-Tthread Suspend方法 Email服务器的简单实现-Delphi资料 Hook的制作-Delphi资料 INI文件的应用-Delphi资料 NT中的关闭计算机,重新登陆的实现-Delphi资料 Windows 系统方面-Delphi资料 Windows外壳扩展编程-Delphi资料 避免二次运行-Delphi资料 编程实现文件关联-Delphi资料 编写定制的文件流实现文件读写加密-Delphi资料 采用多线程进行数据采集-Delphi资料 产生临时文件名-Delphi资料 程序不出现在任务栏-Delphi资料 有个问题请教一下! 题 目: web电子工作流因IIS服务未加载网络安全包而导致iis服务经常自动异常停止 如何在不修改jsp原程序 解决在从tomcat3.2升级到tomcat4.18的中文乱码问题???? 怎么用指定的用户启动某一个程序? vb+sql server的简单问题,但我是搞DELPHI的,VB不懂,大哥们,帮忙,绝对给分~~~ 请问在linux下怎么进行宽带拨号? Outlook Express无法接收/发送任何邮箱的信件了!Win2K Server能否只重新安装组件服务? 谁能将以下函数转化为PB所调用的动态连接库 要编译程序,但是没有gcc和cc,我该怎么办? 一个常见的编译错误 怎么样提高两台计算机的访问速度!!!!! 大虾们,介绍几个做读书笔记的好工具呀? 一个关于线程的问题 请教高手如何去除excel2000里的链接 救命啊!怎样动态创建菜单 读写文件的问题,绝对给分~~~ 对于参数为函数指针的API,C#如何调用? 为什么在设计阶段使用ACTIVEX控件,总是导致PB异常结束 如何拖动窗体??我知道各位老大都会 大家给解释一下 SUN ONE 啊,不知道是何产物? 谢 ※※※※※求Flash封面,有意者请进※※※※※ 求救:高分 急 用代理服务器,可以上网,却不能上qq~~怎么办? 用ole控件打开一个WORD文档后,如何保存? BCB 6.0 装不了我以前在 5。0 下面装的一个控件 怎么回事? 来者有分!!!!存贮过程中创建视图的问题 在线等待!急,tomcat中文问题 急急急急急急!!!delephi 能调用.class文件吗??也就是使用java的接口!如何作??? 请各位大侠尽快指点! 怎么让StringGrid的行数随数据的多少改变? 一个关于线程的问题 怎么拖动无标题栏窗体? 使用FTP碰到的问题 windows下的网络编程的c库函数有什么?怎么用? 为什么我的机器加入域的时候会出现“提供的凭据与已存在的凭据集冲突”的错误? 一个简单但很迷惑地问题!请指教! 分发高手睇过来 请求帮助 [转帖·放分]恶毒女人的情书 如果自己创建一个类,在这个类中想调用当前CXXVIEW类中的函数该如何办? P:Pointer? 数据库连接问题? 如何在菜单中显示图片?谢谢! 在线等待!急,tomcat中文问题 工作很非常特别烦心,散分 如何监控网络中的打印 请问在COMCAT中如何更改根目录的路径 java 中的double类型,在Oracle数据库中应该对应的是什么类型? 怎样作才能不让用户随意更改系统时间和日期? 关于单击和双击的问题 请问一个关于GB要转换成日文的Shift-JIS内码的问题 托福上海哪个考点最松?同上!上海中学考场怎么样? 我要办英语手抄报《我爱大自然》,1:内容全是英语.2:要有汉语 常见数列模型:分期付款模型怎么推导出来的?设贷款总额为a,年利率为r,等额还款数为b,分n期还完,则b=【ar(1+r)∧n】/【(1+r)∧n-1】 一个工程,甲独做8小时完成,乙独做12小时完成,1.若甲乙合作,多少小时完成.数学题 令我感动一件事作文100字以下210字左右 我在英孚学英语是分期付款的那种,现在想退学怎么退啊 求mathematica 8.0.1 简体中文版,邮箱cctv_luoman@126.com 写一篇英语作文用信的方式告诉李雷你在学校的一些情况告诉李雷自己在学校里一些情况 在世界上享有很高的声誉打一成语阿杜 国民教育系列是 什么意思? 《母亲的记忆》阅读答案,问题在补充里第二天清早,母亲告诉她,小尼姑就把蝈蝈送给我了.可以看出母亲哪两方面的特点?学习本文的写法,写个片段,表现你母亲某一方面的性格特点. 吧在世界享有很高的声誉化成成语紧急! 不属于国民教育的意思是什么 作文: 看书怎样提高阅读的速度与增加记忆? 国民教育序列是指什么? 母亲的记忆孙犁阅读答案(1)文中哪些情节可以体现出母亲对我的关爱?(2)谈谈你对文章中“养兵千日,用兵一时”这句话的理解.(3)文章表现出母亲对我的爱,那么,我对母亲的感情在文 在世界上享有很高的声誉表示什么成语?3Q 英语翻译the headmaster likes to arrive early at school to ( ) ( ) ( ). 两名教师带若干名学生去旅游,联系甲和乙两个旅行社.甲公司给于优惠两名教师按行业规定统一价钱全价,其余按7.5折收费;乙公司给于优惠全部按8折收费,经核算甲公司优惠比乙公司优惠价 从古至今在世界上享有很高的声誉----换成一个成语 初二作文(600字左右)题目:《朝花夕拾》读后感 清新的回忆的阅读答案 在世界上享有很高的声誉表示什么成语 燕山月似钩的前一句是什么 甲、乙两人同时从两地骑自行车相向而行,甲每时行20千米,乙每时行18千米,两人相遇时距中点4千米.全路程是多少千米? 两名教师带若干名学生去旅游,联系甲、乙两家标价两天的旅游公司,经洽谈后,甲公司可给予优惠的条件是,1名教师全部付费,其余7.5折;乙公司给予的优惠条件是全部师生8折优惠.(1)当学生 为什么设立全民健身日 一本科普书原来每页排576个字,排125页,再版时,字号改小了,每页比原来多排126个字实际排了多少页? 我的中国梦手抄报图画怎样画 读后感(800字)初二作文从《西游记》《水浒传》《童年》《朝花夕拾》《名人传》中任选两部写读后感两篇一定要初二水平800字的只写两篇而已,任选两部,只写两篇,但一定要初二水平8 《清新的回忆》阅读答案“不时看见通勤或者长途的火车优雅地驶过高低起伏的原野”一句中“优雅”一词给你怎样的阅读感受,请用自己的语言加以简要描述. 刘明这个月的工资是5500元,按规定,超过3000元的部分应该按5%缴纳个人所得税,刘明这个月实际拿到工资()元 纸有哪些特性 回忆 父亲的朋友送给我们两缸莲花,一缸是红的,一缸是白的,都摆在院子里.八年之久,我没有在院子里看莲花了——但故乡的园院里,却有许多;不但有并蒂的,还有三蒂的,四蒂的,都是红莲.九 刘明现在的年龄是李华的2倍,但6年前刘明年龄是李华的3倍 英语翻译 诚信的记忆阅读答案 从古至今在世界上有很高的声誉的成语 王大爷家养了48只鸡其中母鸡是公鸡的两倍王大爷养了多少只母鸡 争着向前,惟恐落在后面换成成语 在世界上享有很高的声誉.成语( ) 食草动物聪明些还是食肉动物聪明些?人只吃素会缺乏营养吗? 世界上享有很高的声誉 猜一个成语 They speak( English)根据括号提问 Mathematica Math ID:5105-66032-63387,求activation key和password 爆竹的记忆 一份工作甲乙合作8小时完成乙独做12小时完成甲独做几小时完成 作文:假如我是值日班长 要求:450字 直接来章作文、、、 能大能小是条龙的意思是不是说,先当孙子、再当爷爷啊? 一件工作,甲独做12小时完成,甲乙合作要8小时完成,先由甲乙合作3小时,然后由乙单独做还要多少小时完成 野生食肉动物生食动物,是不是普遍都有寄生虫? 英语作文 80字 Lily最近遇到很多问题.她为她的英语学习烦恼.同时,因为内向,只有一个朋友.你能否给Lily写封信,针对她的某个问题给她一些建议,并且告诉她,如果听从了你的建议,她的生活会发 一件工作,甲单独做需要12小时完成,甲,乙合作4小时后,乙又用了4小时后,乙又用了8小时才完成工作,呢呢么甲,乙合作共需几小时一件工作,甲单独做需要12小时完成,甲,乙合作4小时后,乙又用了8 怎样找BILL GATES 生平的事件英文版寻有关BILL GATES 这么多年的奋斗经历和成长过程.要英文版哦, 2010中秋节月亮,老师要我们办个手抄报,谁能帮帮忙╭(╯^╰)╮ 一件令我感动的作文500字 一项工程,甲单独做8小时完成,乙单独做12小时完成,丙单独做15小时完成,甲、乙合作2小时后,乙、丙再合作3小时,剩下的由丙单独完成,还需几小时完成?(列式计算) 德育手抄报 数列 关于分期付款的问题 但告诉我为什么这么做购买一件1万元的家用电器,实行分期付款,期限1年,每期一个月,每期付款相同,购买一个月后每一次付款,一年后第12次付款全部付清.若月利率为 官员强奸幼女案双方民事和解 受害人获卡梅伦成英国将不改变与美国的情报合作秘鲁最高法院就藤森在家服刑举行听证会卡梅伦称英国将不改变与美国情报合作关秘鲁最高法院就藤森在家服刑举行听证会卡梅伦成英国将不改变与美国的情报合作向世界传播浙江声音 港澳新闻媒体聚焦浙江义乌一集装箱起火 消防成功排除唐家璇:中日关系深层次原因在于彼此认赵启正:中日关系令人担忧 面临政冷经中国古代绘画展在伦敦举行各部门各地迅速行动 浙江多管齐下帮扶外侨办牵线搭桥舟山与香港小学开展校交浙江为宗馥莉等73名浙商冠冕 宗庆后第十四个全国“男性健康日”浙江多名医国航增加三条国际航线伊朗边境发生武装冲突 14名边防人员哥伦比亚妇女售卖12个女儿“初夜权”漏洞百出的“全球奴役指数”美媒曝谷歌或正秘密建造海上数据中心哥伦比亚妇女售卖12个女儿初夜权牟利全国党报开展社会主义核心价值观宣传工滇金丝猴数量达700多只老树枝头开新花做好细节,安全到位城关区卫生局古巷深处有茶香用忠诚和信念守卫精神高地打铁还需自身硬“甘巴拉精神”永放光芒爱生命 重生产 讲安全19名艺术名家来我区采风安 全 生 产“苏牙”的四大劣迹开展保护母亲湖活动携手相伴 风雨相随巴西人的不着急与着急“春雨工程”大讲堂走进山南税收收入稳定增长心里要始终装着群众林芝地区“五看五查”安全筑起幸福巢
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘