728x90
반응형

CleanCode 2

[Java] Stream vs For 문, 무엇을 써야 할까? - 성능, 메모리, 그리고 Clean Code

지난 글에서는 Java Stream의 개념과 동작 원리에 대해 알아보았습니다.스트림은 코드를 우아하게 만들어주는 강력한 도구지만, 현업에서 코드를 짜다 보면 항상 이런 고민에 부딪힙니다."이거 그냥 For 문 돌리는 게 더 빠르지 않나?" "Stream을 남발하면 메모리 문제가 없을까?" 오늘은 개발자들 사이의 영원한 논쟁 주제인 [For 문(Enhanced For Loop) vs Stream API]를 성능, 메모리 구조(Stack/Heap), 그리고 유지보수성 관점에서 깊이 있게 비교해 보겠습니다.1. 성능: 속도는 누가 더 빠를까?결론부터 말씀드리면, 단순 반복 처리 속도는 For 문이 더 빠릅니다.왜 For 문이 더 빠를까?컴파일러 최적화: For 문은 자바 언어 탄생부터 존재한 가장 기본적인 문..

Backend/Java 2026.02.05

테스트 짜기가 너무 힘들다면? 범인은 '코드 설계'입니다 (feat. 의존성 주입)

지난 글에서 우리는 외부 요인을 통제하기 위해 Mocking(모킹)이 필수적이라는 것을 배웠습니다."오, 이제 API 든 DB 든 다 Mock으로 만들어서 테스트하면 되겠네!"라고 생각하며 의욕적으로 코드를 열었을 겁니다.그런데 막상 테스트 코드를 짜려니 막막해집니다."함수 안에서 new Date()를 쓰고 있는데 이건 어떻게 Mocking 하지?""함수 깊숙한 곳에서 axios를 직접 import 해서 쓰고 있는데, 밖에서 가로챌 수가 없네?"테스트 작성이 어렵게 느껴진다면, 그것은 테스트 실력 부족이 아니라 여러분의 코드가 테스트를 거부하고 있기 때문일 확률이 높습니다.오늘은 테스트를 방해하는 나쁜 패턴을 알아보고, 의존성 주입(Dependency Injection)을 통해 '테스트하기 쉬운 구조'로..