목록2024/04/28 (3)
개발놀이터

객체지향의 5대원칙 SOLID를 만들었다고 전해지는 로버트 C 마틴이 쓴 책 클린코드를 읽어봤습니다. 취업 준비때는 바빠서 취직하고는 책읽을 시간이 없어서 책 읽는 것을 소홀히했는데, 반성하며 읽다만 클린코드를 읽었습니다. 책에서는 객체지향을 위해 클린코드를 어떻게 작성해야하는지에 대한 가이드라인이 나와있습니다. 함수는 어떻게 작성해야 하는지, 주석은 어떻게 달아야하는지, 클래스는 어떻게 작성해야하는지 등등에 대한 내용이 들어있습니다. 그런데 저자가 표현을 좀 강력하게해서 일부 오해의 소지가 있는것 같습니다. 어떤 유튜버가 영상에서 클린코드를 무조건 맹신하면 안된다면서 "함수 하나에 하나의 책임만을 가지고 각각의 책임들을 함수로 빼야한다." 라는 말을 했는데 이를 오해한 사람들이 모든 함수를 다..

코드를 리팩토링 하는 과정에서 Collection에 담긴 내용을 if문 두개로 중첩해서 걸러내는 로직이 있었습니다. 로직을 간단하게 설명하자면 사용자가 장바구니에 담은 상품의 사이즈와 데이터베이스에 존재하는 상품의 사이즈 중 같은 것을 찾고 (ex. 장바구니에 105사이즈를 담았다면 데이터베이스에 105사이즈를 검사함) 찾은 것 중에 재고를 비교해서 장바구니에 선택한 수량이 데이터베이스에 남아있는 수량보다 많은 경우 (ex. 장바구니에 2개를 넣고 결제하려는데 데이터베이스엔 1개밖에 없는 경우) 를 비교해서 만약 그런 상황이라면 재고가 남아있지 않는다는 메시지를 띄워주기위해 설계한 로직입니다. 들여쓰기가 세번 이상 되었기 때문에 리팩토링 해야겠다고 생각했고 StreamAPI를 이용해서 깔끔하게 리팩..

StreamAPI는 제가 자주 사용하는 문법 중 하나인데, 정작 뭐가 어떻게 동작하는지는 잘 모르고 썼던 것 같습니다. 그래서 정리하면서 사용법까지 훑어보도록 하겠습니다. StreamAPI란?자바8부터 지원하게 된 StreamAPI는 Collection을 함수형 인터페이스를 이용해 함수형 프로그래밍을 지원하기위한 목적을 가지고 나왔습니다. 때문에 우리는 Collection 에 담겨있는 객체들을 이용해 for문을 돌리고 if문을 사용하는 것을 StreamAPI로 깔끔하게 줄일 수 있게 되었습니다. StreamAPI는 람다식을 이용해 함수형 프로그래밍을 지원합니다. 대부분 Collection에 stream() 을 붙여서 사용합니다. 예시 코드와 함께 보시죠. List findBucket..