궁금증 6

코드 커버리지(Code Coverage)란 무엇일까?

오늘 코드를 테스트하면서 "내가 작성한 테스트가 얼마나 효과적으로 작동하고 있을까?"라는 생각이 들었습니다. 이 질문에 답을 찾던 중, 코드 커버리지(Code Coverage)라는 개념을 알게 되었고, 이를 공부하며 배운 점들을 정리해 보았습니다.1. 코드 커버리지란?코드 커버리지는 테스트 코드가 애플리케이션의 소스 코드를 얼마나 실행했는지를 측정하는 지표입니다. 즉, "테스트가 코드의 몇 퍼센트를 실행했는가?"를 숫자로 나타내는 도구라고 이해하면 됩니다.예를 들어, 100줄짜리 코드 중 테스트가 70줄을 실행했다면, 코드 커버리지는 70%입니다.코드 커버리지를 측정하면 아래와 같은 질문에 답을 얻을 수 있습니다:테스트가 코드의 중요한 부분을 충분히 검증하고 있는가?테스트되지 않은 코드가 존재하는가?2...

궁금증 2024.12.16

DDD에서 팩토리(Factory)를 왜 사용하는거죠?

도메인 주도 설계(DDD, Domain-Driven Design)를 공부하다 보면 "팩토리"라는 개념을 만나게 됩니다. 팩토리는 단순히 객체를 생성하는 역할을 넘어, 객체 생성 과정에서 발생하는 복잡성을 캡슐화하여 코드의 응집도를 낮추고 가독성을 높이는 설계 도구입니다. 이번 글에서는 제가 이해한 DDD에서 팩토리가 왜 필요한지, 언제 사용해야 하는지, 그리고  실제 예제를 통해 이해하기 쉽게 설명드리겠습니다.1. 팩토리는 무엇인가요?팩토리는 DDD에서 복잡한 객체 생성을 담당하는 클래스나 메서드를 의미합니다. 단순한 객체 생성은 생성자(Constructor)로 충분할 수 있지만, 다음과 같은 상황에서는 팩토리를 사용하는 것이 더 적합합니다:객체 생성 과정이 복잡하거나 외부 데이터를 참조해야 할 때생성 ..

궁금증 2024.12.15

TDD vs DDD: 개발을 바라보는 두 가지 시선

프로젝트를 진행하면서 TDD(Test-Driven Development)와 DDD(Domain-Driven Design)에 대해 궁금증이 생겨 스스로 공부한 내용을 공유하고자 합니다. 이 글에서는 TDD와 DDD의 정의와 차이를 설명하고, 실제 프로젝트에서 사용할 수 있는 CRUD 코드 예시를 통해 각 방법론의 적용 방식을 소개하겠습니다. 또한, 어제 TDD를 지향하는 개발자분과 나눈 이야기를 바탕으로 TDD를 실제 어떤식으로 적용하는지도 다뤄보겠습니다.1. TDD란 무엇인가?TDD는 "테스트를 먼저 작성하고, 이를 통과시키기 위해 코드를 작성하는" 개발 방법론입니다. 코드의 안정성과 신뢰성을 높이고, 리팩토링 과정에서도 기존 기능이 정상적으로 동작하는지 확인할 수 있다는 장점이 있습니다.TDD의 세 가..

궁금증 2024.12.15

[SQL] Join vs SubQuery: 언제, 왜, 어떻게 선택할까?

며칠 전, 다대다 면접에서 면접관 한 분이 저에게 물었습니다."혹시 조인과 서브쿼리 중 어떤 것이 성능이 더 좋나요?"순간 잠시 생각을 한 뒤 이렇게 대답했습니다:"많은 양의 데이터를 다루지 않는 이상 서브쿼리와 조인의 성능 차이를 알아채는 것은 어렵다고 생각합니다. 하지만, outer join처럼 테이블 간의 데이터를 결합해야 하는 경우에는 서브쿼리는 내부 함수를 사용하거나 조건문을 작성해야 해서 SQL 구조가 직관적이지 않을 수 있습니다. 이는 성능뿐만 아니라 코드의 협업 측면에서도 JOIN보다 적합하지 않다고 생각합니다."당시에는 비교적 자신 있게 대답했지만, 며칠이 지나고 문득 궁금해졌습니다. 정말 내 대답이 옳았을까? JOIN과 서브쿼리의 차이점과 성능은 실제로 어떻게 다를까? 그래서 이번 기회..

궁금증 2024.12.09

컨트롤러와 서비스에서 동일한 메서드명을 사용하는 것이 적절할까?

개발자라면 메서드 이름을 지을 때 항상 고민하게 됩니다. 특히 컨트롤러와 서비스에서 동일한 이름의 메서드를 사용하는 것이 적절한지에 대해 의문이 들 때가 있습니다. 이번 글에서는 이 주제에 대해 다뤄보려고 합니다.1. 컨트롤러와 서비스의 역할컨트롤러와 서비스는 서로 다른 역할을 수행합니다.이 둘의 역할을 명확히 이해하면 메서드 이름을 어떻게 짓는 것이 좋은지 자연스럽게 답이 나옵니다.컨트롤러의 역할클라이언트(웹, 앱 등)와 상호작용합니다.HTTP 요청을 받아 적절한 응답을 반환합니다.사용자 관점에서 이해하기 쉬운 이름을 사용하는 것이 중요합니다.서비스의 역할비즈니스 로직을 처리합니다.데이터 저장소(Repository)와 상호작용하며 데이터를 조작하거나 처리합니다.내부 동작에 초점을 맞춘 이름을 사용하는 ..

궁금증 2024.12.06

메소드??? 함수?? 뭐가 다른거야?

메소드와 함수는 프로그래밍에서 중요한 개념으로, 비슷하지만 사용하는 방식과 맥락에서 차이가 있습니다. 이 차이를 명확히 이해하면 코드 설계와 개발에 큰 도움이 됩니다.1. 함수(Function)란?함수는 특정 작업을 수행하는 코드 블록으로, 독립적으로 호출될 수 있습니다.정의: 일반적으로 클래스나 객체에 속하지 않고, 독립적으로 정의된 코드 블록.언제 사용: 입력(인자)을 받아 처리하고, 결과(출력)를 반환하는 로직을 작성할 때 사용.특징클래스나 객체에 종속되지 않음.독립적으로 동작하며, 데이터나 상태를 보관하지 않음.함수 호출 시, 이름과 전달할 매개변수만 있으면 호출 가능.예제 (Java):// 독립적으로 정의된 함수public static int add(int a, int b) { return..

궁금증 2024.11.22