본문 바로가기

전체 글669

getter/setter 없이 구현했는가? - 우아한테크코스 우테코 클린코드 #7 3개 이상의 인스턴스 변수를 가진 클래스를 구현하지 않았는가? - 우아한테크코스 우테코 클린코드 #7 이전글에 이어 우아한테크코스에서 요구하는 클린코드 원칙들을 살펴본다. 핵심 로직을 구현하는 도메인 객체에 getter/setter 사용을 지양해 캡슐화의 개념을 실현하라는 의미로 해석된다. 이 지침은 DTO(Data Transfer Object)인 데이터 전달을 목적으로 설계되는 객체에 있어서는 적용하지 않는다. 이는 앞의 언급된 '핵심 로직을 구현하는 도메인 객체' 조건과 부합하는 내용이다. 당연히 데이터 전달을 위해서는 속성을 꺼내고 수정할 수 있는 getter와 setter가 필요할 것이기 때문이다. 즉, 비즈니스 로직의 구현에 있어서는 필요한 내용을 해당 객체들이 착실히 구현하라는 객체 지향의 원.. 2022. 10. 31.
3개 이상의 인스턴스 변수를 가진 클래스를 구현하지 않았는가? - 우아한테크코스 우테코 클린코드 #6 3개 이상의 인스턴스 변수를 가진 클래스를 구현하지 않았는가? - 우아한테크코스 우테코 클린코드 #6 이전글에 이어 우아한테크코스에서 요구하는 클린코드 원칙들을 살펴본다. 즉, 두개까지 클래스 변수를 허용한다는 뜻으로 에서 다음과 같이 적고 있다. 대부부분의 클래스가 간단하게 하나의 상태 변수를 처리하는 일을 맡아 마땅하지만 몇몇 경우 둘이 필요할 때가 있다. 새로운 인스턴스 변수를 하나 더 기존 클래스에 추가하면 클래스의 응집도는 즉시 떨어진다. 예를 들어 이름이 변수로 선언될 경우 String first; String middle; String last; 이를 두 클래스로 분해할 수 있다는 것이다. class Name { Surname family; GivenNames given; } class Su.. 2022. 10. 31.
콜렉션에 대해 일급 콜렉션을 적용했는가? - 우아한테크코스 우테코 클린코드 #5 콜렉션에 대해 일급 콜렉션을 적용했는가? - 우아한테크코스 우테코 클린코드 #5 이전글에 이어 우아한테크코스에서 요구하는 클린코드 원칙들을 살펴본다. 는 다음과 같이 일급 콜렉션의 사용 규칙을 제시하고 있다. 이 규칙의 적용은 간단하다. 콜렉션을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다. 각 콜렉션은 그 자체로 포장돼 있으므로 이제 콜렉션과 관련된 동작은 근거지가 마련된 셈이다. 먼저 일급 콜렉션이란 멤버 변수가 하나가 밖에 없는 컬렉션 메소드를 의미한다. 예를 들어 public class Computers { private List computers; } 같이 멤버 변수가 하나밖에 없는 상황으로 일릅 콜렉션은 List Xs 외 다른 변수가 없다. 또 다른 예시로 아래와 같은 코드가 있다. .. 2022. 10. 31.
java에서 gradle clean test 빌드시 에러 나오는 경우 java에서 gradle clean test 에러 나오는 경우 자바 프로젝트에서 test run이 정상적으로 되는데 터미널에서는 clean test를 통과하지 못하는 상황이 발생했다. 에러 메시지는 다음과 같이 발생. * What went wrong: Execution failed for task ':test'. 세팅에서 gradle build 환경을 바꾸어주는 것으로도 해결되지 않았고 어느 순간에는 잘 작동되던 테스트마저도 갑자기 전부 실행이 되지 않았다. 그래서 다시 이 세팅으로 변경. 해외 커뮤니티를 다 뒤져봐도 답변을 찾지 못해서 맥북에 clone해 와서 맥북에서 실행을 해보았더니 버젓이 된다! 결국 문제는 윈도우 환경이라는 결론을 내리고 혹시나 해서 폴더 이름에 한글이 있는 것을 영어로 바꾸어주.. 2022. 10. 31.
모든 원시값과 문자열을 포장했는가? - 우아한테크코스 우테코 클린코드 #4 모든 원시값과 문자열을 포장했는가? - 우아한테크코스 우테코 클린코드 #4 이전글에 이어 우아한테크코스에서 요구하는 클린코드 원칙들을 살펴본다. 자바의 원시타입 변수로는 총 8개로 byte, short, int, long, float, double, char, boolean 이 있다. 이와 같은 원시타입, 문자열 변수를 객체로 포장하라는 규칙이다. 원시값을 포장한다는 말은 무엇일까? 원시 유형의 변수를 그대로 사용하지 말고 객체 형태로 사용하라는 뜻으로 해석된다. 즉, 포장을 통해 사용하려는 도메인의 의미를 더욱 구체화하여 표현하자는 의미이다. 예를 들어, money를 선언하는 것에 대해 생각해보자. public class Money{ private int money; public void countMo.. 2022. 10. 30.