Java8 Stream 참고

프로그래밍 2021. 1. 21. 17:35

NPE을 방지하기 위한 entity to dto 처리 방법

프로그래밍 2021. 1. 21. 16:17

1. Optional entity to dto

return Optional.ofNallable(entity)
       .map(Entity::convertToDto)	//Entity.convertToDo() 수행한 결과를 리턴
       .orElse(null);

Mapping

맵(map)은 스트림 내 요소들을 하나씩 특정 값으로 변환해줍니다. 이 때 값을 변환하기 위한 람다를 인자로 받습니다.

<R> Stream<R> map(Function<? super T, ? extends R> mapper);

스트림에 들어가 있는 값이 input 이 되어서 특정 로직을 거친 후 output 이 되어 (리턴되는) 새로운 스트림에 담기게 됩니다. 이러한 작업을 맵핑(mapping)이라고 합니다.

 

 

2. 삼항연산 entity to dto

return !ObjectUtils.isEmpty(entity) ? entity.convertToDto() : null;

 

3. if entity to dto

if(!ObjectUtils.isEmpty(entity)){
	return entity.convertToDto();
}else{
	return null;
}

 

p.s. IDE에서 제공하는 @Nullable, @NotNull 어노테이션도 있으니 필요하면 구글링 추가.

 

 

참고1 www.daleseo.com/java8-optional-before/

 

자바8 Optional 1부: 빠져나올 수 없는 null 처리의 늪

Engineering Blog by Dale Seo

www.daleseo.com

 

참고2 www.daleseo.com/java8-optional-after/

 

자바8 Optional 2부: null을 대하는 새로운 방법

Engineering Blog by Dale Seo

www.daleseo.com

참고3 www.daleseo.com/java8-optional-effective/

 

자바8 Optional 3부: Optional을 Optional답게

Engineering Blog by Dale Seo

www.daleseo.com

 

 

 

2019.06.26 Scrum workshop

Agile 2021. 1. 18. 17:29

1. Scaled Agile framework (SAFe)

 

2. Agile manifesto (4대 선언문)

   - 공정과 도구보다 '개인과 상호작용'

   - 포괄적인 문서보다 '작동하는 소프트웨어'

   - 계약합상보다 '고객과의 협업'

   - 계획을 따르기보다 '변화에 대응하기'

 

3. 12가지 원칙

 

4. Waterfall vs Agile

  - topdown vs 증분형 개발

 

5. Scrum 근간

 - Lean (낭비를 줄이자)

 - agile 은 프로젝트 자체를 '복잡 적응계'로 인식한다.

 

6. Agile 구성

  - Kaizen

  - Agility

  - Lean

  - Collaborationm

  - Feedback

  - Culture

 

7. Complex : 요소가 많아서 복잡한 ~

    Complicated : 풀기 어려운 ~

 

8. Doing Agile 보다 Being Agile 이 중요하다. (개념 및 문화의 변경이 우선임)

 

9. Agile을 수행할 수 있는 기본 지식이 필요하다.

 - Scrum Guide 책 읽어보기

 - Scurm 정의 : '경험주의 기반'

 - 반복형태 : Sprint (2주 ~ 2달주기)

 

10. 3대 핵심

 - 투명성 : 팀원들이 어떤 일을 하는지 알아야함

 - 검사 : 산출물에 대한 체크 (변경사항 확인)

 - 적응 : 변화에 대한 적응 (진행중인 작업 조정)

 

11. Scurm Value

 - 용기 : 윗사람에게 확실히 말하는 용기

 - 집중

 - 약속

 - 존중 : 자신의 일이 끝나고 노는게 아닌 Pull 하기

 - 개방성

 

12. Scrum Of Scrum (SOS)

 - Scrum Master 끼리의 미팅

 

 13. User Story

 - Product backlog 에서 기능 요구사항을 Story 형태로 기술

 - (누가) (비즈니스 가치)를 위해 (어떤 기능)을 원한다.

 - User Story를 만족시킬 수 있는 Acceptance Criteria(수용기준)이 존재해야한다.

 

14. Story Point

 - User Story의 Size를 측정하는 단위 (공수와 비슷한 개념)

 - 절대적 단위인 M/D나 시간을 쓰는 것이 아닌 상대적 단위인 Point를 사용함.

 - 경험으로 인해 Story를 빨리 처리할 수 있다고 해서 Point 를 적게 측정해서는 안된다!

    > 매 Sprint 혹은 회고미팅 때 팀원들간의 의견 조율로 Point를 재측정한다.

 - Story Point를 실제 공수로 변환이 필요하다.

    > 사람마다 Point에 따른 투입 공수가 다르기 떄문에 팀에서 역량이 중간이 사람 기준으로 정해야한다.

 - Planning Poker를 통해 Point를 측정한다

 

15. Daily Meeting

 - 매일 아침 15분 미팅을 진행한다

    > 어제 무엇을 하였는가

    > 오늘 무엇을 할 것인가

    > 오늘 작업 진행에 있어 걸림돌이 무엇인가

 

16. Scrum은 경험주의 이론에 기반

 - Framework에 따라 진행한다

 

17. Agile 적함도 평가로 업무가 Agile에 적합한지 판단이 가능하다.