본문 바로가기

전체 글

(229)
[자바] Stream의 match함수 예제(anyMatch, noneMatch, allMatch) 회사에서 개발하던 중 리스트의 데이터 모두 빈값("") 인경우..라는 조건이 필요하였다. 결론: !Arrays.stream(arr).allMatch(String::isEmpty) 물론 for문을 돌려도되지만 요즘 코드를 한줄로 줄이기에 재미가 들려서 이것저것 찾아보다가 stream의 allMatch라는 녀석을 이용하면 한줄로 표현할 수 있어서 매우 기분이좋아(?) 기록으로 남기려고한다. java.util.Stream에는 제목처럼 세 가지 match 함수가 있다. 그리고 이 세함수의 인자는 Predicate로 T타입을 입력받고, boolean을 출력한다. 다음예제를 통해 조금더 함수의 결과를 잘 알수 있다. public static void main(String[] args) { List list = ne..
클린코드는 없다. 늘 고민이었다. 어딘가 소스가 깨끗하지 못하다는 인상을 받았다. 만족스럽지 못한 우리네업무코드를 보다 만족스럽고 바람직한 코드로 리팩터링하고싶었다. 많이 고민됐고, 의심스러웠고, 그리고 믿어왔다. 1. 코드가 지나치게 절자치향적이었다. 2. 익셉션에 대해 생각하기 어려웠다. 3. 형상관리에 어려움이 있었다. 4. 장애가 발생해도 적절히 대응하기 어려웠다. 5. 코드에 비즈니스(도메인)이 제대로 들어나지 않은 느낌을 받았다. 6. 네이밍에 대해 생각하기 어려웠다. 무엇보다도 변경에 어려움이 있다는 느낌을 받았고, 대부분이 그렇게 생각한다. 사실 다들 어느정도 알고있다. 스파게티코드란 단어를 실무에 써본적도 들어본적도 없지만 그게 뭔지 다들 알고있다. 나는 이문제를 OOP와 DDD가 해결해 줄 것이라는 오랜..
기술부채와 개발자의 직감 그리고 채신기술 사클의 구린음악은 들어도 알지만 좋은 음악은 왜 좋은음악인지 명확히 설명하기 어려움(내기준) 사실 다들 알고잇다. 어디가 잘못됫는지를. 하지만 아무도 이 사실을 정략적으로 수치화하기 어렵고 제대로 설득하고, 실제로 개선하기까진 매우어려운 일이다. 나역시 그랫엇지만 개선하고싶엇다. 이 늙고병든 어플리케이션을 진단하고 처방하고싶엇다 더럽고 혼란스러운 우리네 업무코드를 구원해줄 메시아가 필요햇던것이다. 결론은 oop와 ddd이다. 업무코드의 추상도는 0이다. 그렇다면 왜 추상화를 해야하는가? 왜 프론트엔드 프레임워크를 도입해야하는가? JPA는 왜 필요한것인가? 변경의 레벨 양상 추이 가 달라서이다. 기본적으로 젤 많이 빨리, 그리고 이상하게(?) 변하는곳이 화면단이다. 이를 서버자원인 jsp와 백엔드는 따라 ..