工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 3174|回复: 21

[原创]Java最佳实践笔记。(不断更新)

[复制链接]
发表于 2005-10-17 01:38 | 显示全部楼层 |阅读模式
a        先写注释后写代码
写代码注释的最好方法是在写代码之前就写注释。这使你在写代码之前可以想想代码的功能和运行。而且这样确保不会遗漏注释。另一种方法是边写代码边写注释。因为注释可以使代码更易理解,所以在程序开发的过程中,也可以利用这一点。如果打算花些时间写注释,那么至少你应从这个过程中获得些什么

b        在注释中加入HTML标记
在文档注释中加入HTML标记可使最后生成的技术文档的格式丰富而变得更有表现力,因此强烈推荐采用在文档注释中加入HTML标记的做法,具体做的时候可在任一有HTML编辑功能的编辑器(如FrontPage)中编辑后再将HTML源代码拷贝进源代码编辑器中。但是,由于Javadoc可在多种媒体中发布,可能会在一个不支持HTML的媒体上进行发布,因此在文档注释中加入HTML标记也会带来一些潜在的问题,但在当前环境中不会出现问题。
原理:在文档注释中加入HTML标记可使最后生成的技术文档的格式丰富,表达力强。

c        对每种类型的类写出一个模板
这些类型可能是:Applet,Application,Form等。这一个实践也可能由IDE环境直接提供,如JBuilder直接在New时会提示采用某种模板。
原理:因为不必每次都重写,而模板是遵循规范的,因此可以与规范更加符合。

d        多使用Object.equals()而不要使用“==”做值的比较
许多情况下的比较都可以同时允许使用Object.equals()和“==”并获得相同结果,但更多情况下是使用Object.equals()才能正常工作。

e        J2EE应用中多使用System.out.print()将中间信息输出到控制台
将中间信息输出到控制台可以帮助编码人员了解系统的内部运作,方便调试,同时可以及时发现编码过程存在的隐藏问题。建议输出到控制台的信息主要包括:数据库SQL语句,中间变量。

f        尽量少用抽象类,而用接口取代;必要时可以抽象类和接口偕同使用
任何实现了接口的具体类都可以被当前对象调用;而当前对象到底调用的是哪个具体类完全可以动态的决定,这样一来就使系统的可插入性有了保证。
 楼主| 发表于 2005-10-17 01:41 | 显示全部楼层
我在实践过程中会遇到种种问题,以上是解决那些问题我觉得比较好的方法,不少方法是借鉴别人的,但我都有亲身体会,希望对大家有帮助。

同时希望大家跟贴也贴出自己的实践笔记,丰富下内容。
回复

使用道具 举报

发表于 2005-10-17 13:11 | 显示全部楼层
d        多使用Object.equals()而不要使用“==”做值的比较
许多情况下的比较都可以同时允许使用Object.equals()和“==”并获得相同结果,但更多情况下是使用Object.equals()才能正常工作。

e        J2EE应用中多使用System.out.print()将中间信息输出到控制台
将中间信息输出到控制台可以帮助编码人员了解系统的内部运作,方便调试,同时可以及时发现编码过程存在的隐藏问题。建议输出到控制台的信息主要包括:数据库SQL语句,中间变量。


我只用到了 以上两个
回复

使用道具 举报

 楼主| 发表于 2005-10-17 22:40 | 显示全部楼层
呵呵,有共鸣就好了。楼上你也贴些你的笔记啊。
回复

使用道具 举报

发表于 2005-10-19 02:22 | 显示全部楼层
楼主~~~我顶~~~~咔咔~
回复

使用道具 举报

 楼主| 发表于 2005-10-19 12:16 | 显示全部楼层
楼上的。你也贴些经验出来啊,搞技术的。。。哈哈。
回复

使用道具 举报

发表于 2005-10-21 11:31 | 显示全部楼层
我还是新手呢。
没啥经验哦。还望老大以后多多指教。
回复

使用道具 举报

 楼主| 发表于 2005-10-22 01:01 | 显示全部楼层
我老人了,很快就毕业了。希望能留点什么在工大。

师弟师妹们一起努力。
回复

使用道具 举报

发表于 2005-10-31 01:51 | 显示全部楼层
Originally posted by 寂寞高手 at 2005-10-21 11:31 AM:
我还是新手呢。
没啥经验哦。还望老大以后多多指教。


哈.这样说来你应该叫我大大师兄啊.保守估计大你两届.
回复

使用道具 举报

发表于 2005-10-31 12:39 | 显示全部楼层
写Interface,在interface里写上每个方法的功能和用法,把interface交给要用它的程序员,而隐藏实现细节.
回复

使用道具 举报

发表于 2005-12-6 01:22 | 显示全部楼层
a        先写注释后写代码

注:好的方法代码行数应该在十行以内,所以先写注释好像没什么必要。写完一个方法再写它的注释也不迟。

b        在注释中加入HTML标记
注:同意

c        对每种类型的类写出一个模板
注:不懂。

d        多使用Object.equals()而不要使用“==”做值的比较
注:楼主是否了解过==不能正常工作的原因,我想是楼主对引用变量跟对象的理解不清楚。

e        J2EE应用中多使用System.out.print()将中间信息输出到控制台
注:不懂。

f        尽量少用抽象类,而用接口取代;必要时可以抽象类和接口偕同使用
注:为什么?
回复

使用道具 举报

发表于 2005-12-6 15:58 | 显示全部楼层
从事java方面工作半年了的我发现自己还没有形成什么习惯,哎悲哀。。。


好怕wool王你的头像^^^
终于明白为什么编程区人这么少?!!(mm就更少,怕编程又怕wool王头像)
感觉喜欢泡论坛又喜欢编程的人不太多。。。
但喜欢做编程的人大都很喜欢玩游戏的。。。

[ Last edited by weechou on 2005-12-6 at 16:00 ]
回复

使用道具 举报

发表于 2005-12-9 18:56 | 显示全部楼层
String对象带来的隐患
String对象却会给我们带来一些安全上的隐患。如果密码是存储在 Java String 对象中的,则直到对它进行垃圾收集或进程终止之前,密码会一直驻留在内存中。即使进行了垃圾收集,它仍会存在于空闲内存堆中,直到重用该内存空间为止。密码 String 在内存中驻留得越久,遭到窃听的危险性就越大。更糟的是,如果实际内存减少,则操作系统会将这个密码 String 换页调度到磁盘的交换空间,因此容易遭受磁盘块窃听攻击。为了将这种泄密的可能性降至最低(但不是消除),您应该将密码存储在 char 数组中,并在使用后对其置零(String 是不可变的,无法对其置零)。
回复

使用道具 举报

 楼主| 发表于 2005-12-9 22:16 | 显示全部楼层
用StringBuffer代替String。
主要是基于效率考虑,StringBuffer的执行效率比String要高,对于经常调用的字符串建议使用StringBuffer
回复

使用道具 举报

发表于 2005-12-10 12:52 | 显示全部楼层
Originally posted by wool王 at 2005-12-9 10:16 PM:
用StringBuffer代替String。
主要是基于效率考虑,StringBuffer的执行效率比String要高,对于经常调用的字符串建议使用StringBuffer


StringBuider好像只是在某些应用的时候效率会高于String,比如在进行字符串连接或大字符串操作的时候,并不是任何时候效率都高于String。
回复

使用道具 举报

 楼主| 发表于 2005-12-10 14:17 | 显示全部楼层
Originally posted by 用程序诠释生命 at 2005/12/10 04:52:


StringBuider好像只是在某些应用的时候效率会高于String,比如在进行字符串连接或大字符串操作的时候,并不是任何时候效率都高于String。



别老是踩人场的时候自己说些不够说服力的观点。
回复

使用道具 举报

 楼主| 发表于 2005-12-10 14:29 | 显示全部楼层
a        先写注释后写代码

注:好的方法代码行数应该在十行以内,所以先写注释好像没什么必要。写完一个方法再写它的注释也不迟。
再注:当你在team中,或者你一个人负责写很多个模块/类/方法的时候,你会一个一个慢慢写,还是先写注释,将所有输入输出语句写好?我这里写先注释,不是说写程序前就先写2仟字的功能说明甚至算法说明,是先简单写一些必要描述,一些必要算法说明那些等写完注释后再写。笨!

b        在注释中加入HTML标记
注:同意

再注:既然你同意了我也没什么说。。。


c        对每种类型的类写出一个模板
注:不懂。
再注:不懂就自己去查资料

d        多使用Object.equals()而不要使用“==”做值的比较
注:楼主是否了解过==不能正常工作的原因,我想是楼主对引用变量跟对象的理解不清楚。
再注:你的“我想”的根据来自哪里?你回帖帮我解释下对象比较和引用比较概念和不同。

e        J2EE应用中多使用System.out.print()将中间信息输出到控制台
注:不懂。
再注:这里我自己说得不好,应该是“调试的时候多使用System.out.print输出中间信息”。PS:你不懂是因为你不了解java,虽然java和C#几乎一样,但不是全部一样,你个白痴java方面少来这里充内行。

f        尽量少用抽象类,而用接口取代;必要时可以抽象类和接口偕同使用
注:为什么?
再注:不为什么,我反而想了解下C#有接口这个概念吗?如果有的话你觉得有了抽象类后接口为什么还要被发明出来?
回复

使用道具 举报

 楼主| 发表于 2005-12-10 14:31 | 显示全部楼层
Originally posted by 用程序诠释生命 at 2005/12/10 04:52:


StringBuider好像只是在某些应用的时候效率会高于String,比如在进行字符串连接或大字符串操作的时候,并不是任何时候效率都高于String。


这方面我确实没太多亲身经历,你回帖帮我具体说明下。
回复

使用道具 举报

发表于 2005-12-10 16:37 | 显示全部楼层
路过技术地带……顶wool一个……全部睇吾明……郁闷…………
回复

使用道具 举报

发表于 2006-6-28 00:46 | 显示全部楼层
旧帖也要顶上来。
我知道Wool的JAVA实践笔记一定还有更多精彩的。
师兄你不留多点给师弟师妹,可不行啊!
呵呵~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-5-17 04:21

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表