解决方案 »
- eclipse 中使用servlet 显示404错误
- 在web应用中ffmpeg的问题
- mysql存图片问题
- 请大家帮忙,我用的dbcp的连接池写的一个中间件,有一个WEB服务器所有数据库操作都通过中件件连接数据库,但是发现监听日志一直记录连接!
- 做java开发一定要先做软件维护吗?
- 奇怪的中文问题!高手请进!我都快疯了
- 如何处理一个高访问量站点多台Web应用通用Session?
- 为什么我的BEAN不能访问?
- servlet与access数据库连接的问题?
- 对于防止低级错误如:变量名写错,漏括号等有什么好的建议?(给分)
- JavaWeb Tomcat 怎样实properties文件的实时加载?
- 一个项目可以又用hibernate 又用ibatis 吗?
double getPay(){
if(isA) {
return getA();
}
else if(isB) {
return getB();
}
else if(isC) {
return getC();
}
else {
return getD();
}
}
double getPay(){
if(isA) {
return getPayIsA();
}
else if(isB) {
return getPayIsB();
}
else if(isC) {
return getPayIsC();
}
else {
return getPaydefault();
}
}
if(booleanStatus.getIsA) {
return getPayIsA();
}
else if(booleanStatus.getIsB) {
return getPayIsB();
}
else if(booleanStatus.getIsC) {
return getPayIsC();
}
else {
return getPaydefault();
}
}
if(booleanStatus.getIsA()) {
return getPayIsA();
}
else if(booleanStatus.getIsB()) {
return getPayIsB();
}
else if(booleanStatus.getIsC()) {
return getPayIsC();
}
else {
return getPaydefault();
}
}
{
case isA:return getA();
case isB:return getB();
case isC:return getC();
case isD:return getD();
}
有时为了达到极致的速度,必须得把一些if语句提前,甚至立即return回去
有时为了达到今后很容易添加业务逻辑,需要引入”查表法“;甚至把业务逻辑剥离到程序之外,保存到数据库或者xml等文件里去,达到不改动程序的逻辑,只修改外部数据就能满足经常变化的业务
所以,一句话不反问肯定是不行的至少要考虑变量命名的问题、注释的问题,代码简洁性的问题,以展示你平时良好的编程习惯
另外,现代的Java IDE都有把代码重新布局的快捷键,记得用一下
至于是否需要追加异常处理,追加日志处理,就需要和面试官交流了下面的代码仅仅是抛砖引玉,实际项目中写成这样会被项目负责人批评的……/**
* Created by 日知己所无 on 2015/03/13.
*/
public class GetPay {
private boolean isA;
private boolean isB;
private boolean isC; /**
* 取得工资金额
*
* @return 工资金额
*/
double getPay() { // 【可以考虑把isA isB isC作为参数传递进来,以减少对其他变量的依存,降低耦合度,便于以后维护】
// 【原来的代码比较严重的问题是使用了不容易让人理解的A B C D这样的变量】
// 【所以上来要先询问一下面试的人:具体的含义,比如初级工程师,中级工程师,高级工程师,工程师以外的员工等,把名字先定好】
double result = 0.0; // 返回值:工资金额【一般来讲,给变量赋上初始值被视为比较好的编程习惯】
// 【如果需要考虑运行效率的话,对于if语句,一般要把最常用判断放在最前面】
// 【比如有5000名员工,其中4000名是中级工程师,如果需要快速运算,那么就要考虑把中级工程师那个判断移动到最前面】
// 【只要有这个意识就可以,具体怎么做可以询问面试官】
if (isA) { // 【对于if语句,后面的花括号是必须加的。不加虽然暂时没有问题,但是以后如果又追加代码时,很容易出现问题】
result = getA();
} else if (isB) { // 【不论是美观还是运行效率,else if都优于原来的写法】
result = getB();
} else if (isC) {
result = getC();
} else {
result = getD();
}
// 【这个例子相对还是比较简单,对于及其复杂的情况,可能得考虑把变量和方法放到一个数组中,然后根据查表法来提高代码的可读性和可维护性】
return result;
} private double getA() {
return 0.0;
} private double getB() {
return 0.0;
} private double getC() {
return 0.0;
} private double getD() {
return 0.0;
}
}