전체 글13 이펙티브 코틀린 (TDD, 클린코드 with Kotlin) 8기 - 3,4,5 주차 3주차 미션 회고 - 블랙잭리뷰 1리뷰 2리뷰 3리뷰 4가장 어려우면서도 재밌었던 미션이었다.도메인 용어(?)는 중요하다.블랙잭에는 플레이어의 상태를 나타내는 hit, stay, bust, blackjack 과 같은 개념이 있다.처음 구현할때는 일단 저 용어들을 몰랐고 굳이 저 용어를 사용하지 않더라도 비슷한 의미를 가진 용어를 쓰면 되겠지 라는 생각으로 구현했다. 하지만 리뷰어님이 해당 용어들을 사용하는것을 권장하셨고 이를 다음 작업에서 적용했다.별거 아닌것처럼 보이지만, 해당 도메인에 맞는 용어를 사용함으로써 처음 코드를 보는 사람으로 하여금 더 직관적으로 이해할 수 있게 된다는걸 느꼈다. 현업에서는 협업하는 부서와 함께 도메인 용어들을 미리 정의하고 개발을 진행한다면 훨씬 더 유용할것 같다. 테스.. 2025. 1. 10. 이펙티브 코틀린 (TDD, 클린코드 with Kotlin) 8기 - 2주차 2주차 미션 회고 - 로또리뷰 1리뷰 2리뷰 3리뷰 4객체지향 어려운걸?이번 미션을 진행하면서 가장 많이 받았던 피드백은 "A클래스에서 B클래스로 책임을 위임해보는건 어떨까요?" 였다.코드를 작성할때는 분명 잘 나눴다고 생각했는데, 리뷰어님의 피드백을 받고 다시보니 아쉬운 부분들이 눈에 보이기 시작했다.객체지향은 단순히 사이즈가 큰 클래스를 나누고 메서드를 쪼개는 행위가 아니다. "적절한 객체에게 적절한 책임을 부여" 할 수 있어야 한다. 연습을 위한 과제들이기 때문에 이 기간만큼은 조금 과하다고 느껴지더라도 최대한 원칙에 맞춰서 코드를 작성해보고자 한다. - 최상위 함수에서 모든 기능을 구현하고 하나씩 리팩토링을 통해 분리해볼것.- 너무 추상적이라고 느껴지면 정량적인 지표를 바탕으로 해볼것. e.g) .. 2024. 12. 2. 이펙티브 코틀린 (TDD, 클린코드 with Kotlin) 8기 - 1주차 어떻게 시작하게 됐는가?구직을 위해 채용공고를 보면서 느낀점은 자격요건에 Kotlin이 포함된 공고가 작년보다 눈에띄게 많아졌다는 사실이었다.그래서 새롭게 진행하는 사이드 프로젝트는 Kotlin을 써보기로 결정했다. 책을 통해 문법은 알 수 있었지만 보다 코틀린스러운 코드를 짤 수 있었으면 했고 이를 위해서는 경험자들의 리뷰가 있으면 더 좋겠다는 생각을 했다. 마침 NextStep에 이펙티브 코틀린 8기가 열렸길래 바로 신청을 했다. 여러 후기들을 보았을때 비용이 아깝지 않다는 이야기들이 많았고, 이를 통해 더 빠르게 성장할 수 있을것 같았다. 기간은 총 6주 과정이며 주 1회 3시간 가량의 온라인 강의가 진행된다. 이때 강의는 Jason이 해주신다.이외의 시간들은 매주 주어지는 미션 구현하고 실무자들의.. 2024. 11. 22. 여러 플랫폼에 대응할 수 있는 OAuth 코드로 개선하기 이전 글에서 SpringSecurity가 OAuth 로그인을 처리하는 과정을 디버깅을 통해 학습했습니다. 학습경험을 바탕으로 식도락 프로젝트의 기존 OAuth 로그인 코드를 개선한 과정에 대해 글을 써보려 합니다. 기존의 문제점 카카오 로그인에 의존적이며 확장에 닫혀있는 코드. 새로운 플랫폼을 지원하도록 확장하기 위해서는 요청을 보내는 클라이언트뿐만 아니라 비즈니스로직이 담긴 서비스 클래스까지 변경이 발생합니다. 또한 추가적으로 작성해야되는 클래스가 너무 많이 필요합니다. Properties 클래스의 주입. 기존의 서비스 코드에서는 카카오api 사용에 필요한 정보를 담은 KakaoProperties 클래스를 직접 주입받아서 사용하고 있었습니다. 즉, 새로운 플랫폼을 지원할때마다 주입받아야하는 클래스가 늘.. 2023. 6. 4. SpringSecurity가 OAuth 로그인을 처리하는 과정 파헤치기 서론 저는 이전에 참여했던 사이드 프로젝트 에서 OAuth 로그인 개발을 담당했습니다. 그리고 이번에 프로젝트 리팩토링을 계획하면서 가장 마음에 안들던 로그인 관련 코드를 개선하기로 결정했습니다. 최초 기획에서는 카카오 로그인만을 사용하기로 했기 때문에 카카오 로그인에 맞게 코드를 작성하였고, 현재 로그인 관련 코드는 카카오 로그인에 종속적인 코드입니다. 때문에 새로운 로그인 방식을 도입하기에도 까다로운 상황이라 이번 기회에 OAuth 로그인 관련 코드를 개선하기로 했습니다. OAuth 관련 클래스들을 추상화하기 위해 고민하던 중 SpringSecurity에서는 어떻게 여러개의 플랫폼에 쉽게 대응할 수 있도록 했는지, 실제 내부 동작은 어떻게 동작하는지 궁금해졌고 그래서 디버깅을 통해 내부 동작을 학습해.. 2023. 3. 5. offset과 no offset을 사용한 페이징 성능 차이 분석 서론 최근 진행했던 식도락 프로젝트에서 유저의 피드 목록을 페이징 처리를 하여 제공하는 api를 개발했습니다. 해당 api는 sns 특성상 페이지 단위로 제공하기보다는 무한 스크롤 형식에 최근 작성한 순서로 데이터를 제공해야 했습니다. 페이징 방식을 고민하던 중 offset과 no-offset 방식이 있고 offset 방식을 사용하면 매번 full-scan을 하여 성능적으로 좋지 않다는 것을 알게 되어 개발 당시에는 곧바로 no-offset 방식을 도입하여 개발하였습니다. 하지만 실제로 offset 방식과 no-offset 방식의 성능 차이가 얼마나 나는지 눈으로 확인하기 위해 두가지 방식을 모두 적용하여 성능을 비교해보기로 하였습니다. offset이란? offset 이란 sql에서 조회를 시작할 기준점.. 2023. 1. 6. 이전 1 2 3 다음