Loading

编写高质量代码

 

 

  • 三元操作符的类型务必一致
int i = 80;
String s = String.valueOf(i < 100 ? 90 : 100);
String s1 = String.valueOf(i < 100 ? 90 : 100.0);
System.out.println("两者是否相同:" + s.equals(s1));
//返回false

 

  •  带有变长参数的方法
public int sum(int... args) {  
    int result = 0;  
    for (int value : args) {  
        result += value;  
    return result;  

 

  •  警惕自增的陷阱
int count=0;
for(int i=0;i<10;i++){
  count=count++;  
}
System.out.println(count);

 本意是希望count自增的,结果却掉入java自增的陷阱中。解决方法很简单,把“count=count++”修改为“count++”即可。

该问题在不同语言中有不同的实现:C++中“count=count++”与“count++”是等效的,而在PHP中则保持着与java相同的处理方式。

 

  •  易变业务使用脚本语言编写
// 获取JavaScript的执行引擎
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
        // 建立上下文变量
        Bindings bind = engine.createBindings();
        bind.put("factor", 1);
        // 绑定上下文,作用域是当前引擎范围
        engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
        Scanner input = new Scanner(System.in);
        while (input.hasNext()) {
            int first = input.nextInt();
            int sec = input.nextInt();
            System.out.println("输入参数为:" + first + "," + sec);
            // 执行js代码
            engine.eval(new FileReader("D:/Desktop/model.js"));
            // 是否可调用方法
            if (engine instanceof Invocable) {
                Invocable in = (Invocable) engine;
                // 执行js中的函数
                Double result = (Double) in.invokeFunction("formula", first, sec);
                System.out.println("运算结果:" + result.intValue());
            }
        }

 

function formula(var1,var2){
    return var1 * var2 * factor;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2012-12-12 10:01  街头诗人  阅读(280)  评论(0编辑  收藏  举报