Skip to main content

김시용

1. 📌 핵심 개념 정리

✅ 요약하기

  1. 의도 분명히 밝히기
    주석을 통한 설명이 필요한 변수명 짓지 말기.
    -> 코드의 함축성이 문제이다. 코드 맥락이 코드 자체에 명시적이여야 한다.

  1. 그릇된 정보 피하기
    일관성이 떨어지는 변수명 표기법 피하기
    특히, 'l' (알파벳 소문자 엘), 'O' (알파벳 대문자 오) 등의 사용 피하기

  1. 의미 있게 구분하자
    noise word (a, an, the 등), 의미가 비슷한 단어 (info, data 등) 피하기

  1. 검색하기 쉬운 이름 사용
    변수, 상수 이름이 길어져도 찾기 쉬우면 ok!

  1. 인코딩을 피하라
    변수명에 인코딩할 정보는 아주 많으므로 유형이나 범위 정보까지는 인코딩하기 피하기
    • 멤버 변수에 m_ 이라는 접두어 붙이지 않기
    • 인터페이스에 I라는 접두어 붙이지 않기

  1. 클래스, 메서드 이름
    • 클래스 이름 : 명사나 명사구 사용 (동사 사용x)
    • 메서드 이름 : 동사나 동사구 사용
      * 생성자 중복정의 -> 정적 팩토리 메서드 사용

2. 🤔 이해가 어려운 부분

🔍 질문하기

  1. 생성자 중복 정의
    • 어려웠던 부분
      정적 팩토리 메서드 통해서 생성자 중복 정의 하는 법
    • 궁금한 점
      실제 사용 방법과 예시 살펴보기

  1. 의미 있는 맥락 추가하기
    • 어려웠던 부분
      함수 하나에 여러 기능을 넣지 말고 작은 조각으로 쪼개기 (맥락 추가하기)
    • 궁금한 점
      함수 하나당 기능을 하나만 넣는 것이 맥락을 파악하기 편한데 기능의 단위가 궁긍하다.
      • 함수 이름이 기능을 명확하게 설명해야 한다
      • 하나의 함수는 하나의 역할만 수행해야 한다
      • 중복 코드를 제거하고 재사용 가능해야 한다
      • 다른 함수에 과도하게 의존하지 않도록 해야 한다.

3. 📚 참고 사항

📢 논의하기

  1. 관련 자료 공유
    • 생성자 중복 정의
  • 개선 전 : 생성자 이름이 똑같으므로 어떤 의미인지 명확하지 않음 -> 생성자 개수 늘면 관리 힘듦
class Person {
    private String name;
    private int age;

    // 첫 번째 생성자
    public Person(String name) {
        this.name = name;
        this.age = 0;  // 기본 나이 설정
    }

    // 두 번째 생성자 (오버로딩)
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
  • 개선 후 : 각 생성자 의미가 명확, new연산자 사용하지 않으므로 불필요한 객체 생성 방지
class Person {
    private String name;
    private int age;

    // private 생성자로 직접 객체 생성 방지
    private Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 정적 팩토리 메서드 1: 이름만 설정하는 경우
    public static Person withName(String name) {
        return new Person(name, 0);  // 기본 나이 설정
    }

    // 정적 팩토리 메서드 2: 이름과 나이를 설정하는 경우
    public static Person withNameAndAge(String name, int age) {
        return new Person(name, age);
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}
  • 사용 방법
public class Main {
    public static void main(String[] args) {
        Person p1 = Person.withName("Alice");          // 기본 나이 0
        Person p2 = Person.withNameAndAge("Bob", 25);  // 이름 + 나이 설정

        System.out.println(p1); // Person{name='Alice', age=0}
        System.out.println(p2); // Person{name='Bob', age=25}
    }
}