- 浏览: 543018 次
- 性别:
- 来自: 石家庄
最新评论
-
贝塔ZQ:
操作excel文件,可以用插件,简单方便,PageOffice ...
Java 操作 Excel (读取Excel2007,Poi实现) -
cjinkai:
nich002 写道竟然百度搜索排行第一...用递归删除,一个 ...
Java删除文件夹和文件 -
cjinkai:
public static void clearDir(Fi ...
Java删除文件夹和文件 -
cjinkai:
public static void clearDir(Fi ...
Java删除文件夹和文件 -
bloodywoof:
不妥,有flag作为成员参数判断,不便作为util类应该是
p ...
Java删除文件夹和文件
有许多标准和实践准则可适用于Java开发者,但此处要说的,是每个Java开发者需坚守的基本原则。
一、为代码加注释。虽然每个人都知道这点,但有时却不自觉忘了履行,今天你“忘了”加注释了吗?虽然注释对程序的功能没什么“贡献”,但过一段时间,比如说两星期之后或者更长,回过头来看看自己的代码,说不定已经记不住它是干什么的了。如果这些代码是你个人的,那还算是走运了,不幸的是,当然了,大多数时候都是别人的不幸,很多时候大家都是在为公司写代码,写代码的人也许早已经离开了公司,但别忘了一句古话,有来有往嘛,为他人,也为我们自己,请为你的代码加上注释。
二、不要让事情复杂化。程序员有时候总是对简单问题想出复杂的解决方案,比如说,在只有五个用户的程序中引入EJB、对程序实现了并不需要的框架(framework),之类的还有属性文件、面向对象解决方案、多线程等等。为什么要这样做呢?也许我们并不知道是否这样会更好,但这样做也许可以学到一些新东西,或者让自己更感兴趣一些。如果是不知道为什么这样做,建议多请教经验丰富的程序员,如果是为了个人的目的,麻烦让自己更专业一点。
三、始终牢记——“少即是好(Less is more)并不总是对的”。代码效率虽然很重要,但在许多解决方案中,编写更少的代码并不能改善这些代码的效率,请看下面这个简单的例子:
if(newStatusCode.equals("SD") && (sellOffDate == null || todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null && todayDate.compareTo(lastUsedDate)>0)) || (newStatusCode.equals("OBS") && (OBSDate == null || todayDate.compareTo(OBSDate)<0))){ newStatusCode = "NYP"; }
能看明白if条件语句是干什么的吗?能想出来是谁写的这段代码吗?如果把它分成两段独立的if语句,是不是更容易理解呢,下面是修改后的代码:
if(newStatusCode.equals("SD") && (sellOffDate == null || todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null && todayDate.compareTo(lastUsedDate)>0))){ newStatusCode = "NYP"; } else if (newStatusCode.equals("OBS") && (OBSDate == null || todayDate.compareTo(OBSDate)<0)) { newStatusCode = "NYP"; }
是不是读起来容易多了呢,在此只是多加了一个if和两个花括号,但代码的可读性与可理解性就一下子提高了一大截。
四、请不要硬编码。开发者经常有意“忘记”或忽略掉这点,因为有些时候开发日程逼得实在太紧。其实,多写一行定义静态变量的代码能花多少时间呢?
public class A { public static final String S_CONSTANT_ABC = "ABC"; public boolean methodA(String sParam1){ if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){ return true; } return false; } }
现在,每次需要将“ABC”与其他变量进行比较时,不必记住实际代码,直接引用A.S_CONSTANT_ABC就行了,而且在今后需要进行修改时,也可在一处修改,不会翻遍整个源代码逐个修改了。
五、不要“创造”自己的框架(framework)。确切来说,有数以千计的各种框架存在,而且大多数是开源的,这些框架都是优秀的解决方案,可用于日常程序开发中,我们只需使用这些框架的最新版本就行了,至少表面上要跟上形势吧。被大家广为接受的最为明显的一个例子就是Struts了,这个开源web框架非常适合用在基于web的应用程序中。是不是想开发出自己的Struts呢,还是省点力气吧,回头看看第二条——不要让事情复杂化。另外,如果正在开发的程序只有3个窗口,就不要使用Struts了,对这种程序来说,不需要那么多的“控制”。
六、不要使用println及字符串连接。通常为了调试方便,开发者喜欢在可能的所有地方都加上System.out.println,也许还会提醒自己回过头来再来删除,但有些时候,经常会忘了删除或者不愿意删除它们。既然使用System.out.println是为了测试,那么测试完之后,为什么还要留着它们呢,因为在删除时,很可能会删除掉真正有用的代码,所以不能低估System.out.println危害啊,请看下面的代码:
public class BadCode { public static void calculationWithPrint(){ double someValue = 0D; for (int i = 0; i <10000; i++) { System.out.println(someValue = someValue + i); } } public static void calculationWithOutPrint(){ double someValue = 0D; for (int i = 0; i < 10000; i++) { someValue = someValue + i; } } public static void main(String [] n) { BadCode.calculationWithPrint(); BadCode.calculationWithOutPrint(); } }
从测试中可以发现,方法calculationWithOutPrint()执行用了0.001204秒,作为对比,方法calculationWithPrint()执行可是用了10.52秒。
要避免浪费CPU时间,最好的方法是引入像如下的包装方法:
public class BadCode { public static final int DEBUG_MODE = 1; public static final int PRODUCTION_MODE = 2; public static void calculationWithPrint(int logMode){ double someValue = 0D; for (int i = 0; i < 10000; i++) { someValue = someValue + i; myPrintMethod(logMode, someValue); } } public static void myPrintMethod(int logMode, double value) { if (logMode > BadCode.DEBUG_MODE) { return; } System.out.println(value); } public static void main(String [] n) { BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE); } }
另外,字符串连接也是浪费CPU时间的一个大头,请看下面的示例代码:
public static void concatenateStrings(String startingString) { for (int i = 0; i < 20; i++) { startingString = startingString + startingString; } } public static void concatenateStringsUsingStringBuffer(String startingString) { StringBuffer sb = new StringBuffer(); sb.append(startingString); for (int i = 0; i < 20; i++) { sb.append(sb.toString()); } }
在测试中可发现,使用StringBuffer的方法只用了0.01秒执行完毕,而使用连接的方法则用了0.08秒,选择显而易见了。
七、多关注GUI(用户界面)。再三强调,GUI对商业客户来说,与程序的功能及效率同等重要,GUI是一个成功程序的最基本部分,而很多IT经理往往都没注意到GUI的重要性。在现实生活中,许多公司可能为了节省开支,没有雇用那些有着设计“用户友好”界面丰富经验的网页设计者,此时Java开发者只能依赖他们自身的HTML基本功及在此领域有限的知识,结果,很多开发出来的程序都是“计算机友好”甚于“用户友好”。很少有开发者同时精通软件开发及GUI设计,如果你在公司“不幸”被分配负责程序界面,就应该遵守下面三条原则:
1、 不要再发明一次轮子,即不做无用功。现有的程序可能会有类似的界面需求。
2、 先创建一个原型。这是非常重要一步,用户一般想看到他们将使用的东西,而且可以先利用这个原型征求用户的意见,再慢慢修改成用户想要的样子。
3、 学会换位思考。换句话来说,就是从用户的角度来审查程序的需求。举例来讲,一个汇总的窗口可以跨页或者不跨页,作为一个软件开发者,可能会倾向于不跨页,因为这样简单一些。但是,从用户的角度来看,可能不希望看到上百行数据都挤在同一页上。
八、文档需求不放松。每个商业需求都必须记录在案,这可能听上去像童话,似乎在现实生活中很难实现。而我们要做的是,不管开发时间多紧迫,不管最终期限多临近,对每个商业需求都必须记录在案。
九、单元测试、单元测试、单元测试。关于什么是单元测试的最好方法,在此不便细说,只是强调,单元测试一定要完成,这也是编程中最基本的原则。当然了,如果有人帮你做单元测试自然是最好,如果没有,就自己来做吧,当创建一个单元测试计划时,请遵守以下三条最基本的原则:
1、 先于编写类代码之前编写单元测试。
2、 记录单元测试中的代码注释。
3、 测试所有执行关键功能的公有方法,这里不是指set和get方法,除非它们是以自己独特方式执行set和get方法。
十、质量,而不是数量。有些时候因为产品问题、期限紧迫、或一些预料之外的事情,导致常常不能按时下班,但一般而言,公司不会因为雇员经常加班而对之表扬和奖励,公司只看重高质量的工作。如果遵守了前九条原则,你会发现自己写出的代码bug少且可维护性高,无形中质量提高了一大步。
发表评论
-
Virtualbox 复制vdi文件
2010-04-15 19:26 5853VirtualBox可不像VMware ... -
Win失效!解决方法!!!
2010-04-15 16:09 1661使用 Sun VirtualBox 后,发现Win键+?快捷键 ... -
千兆网线 or 百兆网线 !!!
2010-04-15 11:55 29925类线(100m)的制作: a: 绿白(3)、绿(6)、橙白 ... -
Windows XP不能显示缩略图的解决
2010-03-29 12:48 1688点击开始-运行, 输入这行回车就行了 regsvr32 ... -
女孩不知道的
2009-05-01 06:46 1120(1)当一个孤独的男孩经常对你厣厣一笑时,他已经喜欢上你了(2 ... -
极少人知道的手机隐藏功能和日常使用禁忌
2009-04-08 17:04 1742一、手机使用小秘诀, ... -
删除系统服务
2009-04-08 16:30 1352命令提示符:sc delete 服务名 用来对付 M ... -
宽带自动上网
2009-03-29 17:38 1753重复的讲解,真累啊 还是写篇日志吧 1,建立批处理文件 ... -
提问的艺术
2009-03-08 18:59 1048在**世界里,当提出一个技术问题时,你能得到怎样的回答?这取决 ... -
新学期!新气象
2009-03-02 20:57 1089新学期!新气象 新的一年,新的学期,相信是对自己也是一种新的气 ... -
NetBeans居然不支持sun的jdk
2009-02-12 14:36 1707因电脑中毒(那是相当牛×的毒呀,至今没有彻底的解决方案,病毒是 ... -
第13周 学习总结
2008-12-04 10:58 1034时间过得真快,转眼间有一周过去了,怪不得人们常说日月如梳, ... -
90个冷知识看你知道多少
2008-12-06 22:02 10981.看看你的拉链,如果上面有YKK三个字母,那么说明这 ... -
圣经 创世纪 1:20-22
2008-12-21 07:30 2103中文和合本: 创 1:20 神说:?水要多多滋生有生命的物,要 ... -
第15周(期末)总结
2008-12-22 11:09 1235时间飞逝,转眼就到 ... -
[回顾]清华申请退学博士作品:完全用Linux工作(一)
2009-02-07 12:45 1365按: 尽管我们已经不习 ... -
第14周 学习总结
2008-12-11 16:40 1122真的是时间飞逝呀,一转眼就一周,一回首一周已过去,真是忙碌 ... -
学习那个更重要?(框架、基础)
2009-02-06 19:40 1420买了本J2EE整合开发,网上介绍的不错,自己看了一段时间感觉不 ... -
Java基础知识总结02
2009-02-06 16:19 1129面向对象的特征 1.抽象 ... -
Java基础知识总结01
2009-02-06 15:44 1763今天闲来聊天,突然发 ...
相关推荐
写Java程序的三十个基本规则
以下是从给定文件摘要出的关键知识点,深入解析了Java编程中应当遵守的各项规则。 #### 命名约定与代码结构 - **类、方法与变量命名**:类名应使用驼峰式大写(如`ThisIsAClassName`),而方法和字段名则应采用...
在 Java 编程中,标识符的命名规则是必须遵守的,否则会导致编译错误。而编程规范是推荐遵守的编程习惯,即使不遵守以上编程规范,也不会导致编译错误。但是,遵守编程规范可以提高代码的可读性和维护性。 需要注意...
Java编程实践中,有些常见的错误和不推荐的做法可能会对程序性能造成影响,降低代码质量,甚至在面试中成为考察点。以下是一些Java编程最差实践的详细解释和改进方案: 1. **字符串连接误用**: - 错误做法:使用`...
Java代码规则是为了提升代码质量和可读性而设立的一套编程标准。这些规则涵盖了多个方面,旨在确保代码的统一性、可维护性和可读性。在软件工程中,良好的编码风格对于项目的成功至关重要,因为它增强了代码的可理解...
JAVA 编程规范是指在编写 JAVA 代码时所遵守的一系列规则和约定,旨在提高代码的可读性、可维护性和重用性。这些规范涵盖了命名、源文件样式、代码编写风格、程序编写规范、Struts 编码规范、注释、编程实践问题等...
《阿里巴巴Java编程规范》是阿里巴巴官方团队为了提升Java开发者代码质量与一致性,降低维护成本而制定的一套详尽的编程指南。这份规范不仅对新手有很好的引导作用,也为经验丰富的开发者提供了良好的编码习惯建议,...
10. **限制与遵守规则**:爬虫需遵守网站的Robots协议,尊重网站的抓取频率限制,避免对目标服务器造成过大压力。 通过这个"java网络蜘蛛示例程序",开发者可以学习如何构建一个基本的网络爬虫,理解网络通信、多...
《JAVA编程规范》 在Java编程中,遵循一套标准的编码规范是至关重要的,它能够提升代码的可读性、可维护性和团队协作效率。良好的编程习惯不仅体现了程序员的专业素养,也是确保软件质量的重要保障。 1. **规范...
在Java编程语言中,规范的命名规则是至关重要的,它不仅提高了代码的可读性,也使得团队协作更为顺畅。以下是对标题“java类与方法命名规则”以及描述中的相关知识点的详细说明: 1. **类(Class)命名规则**: 类...
Java 程序编写规范是指在编写 Java 程序时需要遵守的一些基本原则和约定,以确保程序的可读性、可维护性和可扩展性。本文档将详细介绍 Java 程序编写规范的各个方面。 编写目的 Java 程序编写规范的主要目的是为了...
Java编程语言以其严谨的规范和良好的可读性著称,其中命名规则是其规范的重要组成部分。Java命名规则旨在提高代码的可读性、可维护性和一致性。以下是对这些规则的详细解释: 1. 类(Class)命名:Java类的名称应以...
Java编程规范主要涵盖编程中的命名规则、源程序结构、类和方法的定义与实现等方面。以下是对Java编程规范知识点的详细说明: 1. 命名规则: 1.1 包与类命名: 1.1.1 包结构与类名前缀:Java包命名需带有前缀com,...
标题《Java编程基础.pdf》和描述《Java编程基础.pdf》表明本文档是一本关于Java编程语言的入门级教材,目标读者为初学者。文档的内容包括Java的基本语法,数据类型,变量的声明和初始化,运算符的使用,控制语句(如...
Java开发者在编程过程中应遵循一系列准则,以确保代码的质量、可维护性和团队协作的效率。以下是对这十大基本准则的详细解释: 1. **为代码加注释**:注释是代码的重要组成部分,它们帮助解释代码功能,尤其在团队...
Java编程命名规范为程序员提供了一套行之有效的命名准则,它从包命名、类命名、方法命名、参数命名、变量命名以及常量命名等方面,为整个Java程序的编写提供清晰的指导。 首先,让我们来探讨包命名的规范。包命名在...