系统集成
  TEZNKK3IfmPf 2023年11月12日 63 0

1、减少因包装引起的调用工作量。

具体来说,就是包装时应该减少不必要的调用工作量,对原产品的调用方式和返回的结果不因包装了一层而改变,即包装器完全是一个中间人。

来看看下面这样的例子:

@Override
public CloseableHttpResponse getHttpResponse(List<String> paramsInUrl, Object paramsInBody, XxRequestEnum xxRequestEnum, String servletPath,String xauth) throws IOException {
// 通过传入url和各种参数,直接返回响应结果的方式
}

中间人不参与拆开请求,也不参与拆开结果直接返回。

2、在调用外部系统的时候,如果有无限期等待或者CAS,需要设置超时时间

简单来说就是,如果出现死循环,且死循环的跳出条件来自于外部,那么这个死循环就需要设置超时时间。

来看看下面这个例子:

while(true){
try{
Thead.sleep(1000);
}catch(Exception ex){
}
String x = getX(); // getX()是一个集成的外部产品的状态
if(x.equires("completed") || x.equires("aborted")){
break;
}else{
continue;
}
}

上面调用系统集成

@startuml
start

end
@enduml

目前idea支持比较好的有puml,通过安装plantuml plugin的方式,可以让你写的uml,直接有图可看。

4、如果有直接利用的数据来自于外部(同样适用于来自于数据库,文件等存储方式),需要判断是否合法,从而避免出现不必要的异常。

这个点其实延展于开发者对编程中需要判断数据合法性的意识。在我们的编程中,通常需要对数据进行判NULL和判空处理。看似无迹可寻的判断,其实可以理解为,当使用的数据来自外部,包括另一个class/存储/外部模块,即非本身class的时候,都需要处理。

处理的方式有很多种

1、利用assert()对结果进行判断,如果非法就会抛出异常。此时必要的是,当前你的代码必须有对异常处理的函数
2、字符串可以使用common3的StringUtils.isBlank()方法进行判断,当然,这个方法等价于对NULL和空值的判断。
3、直接对null进行判断就行了

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年03月29日   128   0   0 sed数据
  TEZNKK3IfmPf   2023年11月15日   32   0   0 数据redis
TEZNKK3IfmPf