JAVA16 부정 연산자도 메서드로 구분하자(NOT, !) 해당 글은 클린 코드의 대한 자유로운 의견을 공유하고 작성된 것으로 다양한 의견이나 잘못된 내용이 있으시면 댓글 남겨주시면 감사하겠습니다.보통 Boolean 타입으로 부정형을 정의할 때 부정 연산자(!)을 사용하게 됩니다 [n이 null이 아닐 때]n != null[n이 10이 아닐 때]n != 10[n이 유효하지 않을 때]validation() : 유효성 확인 Method!n.validation() 이 글의 제목을 읽어보고 나면 1개의 질문이 떠오르실 것 이라고 생각합니다. 위 코드처럼 부정 연산자(!)을 그대로 사용하면 되지 않나요? Method를 굳이 나눠야 할까요? 저의 주관적인 생각으로는 부정 연산자(!)을 생각하는 로직도 Method 형태로 구분하는 것이 유지보수에 도움이 된다고 생각합니다... 2025. 4. 28. 나만의 클린 코드 이야기 - Enum의 description 변수를 사용하자 해당 글은 클린 코드의 대한 자유로운 의견을 공유하고 작성된 것으로 다양한 의견이나 잘못된 내용이 있으시면 댓글 남겨주시면 감사하겠습니다.상수를 정의하는 방법으로 interface, 자체 클래스 상수, 내부 final 상수로 만드는 방법이 많지만 Java에서 상수를 정의하라고 만든 Enum 클래스 타입이 존재합니다. Enum 클래스에서 정의한 상수의 네이밍으로 한 눈에 알아볼 수 있지만, 상세적인 내용을 1개의 네이밍으로 설정하는 것은 쉽지 않은 일입니다. public enum Type{ TYPE_NAME1(...), TYPE_NAME2(...), TYPE_NAME3(...), TYPE_NAME4(...); ...} 해당 Enum 클래스의 유지보수성을 높이기 위해서 description 변수.. 2025. 4. 3. Koltin Gradle, Groovy Gradle 비교 주요 차이점 비교 장단점 장점단점 Groovy DSL - 간결한 문법- 더 나은 빌드 성능- 낮은 학습 곡선- 효율적인 증분 빌드 · 동적 타이핑으로 인한 타입 안전성 부족· IDE 지원이 상대적으로 약함 Kotlin DSL · 강력한 타입 안전성 · 우수한 IDE 지원 (자동완성, 오류 감지)· 리팩토링 용이성 · 상대적으로 장황한 문법 · 학습 곡선이 더 가파름 성능 비교[Gradle 개발자가 남긴 벤치마킹 정보] The Kotlin and Groovy DSLs should have similar performance characteristics · Issue #15886 · gradle/gradleExpected Behavior The Kotlin and Groovy DSLs have as .. 2025. 1. 21. R2DBC-Proxy(DB Connection Proxy) 적용하기 적용 목적. 현재 WebFlux + R2DBC 환경에서 Join이 필요할 때 DatabaseClient을 이용한 Native Query으로 작성해서 DB에서 데이터를 가져오고 있습니다. Query를 작성할 때의 Human Issue가 발생하거나, ParameterBinding이 올바르게 진행되어 DB에 요청이 가는지 확인하기가 어렵습니다. public Flux findTableT1(String id) { return databaseClient.sql(queryStore.queryJoinTable2ByT1Id()) .bind("id", id) .map((row, rowMetadata) -> findTableT1Response.ofFindTableT1.. 2024. 7. 22. Jackson Library 이해하기(Feat. Jackson NullPointerException) [상황]기존 코드 유지 보수 중, 수정 API 1개가 500 Error가 뜨고 있었습니다. PostMan으로 API 호출을 진행하였을 때, NullpointException이 발생하였지만, DB에는 데이터가 변경된 것을 확인하였습니다. API 구조 ※ 참고, Hexagonal Architecture으로 구성되어 있습니다. DB에 데이터가 변경되었다?→ Business Layer가 아닌 InBound Layer에서는 잘못되었다는 것이라고 생각하고 접근하기 시작하였습니다. InBound Layer을 생각하고, 코드 분석 및 디버깅을 돌렸을 때 Domain 객체를 그대로 응답으로 출력하고 있는 것을 확인되었습니다. get(Ex. getSearch)으로 시작하는 비즈니스 로직 함수가 존재하였으며, 해당 함수.. 2024. 5. 4. Spring에서 Notification을 구현해보자(WebFlux, Reactor Sinks, SSE) 주의!! → 알림을 구현하기 위해서 경험을 정리한 글이며 대규모 트래픽은 환경은 아니지만, 알림(포탈, SMS, Email, Kakao Alim Talk)이 발생하는 서비스를 제공한 내용을 정리한 글입니다. → 잘못된 부분이 있을 수 있으며, 해당 부분에서는 바로바로 지적해주시면 정말 감사하겠습니다. [상황] 알림 서비스를 구현해야 하는 상황에 맞닥뜨렸다. 나는… 알림을 구현해본적이 없는데 먼저 구현하는 방법에 대해서 먼저 찾아보자!! 알림을 구현하는 방법에는 크게 4가지가 존재하며, 저는 SSE(Server-Sent Event)을 사용하였습니다. [알림을 구현하는 방법 4가지] 1) Short-Polling 클라이언트는 설정한 주기(예:2초)로 서버에 대한 요청을 반복한다. 장점 Client와 Serv.. 2024. 2. 27. 이전 1 2 3 다음