一道笔试大题,看看大家怎么优化

bryant_natian 发布于 2013/08/13 16:08
阅读 937
收藏 1
A simple Calculator class that's wired up as a spring bean in a web application: 


public class Calculator { 


        int result; 


        public int addTwoNumbers(int first, int second) { 


            result = first + second; 
                    return result; 
                } 



What can potentially go wrong with this? 
加载中
0
Beyond-Bit
Beyond-Bit
public class Calculator {  

        public int addTwoNumbers(int first, int second) {  

            return first + second;  
                   
           }  
}  
IdleMan
IdleMan
0
兮风古道
兮风古道
同步  必须的
0
朱坤朋
朱坤朋
这个线程不安全,spring默认是单例的,result值可能被别的线程更改
0
徐迎龙
徐迎龙
volatile int result;  


        public synchronized int addTwoNumbers
0
MangoKingX
MangoKingX
private int result
0
乌鸦哥
乌鸦哥

引用来自“Beyond-Bit”的答案

public class Calculator {  

        public int addTwoNumbers(int first, int second) {  

            return first + second;  
                   
           }  
}  
+1
0
优雅先生
优雅先生

引用来自“巴郎”的答案

引用来自“Beyond-Bit”的答案

public class Calculator {  

        public int addTwoNumbers(int first, int second) {  

            return first + second;  
                   
           }  
}  
+1

1、如果是这样的话,那么方法最好还要被static修饰下

2、考虑溢出

3、如果追求效率,可以缓存一些最近频繁进行的运算,比如最近1+1等于2计算得很频繁,那么缓存起来,不需要每次都计算(当然对于加法这种计算优势不是很大)

4、既然是计算器类,不应该只有一个加法啊。如果确实只有一个加法的话,那么类名就该叫加法器Summator

5、....

0
honganan
honganan
public class Calculator {    

        public static int addTwoNumbers(int first, int second) {    

            return first + second;    
                     
        }    

这样会不会好点

xue777hua
xue777hua
前面什么同步这个那个的 都不好 KISS原则,这个是最好了~
0
l
littledoo
这不是优化了,是个错。
这个等于一个函数有了两个出口,不是结构化编程思想,大大地不合适。
这种情况甚至编译器都应该警告。
0
ByteSun
ByteSun
这是典型的线程安全问题,解决方法有N种.用ThreadLocal, 加synchronized等.
返回顶部
顶部