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

一段代码引发的思考

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建立拨号联接 -VB资料 将所有窗口最小化-VB资料 VB利用IE控件访问Internet VB利用IE控件设计简易浏览器 VB利用Mscomm32控件判断MODEM是否打开,或者正在工作,并且判断拨号时是否遇忙音 VB利用TAPI进行电话拨号 利用VB访问Internet 利用VB设计聊天室 利用Visual Basic实现无线通讯 VB利用Winsock控件实现局域网通信 VB如何从 Internet 上取回某一个网页的內容? VB如何检测是否已连接到Internet? VB如何利用Winsock控件编写自己的Internet程序 VB如何每天抓取 Internet 上某一个网页中的图片来更换桌面的壁纸 VB如何启动拨号网路中的连线? VB如何使用MSCOMM32.OCX发送大于80H的字符,可否给个示例程序? VB如何用VB打开默认浏览器或默认发信程序? VB如何用Visual Basic编写小型的网络系统 VB如何在程序中启动 NT 的【拨号连接】对话框? VB如何在网页上使用 VB5 制作的 ActiveX 控件? VB如何中断【拨号网络连接】? 设计Browser及FTP程序 -VB资料 设计Chat程序 -VB资料 设计E-mail程序 -VB资料 使用VB获得一页的HTML代码 使用VB收发电子邮件 VB使用超链接和发送Email VB使用浏览器的文件复制对话框 输入/输出篇 -VB资料 關於ISampleGrabber的問題 为什么我的更新方法总不行?说是要有正确的command.look the followed code 有关页面传递变量!! 怎么更改图标? 使用asp显示柱状图 关于PDA中JAVA的编程 50分,一个5分钟就能解决的问题! 今日看到一篇文章,随便问问,希望有兴趣的高手过来指点指点!初学也进来讨论一下! Foxpro怎樣調用Winzip等壓縮軟件,有誰知道?請賜教! 关于窗体验证的问题,谁能帮我出一个更好的解决方案? 别不告诉我呀,给分大大地! 如何用ISA控制用户的上网流量 請問在VBScript過程中能用session 紧急求助:VC.NET怎么导入资源文件。(高分) 如何连接.dbf的数据库(dBase). 下拉菜单问题 请问如果一个控件没有hwnd,怎样才能拿到它的hwnd?急! 简单问题 请问如果一个控件没有hwnd,怎样才能拿到它的hwnd?急! 请问如果一个控件没有hwnd,怎样才能拿到它的hwnd?急! 在设计ActiveX控件时,怎么得到该控件的HWND 请问浮点型的数据如何设置使它以科学计数法表示? 高分求教:VPOP3的使用方法? 500分求解:windows编程。 请教高手,关于用TCP/IP检测网络状态 一个关于注册 ODBC 的问题,请教高手 控件得到焦点时有OnActive事件,那失去焦点时是什么事件 哎,不知做什么软件才能赚钱? 请教跨域访问的问题! 请高手帮忙!一定给分! 怎样编程实现在ListBox里显示数据库表中一个列?(绝对放分) 那位有《101规约》给我一份,我实在不知道该到哪里去找!!!(50分求助) 关于对话框制作 关于例外 给Cisco认证提点建议!给分===== [求教]XML文档的参数中如有&符号如何处理。 [求教]XML文档的参数中如有&符号如何处理。 谁能给我提供免费防刷新的计数器代码……在线等待 请问出现下列错误,如何解决!(怎样察看每个OLE DB状态值) 会话状态设置中的SQLServer 模式如何应用? BUG!版主管理里的专题管理 session 没设置正确,请蝈蝈看看 有朋友问我学习C语言初中学历能学会吗? 大家帮个忙,很简单的问题,快呀,关于数据库的问题 请问vb怎么打开Access2000的数据库? 计算机并行口原理是什么 我在前台的程序中对text1.text=rs!number,为何text1.text的值还是空值,想不通??? GetSafeHdc() 的含义及用法 一个调用SQL数据库的问题! 如何ML一个装载地址不是4M的EXE文件(比如6M或8M) 谁能说说从一个ListView拖动文件到另一个ListView中 如何在程序结束时播放一段动画再结束!!!!! 带有 乐 字的古诗,名言有哪些?快,急—— 雷迪嘎嘎是什么意思 求Lesley roy的when i look at you 的MP3下载 拼成棱长一分米的正方形.需要一立方厘米几块,拼成正方体的表面积是几平方厘米. 英语阅读改错题 Japan is ___the east of China Linda knows something about china,because she has been to china ___.A,twiceB,for a second timeC,two timesD,a second time,选哪个,为什么,主要是A和C 什么样的人会吸引苍蝇?或什么原因导致人吸引苍蝇? 愿意做并敢保证全对者请追问,我发阅读题目过来~ 把一个棱长是3分米的正方形切成棱长是一分米的小正方体表面积增加了多少平方分米 吸引苍蝇的是什么? 英语阅读理解,联系发题 有10个棱长是1分米的正方形去诺干个拼成较大的正方体拼成德正方体的表面积是(  )体积(  ) 求一篇初中的英语作文.my enjoyable trip ONE BAR怎么样 谁能给我关于小皇帝詹姆斯的英文介绍最好是关于他的篮球生涯还有进入NBA之前的一些内容 求一篇英语作文(初中的)随着科技的发展,网路成了我们生活中不可缺少的部分.请你依据以下信息以“I like Internet”为题写一篇50词左右的文章,向我们介绍一下你身边的网络.1、上网获取信 If impossible to escape one\'s doom,bear the 英语四级两次就差几分,但是听力只有115到120,想提高听力.听新概念2行不? 一篇介绍自己的英语作文 作文中包括名字(中英)爱好及(喜欢的的原因),我喜欢这位给我讲课的老师,年龄,最好有创新,要有中文翻译,还有喜欢的宠物啊,食物啊,我喜欢老师讲的课,就这些, the continuous LED-bar indication changes to a single (momentary) one. 新概念英语听力!新概念第一册听力!第75课至第90课!新概念英语听力!我急需新概念英语第一册 第75课 至 第 90课 的听力,音质一定要好!我要放入MP3中听的!有新概念第一册听力光盘的热心网友, 已知△ABC,∠A,∠B,∠C所对的边分别为a,b,c且a:b:c=13:12:5,△ABC是否为直角三角形?为什么?用勾股定理解 铝漆包线与铜漆包线线径如何换算? if your mother knows about it ,she will reprimand you改为时间状语从句 已知直角三角形的直角边a=12,另一条直角边b和斜边c都为正整数,试求b、c的值.帮我朋友问的,最快回答且正确的有高赏 I am going to check my email m_____ this evening.按首字母填空Do you always t________ every word when you do some reading?并说出为什么? Don't worry about your mother .I think she can get here by h____. 已知直角三角形的两条边分别为7和13,斜边为c,你知道c在哪两个整数之间吗?如果a ( )are you going to email her? How about you?What a great party!She's my mother's sister.Let's play badminton.中文意思 ROY英文是什么 pool John's aunt has____ (never/ever) watched this TV programme,so she doesn't know anything about it. 以楼为题的古诗现在就要!kkkkkkkkkkkkkkkkkkkkkkkkkkkk 英语roy的用法越详细越好 8月27号晚上 你将看到两个月亮是真的吗 诗题中带有具体楼名的诗题三首 初二英语阅读选择,共15题,后面请追问, She and her mother _ the same(_上填A.lookB.look atC.are D.is急用啊 nice to meet you!用英文怎么回答? 初二英语阅读,共三篇,题目请追问, She and ______ mother _______ the same.第二个空写look,look at ,are ,is中的哪一个? 提高高中英语听力看新概念的第几册比较好?提高英语 ,不是指英语听力 初二英语阅读共三篇,后面请追问, () is Jim's mother A.She B.Her C.He D.His She ______(read) more than ten magazines about UFOs. she was not the woman__she was before.为什么不选c a what b that c who d as 含有"乐"的诗句 She said,'Don't talk about it any more.'(改为同义句)She told us _____ _____ talk about it any more 正确的顺序 ①Which woman?②Who's that woman?③She's my teacher.④The one on the red bike.A.①②③④  B.①③②④  C.②③①④  D.②①④③ 带有 子乐 的诗词戏词也行,越多越好,满意的加分 英语翻译答案写what to do 或 how to do it,为什么?为什么what to do 不用加it how to do 就要? 直角三角形三边分别为a-b,a,a+b,a、b都是正整数,则三角形其中一边可能是 A 61 B 71 C 81 D 91 英语阅读理解和完形该怎样改错?我的英语阅读能力很差,几乎每次都是只对一半,错题是相当的多,而且读完了也不知道那篇文章是说什么的,这该怎样改错?把所有的都改了?怎么改? 雷迪 嘎嘎的英文名是啥? (1/2)急:直角三角形的三边长为a-b,a,a+b,且a、b都为正整数,则三角形其中一边长可能为( )A.61 B.71 C...(1/2)急:直角三角形的三边长为a-b,a,a+b,且a、b都为正整数,则三角形其中一边长可能为( )A.61 B.71 C. 急!含有笑或乐的古诗词要豪放一点且一定要包含! RT我感觉这个好像不仅仅是说一个歌手的名字,是不是还有别的意思 英语翻译He tried calling the number I gave himThe tide covered him upI can't save himHeaven openHe's half way to hell and backThe clouds darkness came right before himThe world threw him some curses and warningsHeaven open he's half way to hellNo
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘