본문 바로가기

Java15

악취나는 코드 개선하기 시리즈 - 값의 가변성 (Mutation) IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 4. Code Smells: 값의 가변성 (변경가능한 값) 심하게 중첩된 코드글에서 저는 getMappedField 메소드의 리턴 타입을 Optional로 변경하고 싶었습니다. 변경자체는 굉장히 사소한 일이지만, 그 메소드를 호출하는 코드들의 변경은… 음 또다른 문제였습니다. QueryValidator클래스의 validateQuery메소드는 여러 호출자 중에서 예상했던 것보다 훨씬 더 복잡한 메소드였습니다. getMappedField를 Optional로 변경하려고 할때, 놀라울 정도로 많은 Null 체크 코드를 isPresent로 변경했습니다. 이게 전부가 아닙니다. 이 메소드는 거의 100라인이라 1개의 캡쳐화면에 전부 담을수가 없.. 2017. 9. 18.
악취나는 코드 개선하기 시리즈 - 순회 (Iteration) IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 3. Code Smells: 반복 저번시간엔 의심스러운 중첩 코드를 살펴 보았습니다. 이 문제를 해결하는 가장 좋은 방법은 기존 클래스에서 데이터를 가진 클래스의 내부를 이해하고 다루는것인 아니라, 행위 자체를 이동시키는 것이라고 추천드렸습니다. 그러나 이것이 그 이야기의 끝이 아닙니다. 이번 글에서는 코드 반복이 야기시킬 수 있는 다른 문제를 탐구하려고 합니다. 마지막 예제에서 중첩된 루프는 로직이 잘못된 위치에 있었던 것이라고 제안드렸습니다. 새로 만든 hasName메소드에서 반복이 존재하는 것은 for 루프 또는 stream를 사용하여 구현한것과 관계없이 또다른 문제점을 제시합니다. 아마도 이것은 name 데이터들을 저장하는 올.. 2017. 9. 6.
Java + Gradle 프로젝트 생성하기 (+junit) 1. IntelliJ 프로젝트 생성Junit 라이브러리를 사용해야하므로 직접 jar를 받아 추가하기 보다는 빌드도구를 사용해서 의존성을 쉽게 사용하는것이 좋다. Maven, Gradle 중 원하는 빌드 도구로 생성한다. (팀내 빌드도구를 선택하면 되지만, 박재성님의 강의는 Maven으로 진행할 예정)GroupId와 artifactId는 원하는 값을 입력하면 된다. (정식 프로젝트라면 룰에 맞춰서 가야하지만 테스트이니 그냥 한다.)생성이 완료되면 위와 같은 프로젝트 구조가 생성된다. main 코드와 test 코드를 생성하기 위해 source root를 생성해야한다. (없으면 패키지 및 클래스가 생성되지 않는다.) main 코드의 source root를 생성하기 위해 프로젝트를 선택 -> command+n을.. 2017. 4. 9.
Enum 활용사례 3가지 안녕하세요? 이번 시간엔 enum 활용사례를 3가지정도 소개하려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 최근에 레거시 프로젝트를 개편하면서 enum을 적극 사용하였습니다. 혹시나 비슷한 고민이 있으신분들에게 참고가 될까 싶어 포스팅하게 되었습니다. 이런식으로 해결할 수도 있네? 정도로 봐주시면 될것 같습니다. 그럼 시작하겠습니다!사례1 - code 관리용 테이블 대체하기프로젝트를 진행하다보면 code 들을 관리하기 위한 테이블을 별도로 만드는 경우가 빈번합니다.(출처 : 실천하는삶님의 블로그)이 경우가 무조건 나쁜것은 .. 2017. 4. 9.
equals와 hashCode 사용하기 ( +lombok) 안녕하세요? 이번 시간엔 equasl & hashcode를 어떤 곳에서 사용할 수 있는지를 확인해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) java를 사용하면서 equals와 hashcode를 언제 override하면 좋을지 혹은 그런것이 있는지 모르시는 분들을 몇번 뵙게 되었습니다. 피부에 와닿을 수 있는 적절한 예제를 떠올리지 못하다가 마침 업무에서 사용할 기회가 되어서 적용후 포스팅을 시작하게 되었습니다. 틀린 내용이나 더 좋은 해결책이 있으신 경우엔 언제든지 가감없이 댓글 혹은 pull request 부탁드리겠.. 2017. 3. 25.
Spring Validation 공통모듈 만들기 안녕하세요? 이번 시간엔 유효성 체크(이하 validation) 공통 모듈 생성하는 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 예를 들어 아래와 같은 회원 가입 양식이 있다고 가정해보겠습니다. 대부분의 입력 양식처럼 위 양식도 등록시 몇가지 조건들이 있습니다.이름/휴대폰번호/이메일은 필수값입니다.휴대폰번호는 10자리 혹은 11자리의 숫자로 이루어져야 합니다.이메일은 이메일 양식을 지켜야한다 (xxx@xxx)이메일은 중복 등록 할 수 없다.이 조건들을 체크하기 위해서 많은 분들이 하는 방법중 하나가 jque.. 2017. 3. 6.