전체 글45 자바 isEmpty()와 isBlank()의 차이 isEmpty()는 문자열이 비어있으면 true를 반환하는 메서드이다. isBlank()는 문자열이 공백이거나 비어있으면 true를 반환하는 메서드이다. isEmpty()는 Java 1.6에 도입된 메서드이고isBlank()는 Java 11에 도입된 메서드로 비교적 최신 버전이다. isEmpty()를 사용하면 문자열이 공백일 때는 false가 반환되니isBlank()로 공백과 비어있는지 둘다 확인해주는 것이 더 좋다. 입력값 (String value) isEmpty() isBlank() 설명 "" (빈 문자열)truetrue둘 다 비어있다고 판단합니다." " (스페이스)falsetrueisEmpty는 길이가 1이라 false, isBlank는 공백이라 true."\\t\\n" (탭, 엔터)falsetru.. 2025. 11. 23. 생성자의 파라미터가 너무 많아서 가독성이 안좋을 때는 어떡할까? 생성자에 파라미터가 너무 많아서 가독성이 떨어지는 문제가 발생했다.이 문제를 해결하기 위해 알아보던 중 팩토리 패턴을 찾게 되었다. 팩토리 패턴이란 객체를 직접 생성하는 대신 객체를 생성하는 인터페이스 공장을 만들어서객체를 생성하는 책임을 위임하는 것이다. 나는 OptionSelector 클래스에서 각 옵션들을 직접 조립해서 만들고 보관하고 있었다.하지만 OptionSelector는 옵션을 직접 만드는 책임과 옵션을 선택하는 책임 두 가지가 있었다.직접 만들 책임이 있으니 만들때 필요한 객체들을 알아야 할 필요가 있었고 이것이 가독성이 안 좋은 문제였다. 이 문제를 해결하기 위해 팩토리 패턴을 응용해서 옵션을 만드는 공장을 구현했다.public class OptionCreator { private .. 2025. 11. 23. 값을 랜덤하게 가져오기 위해 내가 사용한 방법 3주 차 로또 문제에서 로또 번호의 중복을 예외처리 해주기 위해 고민을 하다가 중복이 일어나는지 알고 싶어서 pickUniqueNumbersInRange 코드를 봤었다. 그런데 shuffle메서드로 섞고 앞에서부터 지정된 수까지 뽑는 것이었다.public static List pickUniqueNumbersInRange( final int startInclusive, final int endInclusive, final int count ) { validateRange(startInclusive, endInclusive); validateCount(startInclusive, endInclusive, count); final.. 2025. 11. 23. H2 연동 과정 처음에는 당연히 H2를 설치하고 사용해야 하는 줄 알고다운로드하여서 설치를 하고 연동하는 법을 알아봤다. 그런데 프로젝트 Build 시스템을 intelliJ가 아니라면 H2는 의존성에 추가만 해주면 간단하게사용할 수 있는 장점이 있었다. 나는 초기 프로젝트를 만들때 Gradle로 했기에 Gradle 의존성 주입 방법을 사용했다.dependencies { testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation 'org.junit.jupiter:junit-jupiter' runtimeOnly 'com.h2database:h2:2.4.240'}이렇게 의존성을 추가해 주면 된다.https://www.h2databa.. 2025. 11. 23. 내 프로젝트에 맞는 DB는? 예전에 SQL 문법에 대해서 학습해 본 적이 있다.하지만 실제로 DB를 연결하고 사용해 본 적이 없기에이번에 DB를 연동하고 응용해 보려 했다. 나는 많은 DB들 중에서 MySQL과 H2를 고민했었다.자료 조사를 하며 내가 알아낸 장단점을 비교해 봤다.MySQL장점- 데이터를 영구 보관한다.- 데이터에 대한 안전성이 높다.- 대규모 트래픽 처리가 가능하다.단점- 사용하려면 설정하는 과정이 많이 복잡하다.- 프로그램이 무겁다.H2장점- 프로그램 자체가 가볍다.- 설정 과정이 단순하다.- 실행 속도가 빠르다.단점- 데이터가 휘발성으로 날아간다.- 대규모 트래픽을 처리하기 힘들다. 이 두 가지를 내 프로젝트와 비교해 봤을 어떤 것이 더 적합할까? 나는 객체들의 초기값들을 DB에 두고 실행할 때마다 가져올 계획.. 2025. 11. 23. 의존성 주입의 파라미터 개수 많으면 안돼? 파라미터 개수는 3개 이하로 유지해야 한다는 것을 봤다.그러다가 의존성 주입을 하다 보니 생성자에 파라미터 개수가 많아지는 것을 보고이것이 잘못된 설계인가? 고쳐야 하나?라는 고민이 들었다."근데 왜 파라미터 개수는 3개 이하로 하라는 거지?" 궁금증이 생겼다. 그렇다면 파라미터 개수는 왜 3개 이하로 유지해야 하는지부터 짚고 넘어가자.우선 파라미터 개수를 최대한 적게 유지해야 한다는 것은 그 메서드를 사용하는 클라이언트 측에서실수를 줄이기 위한 것이었다. 만약 파라미터로 (년도, 월, 일, 시, 분)을 int로 받는 메서드가 있을 때 클라이언트 측에서실수로 월을 일과 바꿔 넣거나 시와 분을 바꿔 넣어도 컴파일 단계에서 아무런 문제가 발생하지 않는다.이런 실수가 먼 미래에 발견된다면 실수를 찾기도, 유지.. 2025. 11. 10. 이전 1 2 3 4 5 ··· 8 다음