您的位置:首页 > 编程语言

新手写代码的经验教训小结

2015-04-10 09:12 190 查看
最近,尝试了写了两个小程序,是微型信息管理系统(没做各种异常捕获),每个才短短三百行,却出现了几个问题,好在现在都已解决了。趁着还有点记忆,就把这些经验或教训写下来,警示自己,若也能警示到浏览过本文的新手朋友们,也是极好的。

1.一个非常易犯的错误是:相似代码复制粘贴后,却忘了修改其不同点!这点我深有体会,一开始做日历的时候就是这个害我出错了,后来做信息管理系统的时候也是这样,让我debug了很久。

2.数组使用必须十分小心:使用前要确保至少已经定义了其长度。不然要么越界要么空指针,你就等着郁闷吧。

3.关于全局变量和局部变量:我的小程序里在名为“Match”的方法里已经显示k不为零,但在调用这个方法的方法里却显示k始终为零。原因在于在Match方法里给全局变量k清零的时候我写成int k=0了,这样就表示我定义了一个局部变量int k,而局部变量优先级高使得同名全局变量被屏蔽了,这样导致在其他方法里,全局变量k值始终都未更改过!明白道理后,改成k=0就好了。

4.关于异常的finally语句:初学者往往以为是可有可无的东西,要么只是简单的输出提示信息。其实可以做的事情很多,比如不论操作是否成功都要关闭数据库,比如捕获异常后重新加载程序入口。finally {     load();       choose = input.nextInt();    default: throw new Exception();

5.关于input.next()和input.nextInt():nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法将键盘输入赋值给下一个数。经过验证,我发现其他的next的方法,如double nextDouble()  , float nextFloat() , int nextInt() 等与nextLine()连用时都存在这个问题,解决的办法是:在每一个 next()、nextDouble()  、
nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。

6.关于接口:一个抽象类,其属性是接口,抽象类的方法都是具体方法,是不是有些高大上。

7.关于局部变量和静态变量的原则:出于性能上的考虑,最好只将那些改动比较少的设为全局变量。

8.Socket编程切记:输入流和输出流的顺序非常非常重要!

9.while和try catch的顺序是while在外,try-catch相当于if-else在内。

10.不要迷信强制转换:设想如下片段:Object   o = 4;      int   i  =  (Integer)o;        System.out.println(i==4?4:5)      毫无破绽,也能输出4.

                                         但是在实际中你最好老实点:int   i = Integer.parseInt(o.toString())     System.out.println(i==4?4:5)   否则你会收到莫名其妙的cast exception.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: