Software_programming_summarize_stu

2019-12-06

1.subject : Java standard code

https://mp.weixin.qq.com/s/MDrTKTVj0UVQetPPG6mmqA

  1. DTO 规范定义及相应的良好实践
  2. 结合 Generation 进一步抽象, 抽象出接口,规则化类似的操作。
  3. 要结合工具类,如果已存在轮子,扩大知识面。 GUAVA 源码转换。
  4. 语义转化
  5. 结合 JSR303 进一步, hibernate 转化

1) 使用 BeanUtils.copyProperties(source, target) 进行两个对象的属性复制。

  一个浅拷贝方法, 复制属性时,只需要把 DTO 对象和要转化的对象两个属性值设置为一样的名称,并保证

一样的类型就可以了。

DTO 转化的时候可替代 set 进行属性赋值。

2) UserInputDTO 从前端到达系统内部, 转换为 User entity,  

    第一部分 外部数据转换为 User entity, 

    第二部分 Service 将其保存 , 但 API 不应该直接返回 User entity, 会暴露太多实体相关的信息。 这样的返回值不安全。

   等应该返回 DTO对象, 

   User user = new UserDTOConvert().convertToEntity(userInputDTO);

   User saveUserEntity = userService.addUser(user);

   UserOutputDTO result = new UserOutputDTOConver().converToSafe(saveUserEntity);

 

 

2. subject: exception

API 提供给前端调用, 前端验证失败,或 通过特殊渠道, 如 Charles 进行抓包,直接将数据传入 API, 会产生错误数据。

  

 需要将验证结果传给前端,异常应该转化为一个 api 异常, 带有错误码的异常

BindingResult

 



2019-12-10

Entity 可以为空,但是 xxxDTO 不能返回null, 尤其时 Rest 接口返回的这种 DTO。

处理 Null 的优雅方法

  1. 增加接口的可读性,Optional 返回单值
  2. 集合没有数据返回时,返回空集合
  3. JSR 303, 添加条件约束。

对于空值的处理

接口

1 import java.util.List;
2 import java.util.Optional;
3 
4 public interface UserSearchService {
5 
6     Optional<User> getOptional(Integer id);
7 
8     List<User> listUser();
9 }

 

 

 

 1  public void shouldConvertDTO(){
 2         PersonDTO personDTO = new PersonDTO();
 3 
 4         Optional.ofNullable(getPerson()).isPresent(
 5                 person->{
 6                     personDTO.setDtoName(person.getName());
 7                     personDTO.setDtoValue(person.getValue());
 8                 }
 9         );
10     }
11 
12     private Person getPerson(){
13         return null;
14     }

 

 

注意:

 

Optional 不能作为入参的参数!

Optional<User> userOpt = ...

1. 不能直接使用get, 会失去 Optional 本身的含义

 2. 不要直接使用 getOrThrow, 如果有这样的需求:获取不到就抛异常,需要考虑是调用的接口设计是否合理。

 

当使用值为空的情况,并非源于错误时,可以使用 Optional.

Optional 不要用于集合操作。

不要滥用 Optional, 比如 java bean 的 getter 中。

 



2019-12-25

html 路径

/ 根目录

./ 当前目录

../ 父级目录



 

2019-12-25

Important : 

Javascript BDD jasmine

https://codeload.github.com/jasmine/jasmine/zip/master

 

posted @ 2019-12-06 10:22  君子之行  阅读(21)  评论(0)    收藏  举报