- 浏览: 401466 次
- 性别:
- 来自: 北京
最新评论
-
c253898303:
求和的时候说是调用store的基础方法,这个能重写吗?如果可以 ...
给Extjs的GridPanel增加“合计”行 -
rhhao:
这个附件怎么用呢?
自己写段代码批量修改照片的Exif数据 -
AndLong:
【转】关于烂代码的那些事(下) -
TonyLian:
无意中翻出这篇老博文,文章中留下的遗憾“纯JSP如何获取req ...
Spring获得各种客户端HttpServletRequest的方法 -
TonyLian:
注释中应该写“这里为什么要做XXX”,“为什么这里没有做XXX ...
【转】关于烂代码的那些事(中)
文章列表
这两天在研究通过Hessian远程连接Java和C#。功能强大而稳定,有着跨平台、集群化优势的Java,就像勤劳勇敢的“牛郎”;极具用户亲和力与体验感、天生与Office系列有着良好关系的.Net,就像美貌的“织女”,这样的强强联手是多么美好呀!但是,只是用户和我们这些人觉得美好,人家MS就不觉得美好。以至于如此有生命力的组合,至今还是隔着银河,很难牵手。Hessian是个好东西(最近国人的PHPRPC也大有后来居上的劲头),所以我正在研究如何让“牛郎”和“织女”尽早“鹊桥会”。以至于这几天的《笔记》有些迟缓了。
有了进展,我会贴出来的,现在还是言归正传,继续今天的《笔记》吧。
...
- 2009-05-27 15:40
- 浏览 1556
- 评论(0)
《第7章 通用程序设计》
本章主要讨论Java语言的语法细节。和上一章类似,很多条目都同样适用于其他面向对象的开发语言,尤其是类C语言们。
【第29条】将局部变量的作用域最小化
将局部变量的作用域最小化,可以增加代码的可读性和可维护性,并降低出错的可能性。C语言要求局部变量必须声明在代码块的开始处,出于习惯很多人依然这样做。但是现在应该打破这一习惯了。为了使局部变量的作用域最小化,最好的办法就是在第一次使用的时候再声明之。换句话说,就是在你还没有足够的信息初始化一个变量时,应该推迟它的声明。也就是说几乎每一个局部变量的声明都应该包含一个初始化表达式(有些tr ...
- 2009-05-25 17:33
- 浏览 2035
- 评论(0)
float和double型,的底层实现是二进制的。十进制中的一个有限位数小数,转换成二进制就不一定是有限位数了,一旦位数超过的float和double型的位数宽度,就会出现“精度溢出”。所以float和double型是为了科学计算而设计的,并不适合精确的十进制计算,尤其不适合用来表示货币。
我以前也曾出货类似于为什么 2.0f - 1.9f 的结果不是 0.1f 之类的面试题。原因前面已经说了,其实不管什么语言,只要是标准的单精度浮点和双精度浮点类型的实现,就都存在此问题。VB.Net、C#甚至AS3中的Number型(从精度上看应该是Double)也都如此。
...
- 2009-05-25 16:30
- 浏览 2387
- 评论(0)
Java语言的丰富多彩,很大程度上是体现在丰富的类库上的。加之其开源,不计其数的各种第三方包就更不胜枚举。面对这些前人的财富,我们没有理由“装看不见”,而一定是要为我所用的。
第三方包姑且不论,只说JDK中的类库,我们应该掌握。只是到知道都有哪些功能的地步,用的时候可以再细查文档。最怕那些“乃不知有汉”的程序员。
还有一种程序员并非“乃不知有汉”型,而是无视既有的类库,属于“科研”型。其实,通过使用标准类库,你可以充分利用这些编写标准类库的专家的知识,以及在你之前其他人的使用经验。所以,不必浪费时间为那些与你工作关系不大的问题提供特别的解决方案,你应该把时 ...
- 2009-05-25 15:46
- 浏览 1265
- 评论(0)
Javadoc真是个好东西。它简直太奇妙了,简直就是“懒人乐”。
其实,不仅仅是受“懒人”欢迎,它还有标准化、一元化等其他好处...
那么,懒人们可听好了:为了正确地编写API文档,你必须在每一个被导出的类、接口、构造函数、方法和域声明之前加上文档注释。每一个方法的文档注释应该简洁地描述出它和使用者之间的约定。
具体的@语法,这里就不介绍了。
【Effective Java 学习笔记】系列连载专题请见: http://tonylian.iteye.com/categories/64208
- 2009-05-22 14:22
- 浏览 1670
- 评论(0)
这一条从题目上即可了解几乎所有信息。虽然简单的没有什么可说的,但它真的非常让我“吃惊”。是呀,这么简单的道理怎么之前从没想过?为什么翻开我的代码,return null; 遍地开花!?
如果非要解释一下原因,那只有一句话:避免给调用者带来过的的保护性检查的麻烦。
那么,我们能否接着推论一下呢? —— 返回一个新new的实例,而不是null。如果从“避免给调用者带来过的的保护性检查的麻烦”,是有益处的,但同时可能会增加数据的传输量,尤其是在不同系统间、网络间。
这条很“简单”,就写这么点儿了
【Effective Java 学习笔 ...
- 2009-05-22 14:12
- 浏览 1517
- 评论(0)
重载是OO的一个重要特性,然而过度的重载只会带来更多的麻烦。书中一上来就举了一个通过超类与子类类型的参数来重载的例子。
当我们希望根据传入参数的类型来选择重载方法时,由于Java对重载方法的选择是静态的,所以尽量避免通过有继承关系的不同类型来重载。如果一个方法的参数类型(以仅有一个参数为例)是String,而另一个重载的参数类型是int,这样是安全的。而一个是List,另一个是Collection就不安全了。因为重载(overload)方法的选择是静态的,编译时就决定的。与之形成对比的是改写(override)方法的选择是动态的,执行的时候才决定。
有一句 ...
- 2009-05-22 13:59
- 浏览 1685
- 评论(0)
本文我们讨论 Ajax 开发的基础知识,但是将侧重于许多 Java Web 开发人员最关心的问题:为客户机生成数据。 多数 Java 开发人员已经把模型-视图-控制器(MVC)模式应用在他们的 Web 应用程序上。在传统的 Web 应用程序中,视图组 ...
- 2009-05-22 13:41
- 浏览 1292
- 评论(0)
正在研读Joshua Bloch的《Effective Java》一书。书中至少在两条中提到了“优先使用接口而不是类”,一是第25条中的“参数类型优先使用接口而不是类”;另一个是第34条中的“通过接口引用对象”。
两条中所提及的例子一个是Map,一个是List(因为此书的作者就是Collection Framwork的作者)
Map ht = new Hashtable();
String value= doSomething(ht);
private String doSomething(Map pram) {
.....
// 比如这里需要 ...
本条是一些小的技巧(或者说好习惯)的总结。
1)谨慎选择方法的名字
你选用的名字应该遵循标准命名习惯(见【第38条】),选择易懂的、并和他人保持风格一致的名字。比如用remove还是delete,通过看JDK文档的字母索引你就会发现前者比后者多得多。但是,我还是在一个方法中使用了delete。那是因为它确实是一个对数据表中数据的delete操作方法,而且在java.sql.*中也能见到与DB删除操作相关的方法正式那些数量有限的delete开头的方法。
在以往的项目中,甚至见到一些人喜欢用汉语拼音或日文的罗马字来命名(甚至是命名数据库的表名和字段名!),这 ...
- 2009-05-21 16:40
- 浏览 1319
- 评论(2)
Java受欢迎的一个重要原因是它是一门安全的语言。它对于缓冲区溢出、数组越界、非法指针以及其他内存破坏错误自动免疫。
但是,这并不是说你可以高枕无忧,正如前面【第5条】中所述的,某些情况下你还是要自行回收过期引用的。现在我们再来说一下你不得不做的“自我防卫”性工作。
【第5条】中的回收过期引用,即使你没有这么做,顶多是浪费一些内存资源。但是,如果本条所述的“自我防卫”工作你没有到位的话,那后果就可能是灾难性的了,而其错误所在往往不容易被发现。
如果一个方法或构造函数允许可变对象进/出,那么就要考虑一下使用者是否有可能改变它。如果是的话,那 ...
《第6章 方法》
方法,或称之为函数,是我们要最常打交道的。这一章讲述了“如何写好方法”,重点是可用性、健壮性和灵活性。这章中介绍的“技巧”都可以作为提高基本功素质的教材。
【第23条】检查参数的有效性
绝大多数方法和构造函数都对传入的参数有某些限制,如索引必须是非负数,对象引用不能是null,等等。如果一个无效的参数传入,应该首先对参数进行检查,如果有问题方法应很快失败,并清楚地抛出一个适当的异常(exception)指明错误的原因。同时应该使用Javadoc的@throws标签来说明。
检查参数有效性的方法和形式可能因具体情况而异 ...
- 2009-05-19 15:03
- 浏览 3142
- 评论(0)
C语言中的函数指针又叫回调(callback)。是用参数传入一个函数指针,调用函数就可以根据不同的传入参数,实际上调用不同的函数了。
这种回调在ActionScript3语言中就是Function类型,Flex的事件监听器就是一个典型的使用场景。将一个Function类型所表示的函数作为参数传给事件监听器,当此事件发生时,就自动调用这个函数。
在设计模式中的策略模式也是一个典型的应用场景。C语言程序通常使用函数指针来实现策略模式。Java中没有指针,我们可以使用类和接口来替代之。
具体的例子可以看书,也可以看看这位高人写的《设计模式》htt ...
- 2009-05-19 14:36
- 浏览 2041
- 评论(0)
普朗克常数
参考:
http://zh.wikipedia.org/w/index.php?title=%E6%99%AE%E6%9C%97%E5%85%8B%E5%B8%B8%E6%95%B0&variant=zh-cn
http://zh.wikipedia.org/wiki/%E9%A9%AC%E5%85%8B%E6%96%AF%C2%B7%E6%99%AE%E6%9C%97%E5%85%8B
http://baike.baidu.com/view/44352.htm
拉格朗日点
参考:
http://zh.wikipedia.org ...
- 2009-05-19 09:51
- 浏览 1326
- 评论(0)
要先说明一下:本书写作于2001年,正值作者参与建设JDK1.4的时期。后来到了JDK1.5,Java又将抛弃了多年的enum枚举重拾了起来。所以本条是在没有enum的时候写的。
JDK1.4及以前版本省略了enum。其实enum也是一种struct,我们当 ...