WooLam

Javadoc: 코드를 제품으로 격상시키는 문서화의 기술

“한 줄 요약: 주석이 ‘어떻게(How)’에 집중한다면, Javadoc은 ‘무엇을(What)’과 ‘왜(Why)’라는 계약에 집중한다.” 1. Javadoc은 왜 필요할까? 단순히 “설명이 필요해서”가 아니다. 잘 작성된 Javadoc은 다음과 같은 강력한 이점을 제공한다. API 계약의 명시: 메서드가 무엇을 입력받고 무엇을 반환하며 어떤 ...

Enum, Lambda, Stream: 선언적 코드와 객체지향적 책임의 결합

“한 줄 요약: 값 중심의 프로그래밍에서 타입과 의도 중심의 프로그래밍으로 전환하기” 1. Enum: 상수 집합을 넘어선 ‘상태 도메인 모델’ 단순히 String이나 int 상수를 사용하는 것은 ‘값’을 전달할 뿐 ‘의도(Type)’를 전달하지 못합니. Enum은 인스턴스 수가 고정된 특별한 클래스로써 타입 안정성(Type Safety)을 보장합니...

삭제 로직과 데이터 연관성으로 엮인 양방향 매핑의 함정

“한 줄 요약: 삭제와 같은 상호 작용 때문에 맺어진 양방향 관계는 데이터 정합성을 맞추기 위한 추가적인 노력이 필요하다.” 1. 발단: “삭제할 때 둘이 엮여있다…?” Category에서 상품을 삭제(removeProduct)하거나, Product가 속한 카테고리를 변경할 때, 두 객체의 상태를 모두 동기화해야 한다는 필요성을 느꼈습니다. 예를 ...

[Java] 스트림 인덱스 출력과 객체지향적 책임 분리 (DI & SRP)

“한 줄 요약: 스트림을 통한 선언적 출력 개선과 객체의 생성 및 관리 책임을 분리하여 응집도 높은 설계 구현” 1. 🔍 문제 분석 (Problem Understanding) 상황: 상품 리스트 출력 시 for문과 인덱스(i)를 사용함. 문제점: 문자열 더하기(+)의 반복으로 가독성이 낮고, 출력 형식이 로직에 강하게 결합되어 수정이 번거로...

Java Enum의 추상 메서드와 람다(Lambda) 활용

Java의 enum은 단순히 상수를 나열하는 도구를 넘어, 각 상수가 고유한 로직을 실행할 수 있는 ‘행위’를 가질 수 있다. 이전에는 추상 메서드를 통해 이를 구현했다면, 더 나아가 함수형 인터페이스와 람다(Lambda)를 결합하여 코드를 훨씬 간결하게 만드는 방법을 학습했다. 1. Enum 내 추상 메서드와 상수별 클래스 본문 enum 내부에 ...

Java Scanner nextInt() 호출 후 nextLine() 무시 현상

1. 문제 상황 계산기 프로그램을 만들면서 사칙연산이 끝날 때마다 “더 계산하시겠습니까?”라는 질문을 뒤에 사용자의 입력에 따라 반복 여부를 결정하도록 설계했다. 하지만 코드를 실행해 보니 질문 출력 직후 입력을 기다리지 않고 바로 다음 루프로 넘어가 버리는 현상을 겪었다. 2. 원인 분석: 입력 버퍼의 잔여 개행 문자(\n) 이 현상은 Scan...

머릿속 엉킨 로직을 푸는 열쇠: 컴퓨팅적 사고와 플로우차트

🧐 왜 코딩 전 ‘생각 훈련’이 필요할까? 많은 개발자가 다음과 같은 고민을 합니다. “문제는 이해했는데, 어디서부터 코드를 짜야 할지 모르겠어요.” “머릿속으로는 정리된 것 같은데 막상 코드로 옮기면 로직이 꼬여요.” 개발공부를 하다 보면 누구나 한 번쯤 마주하는 거대한 벽입니다. 조건이 많아질수록 내가 짠 로직에 내가 길을 잃기도 합니...