[test code 하면서 겪은 생각]
처음에 테스트 코드를 작성할 때
1. 서비스 로직에서 예외처리가 되어 있는 부분과 데이터 입력이 잘못 되었을 때 생길 수 있는 부분이 잘 작동하는지 위주로 작성
2. 각 클래스별로 해당 되는 메소드로 테스트 코드 작성
이렇게 생각하고 테스트 코드를 작성했다.
테스트 코드를 작성하면서 같은 예외처리인데 중복되는 부분이 있는 것을 보고 궁금해졌다.
1. 그저 데이터를 찾아오는 부분인데 메소드로 정리해야할까?
2. 추가적인 기능들을 구현하면 같은 예외처리를 하는 코드가 여러 군데에서 중복이 되기도 할텐데 메세지를 변경해야하는 상황이 오게 되면 하나하나 수정하는게 불편할 수 있으니 그럼 차라리 처음에 만들때 메소드로 만들어야하지 않을까?
고민을 하다가 앞으로 계속 기능을 추가하거나 같은 에러 메세지를 수정할 때 여러 곳에서 수정을 해야 할 가능성을 열어두면 하나하나 수정하는 것이 유지보수성이 떨어질 것 같아 메소드로 코드를 정리하였다.
(사실 피드백을 받고 난 후, 현 상황에서는 예외를 나타내는 해당 코드에 찾아오는 것 이외의 추가적인 비즈니스 로직이 없기 때문에 따로 메소드를 만드는 것은 불필요할 수도 있다는 피드백을 받았다. )
사실 아직도 고민ing다.
정확한 내 기준이 세워진 것 같지는 않다. 앞으로도 계속 고민을 해야 할 것 같다.
[spring webflux 서서히 접근 공부법..]
이번에 새로운 코드를 보면서 메소드에서 반환하는 값의 형태가 mono와 flux인 것을 처음 보았다.
뭔가 mono는 하나이고 flux 여러개의 값을 반환할 수 있는 타입이 아닐까 하는 생각이 들었지만 아무것도 모르는 상태였기 때문에..
인터넷을 뒤적거렸다.
mono는 0~1개를 생성 할 수 있는 리액티브 스트림이고
flux는 0개부터 여러개의 요소를 생성할 수 있는 리액티브 스트림, iterator이다.
리액티브 스트림이란?
reactive streams는 리액티브 프로그래밍의 명세이고,
reactive Streams에 정의 된 인터페이스를 구현하면 "리액티브 프로그래밍"을 구현할 수 있다.
리액티브 프로그래밍이란?
"리액티브 프로그래밍"은 변화의 전파와 데이터 흐름과 관련된 선언적 프로그래밍 패러다임이다.
변화의 전파와 데이터 흐름은 데이터가 변경 될때마다 이벤트를 발생 시켜서 데이터를 계속적으로 전달한다.
그래서 데이터가 변화할때 이벤트를 발생시키는 프로그래밍으로 이해를 했다.
(혹시나 잘못 이해했다면 댓글 달아주세요..ㅎㅎ)
reactive streams의 인터페이스
processor / publisher / subscriber / subscription
[진짜중복 / 가짜중복]
이번에 새로운 프로젝트를 만들면서 중복되는 코드들을 어떻게 정리를 할지에 대한 고민을 많이 했다.
그래서 다른 개발자분들과 중복 코드를 어떤식으로 처리를 하시는지
해당 처리방식을 사용하시는 이유는 무엇인지에 대한 이야기를 많이 했다.
그러다가 진짜 중복과 가짜중복에 대한 이야기가 흘러지나갔다.
그래서 가짜중복은 어떤 중복을 의미하는 것일까? 하는 생각을 하다가 찾아보니
진짜 중복 - 한 인스턴스가 변경되면 동일한 변경을 모든 복사본에 적용
가짜 중복 - 변경 되어도 코드중복이었던 다른 코드에 영향을 미치지 않는 것(다른 코드도 변경하지 않아도 되는 중복코드)
진짜 중복과 가짜 중복을 이런 식으로 이해를 했다.
중복코드는 다 같은 중복코드지..라는 생각을 했는데 진짜 중복과 가짜 중복에 대한 개녕을 듣고 생각을 하다보니
오홍...그렇게 생각할 수도 있는 거구나 새로운 정보 얻었네ㅎㅎ하는 생각이 들어서 좋았다.
[마지막 마음가짐]
아직 공부해야할 것도 많고 적응해야할것도 많아서 마음만 앞서고, 몸은 못따라가고...ㅋㅋ
체력충전을 해야할 때도 마음을 놓지 못해 정신적, 체력적으로도 많이 지치지만
이 시간들을 넘기고 나면 한뼘 더 성장하고 더 나은 내가 되어 있기를 바라면서 오늘도 열심히 성장을 위해 노력하자...ㅎㅎ
오래하려면 체력관리도 해야한다는걸 뼈져리게 느끼고 있어서 운동도 시작해야겠다..
[공부를 위해 참고한 자료들]
우아한형제들 spring webflux
https://www.youtube.com/watch?v=2E_1yb8iLKk
Project Reactor 4. Flux, Mono
https://brunch.co.kr/@springboot/154
https://sjh836.tistory.com/185
reactive stream
'Weekly I Learnd' 카테고리의 다른 글
[W.I.L]CommandLineRunner, ApplictionRunner (0) | 2021.11.28 |
---|---|
[W.I.L]ThreadPoolExecutor (0) | 2021.11.28 |
[W.I.L] 개인공부 (0) | 2021.06.28 |
[W.I.L] 15주차 모의면접 주차(feat. 항해99 마지막 주차) (0) | 2021.06.06 |
[W.I.L]13주차 (실전프로젝트 5주차)(feat.항해99) (0) | 2021.05.30 |