1.不要在常量和变量中出现易混淆的数字

个人感觉这条在于编程命名的规范性。代码除了给机器看,也要给人看。要写能够结构清晰,命名规范,让人看懂的代码。

字母l作为长整型标志时务必大写 L

2.莫让常量蜕变成变量

java的常量有编译期常量和运行期常量。他们都被static final修饰。引用被static final 修饰的java八种基本类型(int,long,byte,short,float,double,char,boolean)和直接赋值的String类型的地方会被替换成实际值,例如 public static final int a = 1; 引用a的地方会被直接替换成1.基本类型的包装类型不可以。以上几种是编译期常量。

运行期常量是到运行时才能确定值。例如public static final int a = Math.getExponent(32);  a的值需要经过计算才能完成。当然也不是所有经过计算才能得到值的都是运行时常量。

如:public static final a = 1+1; 仍然属于编译期常量。

oracle官方文档第15章28节对编译期常量作了解释。oracle 15-28

书中的例子:public static final int RAND_CONST = new Random().nextInt();  导致RAND_CONST的值是不可预期的。

3.三元操作符的类型务必一致

 public static void main(String[] args) {
int i = 80;
String s = String.valueOf(i < 100 ? 90 : 100);
String s1 = String.valueOf(i < 100 ? 90 : 100.0);
System.out.println(s);
System.out.println(s1);
System.out.println(s.equals(s1));
}

输出的结果为90,90.0,false

造成这种结果的原因是三元操作符是要返回一个类型的结果的,编译器并不允许 条件为真时返回int 为假时返回float,所以三元操作符进行了类型转换。

三元操作符类型转换原则如下

1.若两个操作数不可转换,则不做转换,返回值为Object类型。

2.若两个操作数时明确类型的表达式,则按照正常的二进制数字来转换。int转换为long,long转换为float等。

3.若两个操作数有一个是数字S,另外一个是表达式,且其类型标识为T,那么若数字S在T的范围内,则转换为T的类型,若S超出了T类型的范围,则T转换为S类型

4.若两个数都是字面值(Literal)则返回值类型为范围较大者。

4.避免带有变长参数的方法重载

变长参数的方法重载不推荐使用主要是会对人产生误导。

         public static void sysout(String test) {
System.out.println("1.hello " + test);
} public static void sysout(String... test) {
for (String string : test) {
System.out.println("2.hi " + string);
}
} public static void main(String[] args) {
sysout("xu5hy");
}

输出  1.hello xu5hy

改善Java程序的151个建议(1-4)的更多相关文章

  1. 博友的 编写高质量代码 改善java程序的151个建议

    编写高质量代码 改善java程序的151个建议 http://www.cnblogs.com/selene/category/876189.html

  2. 编写高质量代码改善java程序的151个建议——导航开篇

    2014-05-16 09:08 by Jeff Li 前言 系列文章:[传送门] 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,慘不忍睹是吧.确实 ...

  3. 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)

    编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...

  4. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  5. 编写高质量代码改善java程序的151个建议——[1-3]基础?亦是基础

    原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks The reasonable man adapts himse ...

  6. 编写高质量代码:改善Java程序的151个建议 --[117~128]

    编写高质量代码:改善Java程序的151个建议 --[117~128] Thread 不推荐覆写start方法 先看下Thread源码: public synchronized void start( ...

  7. 编写高质量代码:改善Java程序的151个建议 --[106~117]

    编写高质量代码:改善Java程序的151个建议 --[106~117] 动态代理可以使代理模式更加灵活 interface Subject { // 定义一个方法 public void reques ...

  8. 编写高质量代码:改善Java程序的151个建议 --[78~92]

    编写高质量代码:改善Java程序的151个建议 --[78~92] HashMap中的hashCode应避免冲突 多线程使用Vector或HashTable Vector是ArrayList的多线程版 ...

  9. 编写高质量代码:改善Java程序的151个建议 --[65~78]

    编写高质量代码:改善Java程序的151个建议 --[65~78] 原始类型数组不能作为asList的输入参数,否则会引起程序逻辑混乱. public class Client65 { public ...

  10. 编写高质量代码:改善Java程序的151个建议 --[52~64]

    编写高质量代码:改善Java程序的151个建议 --[52~64] 推荐使用String直接量赋值 Java为了避免在一个系统中大量产生String对象(为什么会大量产生,因为String字符串是程序 ...

随机推荐

  1. 原生态js单个点击展开收缩

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 【maven】---pom.xml-dependencies

    前言 Maven在做项目开发的时候,需要用到多个jar包,这个时候,maven提供的中央仓库,就会根据依赖项,自动download需要的jar包,自动引用到项目中. 内容 具体依赖配置,集中在pom. ...

  3. [ActionSprit 3.0] FMS客户端调用服务器端命令或方法

    有时候客户端需要和服务器端进行通信,服务器端会有个main.asc文件(当然,文件名可以自己定义),这个就是服务器端程序,是在服务器上执行的,你可以用trace调试,trace的内容会在管理服务器的页 ...

  4. [sloved] IDE JavaServlet "Error: Could not find or load main class Servlet"

    [ sloved ] JavaServlet "Error: Could not find or load main class Servlet" 报错内容: 提供一份 Servl ...

  5. 基于KMP与Levenshtein模糊匹配算法的银行联行号查询

    在人民银行那里,每个银行的每一个营业网点都有自己唯一的银行联行号,根据这个号码能快速定位一间银行具体的分支行,就像根据一个身份证号码能快速确定一个人一样.例如汇款时,汇款单上要求填写收款人开户行,然后 ...

  6. 2019.2.15 t2

    考虑倒过来计算最短路径长度,设dis[u]表示在最坏情况下,点u到最近的一 个出口的最短路,则p个出口的dis值都是0,答案即为dis[0]. #include <cstdio> #inc ...

  7. POJ3322Bloxorz I

    POJ3322 Bloxorz I 暴搜,next数组与处理一下(小技巧) #include <cstdio> #include <iostream> #include < ...

  8. 使用 WebClient 來存取 GET,POST,PUT,DELETE,PATCH 網路資源

    WebClient 基本資訊 提供通用方法使用 WebRequest 類別傳送及接收 URI (支援 http:, https:, ftp:,和 file: ) 的資源 Namespace:Syste ...

  9. HTML中title前面小图标和网站收藏现实的图标

    网站上的logo实际上是一个“favicon.ico”图片.实现步骤:第一步:制作favicon.ico,大小为16*16毫米:第二步:将“favicon.ico”放到项目的根路径下. 第三步:在所有 ...

  10. windbg调试驱动程序

    不正确之处欢迎指正,高手勿喷~ 配置windbg路径 Symbol path:SRV*F:\Windows\symbolxp3*http://msdl.microsoft.com/download/s ...