토마토의 개발일지
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • Development (144)
      • Languege (39)
        • Java & Spring (27)
        • C# & ASP.NET (5)
        • JavaScript (2)
        • Kotlin (5)
      • DB (0)
        • Oracle (0)
      • Study (72)
        • 네트워크 (3)
        • 이펙티브 자바 (41)
        • 우아한 테크 코스 (7)
        • Next Step (3)
        • Certificate (5)
        • Side Proejct (6)
      • Error (18)
        • 개발환경 (10)
        • 트러블슈팅 (6)
      • Algorithm (12)
      • 개발환경 (1)
      • 회고 (2)
  • 홈
  • 태그
  • 방명록
Study/우아한 테크 코스

private 메소드 테스트 꼭 해야 할까?

private 테스트 해야돼? private 메소드는 어떻게 하나요? 라는 질문이 우테코 단톡에 올라왔다. 리플렉션을 사용하는 방법(개인적으로 절대 사용하지 않는) 내가 답변했던 package-private을 사용하는 방법 테스트 자체를 하지 않는 방법(말도 안된다고 생각했다.) 말도 안된다고 생각 했던 이유는 가장 중요한게 내부 구현인데 그걸 테스트 하지 않는다고? 라고 생각했었기 때문이다. 그래서 나도 package-private을 사용해서 private을 해제하고 내부 구현의 개발을 진행하였다. 그런데 이게 진짜 맞을까? 라는 생각이 들었다. 처음에 이펙티브 자바 접근 제한자에 대해서 공부할 때 package-private(default)에 대해서 알게 되었고, 이를 테스트시에 풀어줘도 된다. 라는..

2023. 11. 2. 19:09
Study/이펙티브 자바

[Effective Java 3E] 로 타입은 사용하지 말라

💥 개요 한글 용어 영문 용어 예시 매개변수화 타입 parameterized type List 실제 타입 매개변수 actual type parameter String 제네릭 타입 generic type List 정규 타입 매개변수 formal type parameter E 비한정적 와일드카드 타입 unbounded wildcard typ List 로 타입 raw type List 한정적 타입 매개변수 bounded type parameter 재귀적 타입 한정 recursive type bound 한정적 와일드카드 타입 bounded wildcard type List에는 (null 외에는) 어떤 원소도 넣을 수 없다. 다른 원소를 넣으려 하면 컴파일 시점에 오류가 발생한다. @Test void 와일드카드타..

2023. 11. 1. 20:57
Study/이펙티브 자바

[Effective Java 3E] public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

💥 개요 이따금 인스턴스 필드들을 모아놓는 일 외에는 아무 목적도 없는 퇴보한 클래스를 작성하려 할 때가 있습니다. class Point { public double x; public double y; } 이런 클래스는 데이터 필드에 직접 접근할 수 있으니 캡슐화의 이점을 제공하지 못합니다. API를 수정하지 않고 내부 표현을 바꿀 수 없고, 불변식을 보장할 수 없으며, 외부에서 필드에 접근할 때 부수 작업을 수행할 수도 없습니다. 철저한 객체 지향 프로그래머는 이런 클래스를 싫어해 모두 private으로 필드를 변경하고 public 접근자(getter)를 추가합니다. class Point { private double x; private double y; public Point(double x, dou..

2023. 9. 9. 14:32
Study/이펙티브 자바

[Effective Java 3E] 클래스와 멤버의 접근 권한을 최소화하라

💥 개요 잘 설계된 컴포넌트는 클래스 내부 데이터와 내부 구현 정보를 얼마나 잘 숨겼느냐 입니다. 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리합니다. 오직 API만을 통해 다른 컴포넌트와 소통하며 서로의 내부 동작 방식에는 전혀 영향을 끼치지 않는데 이것을 정보 은닉, 혹은 캡슐화라고 합니다. ( 소프트웨어 설계의 근간이 되는 원리) 👍 정보 은닉의 장점 정보 은닉의 장점은 정말 많습니다. 그중 대부분은 컴포넌트를 서로 독립시켜서 개발, 테스트, 최적화, 적용, 분석, 수정을 개별적으로 할 수 있게 해주는 것과 연관이 되어있습니다. 시스템 개발 속도를 높인다. 각 컴포넌트를 병렬로 개발이 가능 시스템 관리 비용을 낮춘다. 작은 컴포넌트로 나눠 빨리 파악할 수 있고 디..

2023. 9. 9. 14:04
Study/이펙티브 자바

[Effective Java 3E] Comparable을 구현할지 고민하라

💥 개요 compareTo는 equals, hashcode, toString과 다르게 Object의 메서드가 아닙니다. 그리고 equals와 2가지만 제외하면 거의 비슷한데, compreTo는 동치성 비교에 더해 순서까지 비교할 수 있으며, 제네릭합니다. 즉 Compareble을 구현하게 된다면 그 클래스의 인스턴스에는 자연적인 순서가 있음을 뜻합니다. 그래서 Compareble을 구현한 객체의 배열은 Arrays.sort(a)와 같이 손쉽게 정렬이 가능합니다. public class WordList { public static void main(String[] args) { Set s = new TreeSet(); Collections.addAll(s, args); System.out.println(s..

2023. 9. 8. 22:09
Study/이펙티브 자바

[Effective Java 3E] private 생성자나 열거 타입으로 싱글턴임을 보증하라

💥 개요 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 싱글턴의 전형적인 예시로 함수와 같은 무상태성(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있습니다. 그런데 클래스를 싱글턴으로 만들면 사용하는 클라이언트를 테스트하기가 어려워 질 수 있습니다. 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 싱글턴 인스턴스를 mocking 할 수 없기 때문입니다. 💡싱글턴을 만드는 방식 우선 생성자를 private으로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둡니다. 1. public static 멤버가 final 필드인 방식 private 생성자는 public static 필..

2023. 8. 13. 04:20
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »

공지사항

  • GitHub & WorkSpace

전체 카테고리

  • Development (144)
    • Languege (39)
      • Java & Spring (27)
      • C# & ASP.NET (5)
      • JavaScript (2)
      • Kotlin (5)
    • DB (0)
      • Oracle (0)
    • Study (72)
      • 네트워크 (3)
      • 이펙티브 자바 (41)
      • 우아한 테크 코스 (7)
      • Next Step (3)
      • Certificate (5)
      • Side Proejct (6)
    • Error (18)
      • 개발환경 (10)
      • 트러블슈팅 (6)
    • Algorithm (12)
    • 개발환경 (1)
    • 회고 (2)
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #Java
  • #김영한 스프링
  • #AWS
  • #이펙티브자바
  • #도메인 주도 개발
  • #클라우드
  • #BOJ
  • #kotlin
  • #제네릭
  • #스프링부트
  • #TDD
  • #김영한
  • #자바
  • #트러블슈팅
  • #개발자
  • #구글 클라우드
  • #saa
  • #스프링
  • #파이썬
  • #spring
  • #GCP
  • #백준
  • #우테코
  • #spring boot
  • #후기
  • #백엔드
  • #이펙티브 자바
  • #코틀린
  • #effective java
  • #객체지향
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 토마토의 개발일지 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바