GitHub

https://github.com/Choidongjun0830

우테코

우테코에서의 3주차 WIL

gogi masidda 2025. 3. 6. 20:26

[Facts]
1. 테스트 작성 방법
2. 객체와 자료구조
3. 외부 라이브러리 쓸 때 주의할 점
4. Bulider 패턴
5. equals()와 hashCode()[Feelings+Finding]
1. 테스트 작성 방법
Build-Operate-Check 패턴을 적용하여, 중복되는 부분을 메서드로 분리하여 가독성을 높일 수 있다.
'테스트 당 assert 하나를 쓰자'가 아닌 '개념당 assert 문을 최소로 줄이고, 테스트 함수마다 한 개념만 테스트하자'가 더 낫다.
TDD를 직접 실천해 보고 관련 서적을 읽어보니, 공감되는 부분이 많았다,,
2. 객체와 자료구조
히로가 추천해준 클린코드 6장을 읽어 보았습니다. 객체와 자료 구조의 차이를 이해라고, 상황에 맞는 방식을 선택하는 것이 중요하다고 느꼈습니당
3. 외부 라이브러리 쓸 때 주의할 점
Map을 예로 들면, 굉장히 많은 기능이 들어있다. 이 기능을 우리는 모두 사용하는 것이 아니라, 원하는 것만 사용한다. 사용자에게 필요없는 기능까지 노출 될 수 있다. 이를 방지하려면 Map을 직접 노출하지 않고, 클래스로 감싸는 것이 좋은 방법이다.
그러면 Map 인터페이스가 변경되더라도 사용자에게 영향을 미치지 않고, 내가 허용하는 것만 사용하도록 강제할 수 있다.
무조건 감싸라는게 아니라, 이를 이용하는 클래스 밖으로 노출되지 않도록 주의해야 한다.
또한, 외부 API나 라이브러리를 사용할 때는, 학습테스트를 통해 그것을 올바르게 이해하고 사용해야 한다. 문서를 읽는 것만으로는 정확한 동작을 알 수 없기 때문에,,
4. Builder 패턴
생성자 파라미터의 순서를 기억할 필요가 없어진다. 보다 직관적이고 안정적으로 객체를 생성할 수 있게 된다.
5. equals(), hashCode()
equals()는 두 객체가 동일한지 비교하고, hashCode()는 객체의 메모리 주소를 기반으로 생성된 정수 값을 반환한다.
equals()가 true인 두 객체는 반드시 같은 hashCode() 값을 가져야 하고, false인 두 객체는 반드시 다른 hashCode() 값은 일치하지 않아도 된다. hashCode()가 같다고 해서 equals()가 반드시 true인 것은 아니다. 그래서 equals()와 hashCode()를 함께 오버라이딩하는 것이다.
getClass()와 instanceOf() 방식이 있다. getClass() 방식은 정확한 동일 타입의 객체만 비교 가능하고, instanceOf()는 상속을 고려하여 하위 클래스도 비교 대상에 포함된다.

728x90

'우테코' 카테고리의 다른 글

우테코에서의 2주차 WIL  (1) 2025.02.23