평소 스트림을 리스트로 변환할 때 단순히 Stream.toList()를 활용해왔다. 하지만 어제 프로그래머스에서 코테 문제를 풀다가 Stream.toList()를 지원하지 않고 Collectors.toList()만 지원되는 것을 보고, 이 둘의 차이점을 조금 더 명확히 알 필요가 생겨 정리하게 되었습니다. (우선 결론부터 말하자면.. stream의 toList는 자바 16이상 버전부터 지원하기에, 프로그래머스는 해당 버전이 아니어서 지원을 안한걸로) 우선 Collectors.toList()의 자바 공식 문서 설명을 보면 다음과 같습니다. Returns a Collector that accumulates the input elements into a new List. There are no guarante..
지난 데브코스 도서 관리 과제를 하던 중 멘토님께 받은 코드 리뷰 피드백이 하나 있었다. public List read() { try (Reader reader = new FileReader(path)) { Type listType = new TypeToken() { }.getType(); List books = gson.fromJson(reader, listType); return Optional.ofNullable(books).orElse(new ArrayList()); } catch (Exception e) { e.printStackTrace(); } return new ArrayList(); } 저기 try안에 넣은 구문은 뭐죠? 현재 reader를 close하는 부분이 없는데 그럼 이 코드는 잘..
의존성이 잘못 관리될 경우, 변경하기 어렵고 재사용하기 어려운 코드가 작성이 된다. 그렇기에 우리는 의존성을 잘 관리된 코드를 작성하려 노력해야 한다. 그렇다면 의존성을 잘 관리하기 위한 기준은 무엇이 있을까? 바로 SOLID 원칙이 있다. 정처기 시험을 볼 때 꽤 자주 나왔지만, 말 그대로 정의만 있을 뿐 이를 단순히 정의만 보면 이해 하기가 어려우니 예시와 코드를 보며 이해해보자. ++ DIP(의존 역전 원칙)은 의존 관계를 설명하며 설명했기에 패스하겠다. SOLID SRP : Single Responsibilirty Principle OCP : Open Closed Principle LSP : Lskov Substitution Principle ISP : Interface Segregation Pr..
때는 약 1년 전으로 돌아가 우테코 프리코스를 하던 시절.. 당시 과제들의 최우선 순위로 해야할 미션은 바로 클린 코딩이었다. 그 중에서도 나에게 신선한 충격을 주었던 건, if문을 최대 2중 중첩까지만 쓸 수 있게 제한한 것이었다. If문의 중첩 수를 줄이기 위해서는 최대한 메서드를 쪼개거나, 도중에 return 하는 등의 방식을 사용했다. 그리고 인턴 기간 중에도 수많은 if문들은 나를 괴롭혔다. 내가 짠 코드도 그렇게 짜놓으면 보기 힘든데 남이 보면 얼마나 힘들까. 그래서 다음 인턴이 왔을 때 내 코드를 좀 편하게 보기 위해 엄청나게 리펙토링 하고 간 기억이 난다. 이제 오늘 데브코스에서 배운 강의를 활용해 나름의 팁? 을 써보려 한다. public enum CalculateType { ADD, M..