java如何抽出大量重复代码
2023-01-10阅读(679)
问:JAVA代码如何用继承提取出重复代码,优化代码冗余
- 答:重新写个方法,把你选中的放进去,用到的时候调用下就好,重写写的方法最好是static修饰的,这样就能直接用类名调用了,比如
public class A{
public static void b(){
//这里放你那些代码
}
}
以后要用的话就是A.b()就可以用了 - 答:把方法移到父类中去。
- 答:你是用eclipse吗,选中代码。按ALT+Ctrl+M
- 答:把它封装成一个静态方法, 把字符串传入即可, 返回类型为通用类型即可,需要的地方 直接 类名+方法名 即可
- 答:定义一个BaseSpringController
public class BaseSpringController {
public ModelAndView get403Error(String usertype) {
if(!"superuser".equalsIgnoreCase(usertype) && !"manager".equalsIgnoreCase(usertype)) {
return new ModelAndView("errors/403","reso")...
}
}
}
public class ImportParticipators extends BaseSpringController {
//直接调用就可以了
return get403Error(xx);
} - 答: public class ImportParticipators{
@RequestMapping(value = "/importParticipators" , method = RequestMethod.GET)
public ModelAndView showImportParticipatorsView(){
String userType = (String) session.getAttribute("usertype");
if(isUserType(userType)){
return new ModelAndView("errors/403","","")
}
}
private Boolean isUserType(String userType){
if(!"superuser".equalsIgnoreCase(userType)&&!"manager".equalsIgnoreCase(usertype)){
return true
}else{
return false
}
}
}
下次最好吧代码粘出来 别搞图片 打着太费劲了
问:我想把这段java代码封装,重复代码太多了
- 答:你把重复的代码提取出来封装成一个方法不就是了,无非就是
private void SendData(int screenid,int controlid,String info)
{
UpdateTextData data=new UpdateTextData();
data.setScreen_id(screenid);
data.setControl_id(controlid);
data.SetStrings(info);
List<Byte>.......
RS232.write.......
}
之后在你的popupAlertWindow里就可以写
SendData(7,5,String.valueOf(code));
SendData(7,5,type);
SendData(7,5,info);
问:java 什么是把方法抽取出来
- 答:把方法抽出来就是将实现一个功能的代码放到一个方法中,然后在要执行该代码的地方调用你定义的方法,这样看起来就不会觉得代码很难看!比如一个将字符进行编码的功能的代码统一放到一个函数中,传入参数,返回编码后的结果。
- 答:就是重构->抽取方法,简单来说就是把部分相关代码抽取出来成为一个方法,原来代码的位置改由调用该方法来代替。
如果你使用如Eclipse这种IDE,你可以通过选择要抽取的代码,鼠标右键选择重构->抽取方法,按照步骤给方法命名,确认,IDE就会帮你自动地把代码抽取出来形成一个私有的方法,原来的位置就会被调用这个方法的代码代替。
虽然操作步骤很简单,也就是把代码换个位置写,但实际隐含着程序设计的合理性和细粒度的考虑:
很明显你的代码里有超长的方法,一般方法会控制在10行以内,超过10行就可以认为有代码是可以提取出来成为公用方法的。超长的方法常常意味着高耦合、低内聚,重用性差和该类的职责太多。举个例子:
你的Servlet方法可能干了很多响应用户的操作,但有可能Servlet的另一个方法需要做其中一部分相同的操作,或者另外一个Servlet(一个Web应用有多个Servlet很正常)也需要同样的操作,更甚是一个本地的控制台应用程序(Servlet是属于会话层的,桌面应用程序一般不需要会话层)也需要做同样操作。这时候你会发现写在你的Servlet的代码只能拷贝到另一个程序中,或者压根就得重写,效率很低而且这样你的代码里会有很多重复代码...以后改一下就得改3个地方,不可维护的代码就是这样来的。同时你的超长方法也是难以理解的。
如何把握好程序的合理性需要很多的经验和设计技巧,这里就不提及了。有兴趣可以向着面向对象程序设计这个方向钻研。 - 答:我觉得你老师的意思是,你的servlet里边有很多方法其实并不是属于servlet这个范畴的,你可以把这些方法弄出来放到新建一个类当中,然后在servlet中调用这些方法,而不是直接在servlet中直接写出这些方法.这样会使得你的代码更清晰,可读性更好一点.另外可以把你的servlet发上来让大家看一看.
- 答:就是把实现某一部分功能的代码,单独写到一个方法里,然后再调用这个方法。这样把代码提取之后,便于阅读。
- 答:调用servlet里面的方法名就可以了. .