Javadoc: 코드를 제품으로 격상시키는 문서화의 기술
“한 줄 요약: 주석이 ‘어떻게(How)’에 집중한다면, Javadoc은 ‘무엇을(What)’과 ‘왜(Why)’라는 계약에 집중한다.” 1. Javadoc은 왜 필요할까? 단순히 “설명이 필요해서”가 아니다. 잘 작성된 Javadoc은 다음과 같은 강력한 이점을 제공한다. API 계약의 명시: 메서드가 무엇을 입력받고 무엇을 반환하며 어떤 ...
“한 줄 요약: 주석이 ‘어떻게(How)’에 집중한다면, Javadoc은 ‘무엇을(What)’과 ‘왜(Why)’라는 계약에 집중한다.” 1. Javadoc은 왜 필요할까? 단순히 “설명이 필요해서”가 아니다. 잘 작성된 Javadoc은 다음과 같은 강력한 이점을 제공한다. API 계약의 명시: 메서드가 무엇을 입력받고 무엇을 반환하며 어떤 ...
“한 줄 요약: 값 중심의 프로그래밍에서 타입과 의도 중심의 프로그래밍으로 전환하기” 1. Enum: 상수 집합을 넘어선 ‘상태 도메인 모델’ 단순히 String이나 int 상수를 사용하는 것은 ‘값’을 전달할 뿐 ‘의도(Type)’를 전달하지 못합니. Enum은 인스턴스 수가 고정된 특별한 클래스로써 타입 안정성(Type Safety)을 보장합니...
“한 줄 요약: 삭제와 같은 상호 작용 때문에 맺어진 양방향 관계는 데이터 정합성을 맞추기 위한 추가적인 노력이 필요하다.” 1. 발단: “삭제할 때 둘이 엮여있다…?” Category에서 상품을 삭제(removeProduct)하거나, Product가 속한 카테고리를 변경할 때, 두 객체의 상태를 모두 동기화해야 한다는 필요성을 느꼈습니다. 예를 ...
“한 줄 요약: instanceof 지양을 통한 다형성 확보와 메서드 명명(hasNext vs isEmpty)을 통한 비즈니스 의도 명확화” 1. 🚫 instanceof 사용을 지양해야 하는 이유 코드 내에서 객체의 실제 타입(예: Category, Product)을 직접 확인하는 instanceof는 가급적 피해야 한다고한다. OCP (개방...
“한 줄 요약: 스트림을 통한 선언적 출력 개선과 객체의 생성 및 관리 책임을 분리하여 응집도 높은 설계 구현” 1. 🔍 문제 분석 (Problem Understanding) 상황: 상품 리스트 출력 시 for문과 인덱스(i)를 사용함. 문제점: 문자열 더하기(+)의 반복으로 가독성이 낮고, 출력 형식이 로직에 강하게 결합되어 수정이 번거로...
“한 줄 요약: Queue의 회전(Rotation) 원리를 이용해 원형 구조의 인덱스 계산 없이 요제푸스 순열 추출” 1. 🔍 문제 분석 (Problem Understanding) 핵심 제약 조건: $N$명의 사람이 원형으로 앉아 있고, K번째 사람을 반복적으로 제거한다.(1 ≤ K ≤ N ≤ 1,000) 요구 사항: 제거되는 순서대로 숫...
JVM(Java Virtual Machine)의 핵심 구성 요소인 Class Loader, Runtime Data Area, Execution Engine, 그리고 Garbage Collector가 어떻게 상호작용하며 자바 프로그램을 실행하는지 정리한다. 1. 자바 코드 실행 흐름 개발자가 작성한 .java 소스 코드는 다음과 같은 과정을 거쳐...
Java의 enum은 단순히 상수를 나열하는 도구를 넘어, 각 상수가 고유한 로직을 실행할 수 있는 ‘행위’를 가질 수 있다. 이전에는 추상 메서드를 통해 이를 구현했다면, 더 나아가 함수형 인터페이스와 람다(Lambda)를 결합하여 코드를 훨씬 간결하게 만드는 방법을 학습했다. 1. Enum 내 추상 메서드와 상수별 클래스 본문 enum 내부에 ...
1. 문제 상황 계산기 프로그램을 만들면서 사칙연산이 끝날 때마다 “더 계산하시겠습니까?”라는 질문을 뒤에 사용자의 입력에 따라 반복 여부를 결정하도록 설계했다. 하지만 코드를 실행해 보니 질문 출력 직후 입력을 기다리지 않고 바로 다음 루프로 넘어가 버리는 현상을 겪었다. 2. 원인 분석: 입력 버퍼의 잔여 개행 문자(\n) 이 현상은 Scan...
🧐 왜 코딩 전 ‘생각 훈련’이 필요할까? 많은 개발자가 다음과 같은 고민을 합니다. “문제는 이해했는데, 어디서부터 코드를 짜야 할지 모르겠어요.” “머릿속으로는 정리된 것 같은데 막상 코드로 옮기면 로직이 꼬여요.” 개발공부를 하다 보면 누구나 한 번쯤 마주하는 거대한 벽입니다. 조건이 많아질수록 내가 짠 로직에 내가 길을 잃기도 합니...