본문 바로가기
반응형

전체글510

4. 테스트하기 좋은 코드 - 검증이 필요한 비공개 함수 지난 시간까지 테스트하기 어려운 코드를 어떻게 개선하면 좋을지에 대해 이야기를 나눴다. 1. 테스트하기 어려운 코드 2. 제어할 수 없는 코드 개선 3. 외부에 의존하는 코드 개선 지금까지 글들의 결론은 간단하다. 테스트 하기 어려운 코드와 테스트 하기 쉬운 코드를 분리하되, 테스트 하기 어려운 코드는 최대한 바깥으로 몰아넣는다. 전체적인 방향성은 위와 같이 유지하되, 이번에는 조금 더 세밀한 내용을 보자. 비즈니스 로직을 작성하다보면 무수히 많은 private 메소드/함수들을 생성하게 된다. 이전 글에서도 언급했지만, private 메소드/함수의 테스트 코드는 작성하지 않는 것이 좋을때가 많다. 테스트 코드에서 내부 구현 검증 피하기 그럼에도 불구하고 private 메소드/함수를 검증해야할 경우가 있다.. 2022. 10. 2.
3. 테스트하기 좋은 코드 - 외부에 의존하는 코드 개선 지난 시간에 테스트하기 좋은 코드에 대해 이야기를 나눴다. 1. 테스트하기 어려운 코드 2. 제어할 수 없는 코드 개선 이번 편에서는 테스트하기 어려운 코드를 개선하는 2번째 방법인 외부에 의존하는 코드를 개선하는 방법에 대해 이야기를 해보자. 3-1. 문제 상황 1부 에서 소개했던 cancel() 코드를 다시 보자. export default class Order { ... async cancel(cancelTime): void { if(this._orderDateTime >= cancelTime) { throw new Error('주문 시간이 주문 취소 시간보다 늦을 수 없습니다.'); } const cancelOrder = new Order(); cancelOrder._amount = this._a.. 2022. 9. 27.
가지고 있는 무기로 싸우기 7월에 개발팀 첫 퇴사자가 발생했다. 7명에서 26명이 될때까지 퇴사자가 없다가 처음으로 발생했다. 1년 4개월만에 개발팀 퇴사자가 나온 것이다. 최근에 입사한 팀원들 입장에서는 처음 퇴사자를 만나게 되는거라서 당황스러워 했다. 물론 전혀 영향을 받지 않는 팀원들도 있었겠지만, 흔히 말하는 빅테크 기업으로 이직을 했기 때문에 혼란스러워 하는 팀원도 있었을 것이다. "어? 나랑 비슷했던 저 친구도 저렇게 큰 회사를 간다고? 나도 해볼 수 있겠는데?" 같은 생각도 할 수 있다. 빅테크 기업이 주는 연봉과 복지는 충분히 매력적이기 때문에 이런 생각 자체는 나쁜것이 아니다. 주변을 보면 우리 정도 사이즈의 스타트업, 중소기업들에서 빅테크로 이직하는 일이 시작될때 큰 위기를 겪게 된다. 내실 있는 중~소규모의 개.. 2022. 9. 19.
인프콘 2022 회고 우리 회사에서 첫 오프라인 대형 컨퍼런스인 인프콘 2022을 개최했다. 입사 초기에 대표님인 쭈와 컨퍼런스에 대한 이야기를 잠깐 나누곤 했다. 당시 직원수가 20명+ 일때라 "아 나중에 그런거하면 너무 좋겠네요!" 하고 넘어갔다. 시리즈 C, D쯤 되고 직원수도 100명은 넘어야 그래도 할 수 있지 않을까 생각했다. 워낙 회사의 타이틀을 걸고 하는 컨퍼런스는 그 규모가 컸기 때문이다. 네이버의 Deview 카카오의 ifkakao 배민의 우아콘 토스의 Slash 그래서 "에이 이제 20명 조금 넘었는데 지금은 안되지. 몇년은 지나야 가능하겠다" 생각만 하고 넘어갔다. 근데 파이콘 등 여러 컨퍼런스의 운영진으로 일을 하고, 빅테크의 DR로도 활동을 했던 엘리스의 합류로 컨퍼런스 진행에 급 물쌀을 타게 된다... 2022. 9. 13.
람보르기니와 지프랭글러 슈퍼카의 대명사인 람보르기니는 오프로더의 대명사인 지프랭글러 보다 더 빠른 자동차일까? 이 질문에 대해 당연하게 답을 내리는 사람이 있고, 답을 할 수 없는 사람도 있다. 이 주제에 대해 한번 이야기해보고 싶다. 개발을 시작하고, 그간 사용하던 언어들이 항상 2가지 영역에서 같이 쓰다보니 오해를 일으킬때가 있다. 주로 사용하던 Java의 경우 서버 백엔드에서 사용되지만, 안드로이드 (클라이언트) 에서도 사용 된다. 지금 주력으로 사용중인 JS & TS는 Node 백엔드에서도 사용되지만 웹 프론트 (클라이언트) 에서도 사용 된다. 똑같은 언어 (Java, TS) 지만 구동되는 장소는 완전히 다르다. 구동되는 장소가 다르면 용도도 달라진다. 디바이스당 단일 사용자 (모바일기기, 브라우저)를 처리하기 위한 용.. 2022. 9. 5.
2. 테스트하기 좋은 코드 - 제어할 수 없는 코드 개선 1편 을 통해 테스트하기 어려운 코드에 대해 이야기를 나눴다. 이번 편에서는 테스트하기 어려운 코드 중 첫번째인 "제어할 수 없는 코드를 개선하는 법"을 이야기해보자. 2-1. 문제 상황 먼저 앞에서 보았던 discount() 코드를 다시 보자. export default class Order { ... discount() { const now = LocalDateTime.now(); if (now.dayOfWeek() == DayOfWeek.SUNDAY) { this._amount = this._amount * 0.9 } } } 이 discount() 는 실행할때마다 항상 결과가 다르다. LocalDateTimw.now()의 코드를 보면 알겠지만, 현재 시간은 항상 다르기 때문이다. 그렇기 때문에 실행.. 2022. 9. 1.

728x90
반응형