2022년 정리3

조용휘·2023년 1월 22일
0

2022

목록 보기
3/10

onboarding 2주차 학습내용

학습 내용

인텔리제이 개발 환경 세팅 및 여러 툴 사용해보기 for 개인 스터디

  1. 깃헙에서 개인적인 자바 스터디를 위한 repository를 만들고 소스트리로 클론해서 로컬 저장소로 가져온 다음 project Structure를 세팅했다. 우테코에서 사용한 structure를 최대한 따라갔는데, src → main → java, 그리고 test 등의 파일 경로 등을 세팅해봤다. 처음에 경로들과 파일들을 설정할 때도 그 목적에 맞게 설정해야 한다는 것을 알게 되었다. ex) 모듈, 패키치, 일반 파일, 디렉토리, 등등
  2. 인텔리제이 내에서 커밋, 푸쉬해보기
    1. 인텔리제이 툴 자체적으로 commit, push 등의 기능이 있어서 한번 시도해보았다.
    2. 결과적으로 소스트리와 같은 역할을 하고 있다는 것을 알게 되었다.

Git & Github

Commit Message Conventions

SOLID & MVC 패턴 & TDD

다형성

  1. 객체의 다형성(인터페이스 상속 역시 가능)
    1. TV는 SmartTV의 부모 객체일 때, TV tv = new SmartTV(); 가 가능하다.

      객체의 다형성이 적용된 결과. 대신 SmartTV에 선언된 메소드들 중 TV에 선언된 메소드와 일치하는 메소드만 호출 가능하며, 메소드는 SmartTV 메소드를 사용한다.

  2. 메소드의 다형성
    1. 메소드가 동일 이름이어도 입력 파라미터가 다르면 개별적인 메소드로 취급(오버로딩?)
      1. 인터페이스로 구현하는 건가? 인터페이스는 오버라이딩을 사용하는데?

Dependency Injection(의존 관계 주입)

Camp.nextstep.edu.missionutils …

Console Class

Scanner 클래스를 통해 입력을 받는 클래스인듯.

  1. 필드 : private/static/ Scanner scanner
  2. 생성자 : default
  3. 메소드
    1. readLine (In : None / Out : String)

      이너 메소드인 getInstance를 통해 scanner를 가져와서 사용자로부터 새로운 입력을 받아 String으로 리턴한다.

    2. getInstance (In : None / Out : Scanner)

      scanner가 Null이거나 isClosed가 참이면 새로운 Scanner의 인스턴스를 만들어 반환한다.

    3. isClosed (In : None / Out : Boolean)

      1. public Field getDeclaredField(String name)
        1. Objects.*requireNonNull*(name); : 주어진 문자열이 null이면 NPE, 아니면 그 값을 리턴 - Nullity check
        2. public static SecurityManager getSecurityManager() : security manager가 이미 생성됐다면 이를 return. 아니면 Null retrun → sm
        3. if (sm != null) {
          checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true);
          } : 만약 sm이 존재한다면
        4. throw new NoSuchFieldException(name); : 만약 주어진 field를 몾찾으면 예외 생성.
        5. 최종적으로 getDeclaredField는 주어진 String을 검사해서 NullPointerException, NoSuchFieldException, SecurityException을 체크한 후 이 예외에 해당하지 않을 때 field로 리턴한다. 만약 예외 사항에 걸리면 catch되고 isClosed에 true를 리턴.
        6. 그 외엔 isClosed에 false가 리턴되어 기존 scanner 사용.
  4. Scanner 클래스
    1. nextLine() : 엔터가 들어오기 전까자의 문자열을 받음

      엔터를 기준으로 종료하기 때문에 이전의 입력에서 엔터가 남아있다면 넘어가버리는 오류가 발생할 수 있다. 주의하자.

    2. next() : 공백이 들어오기 전까지의 문자열을 받음

Randoms Class

public static native Thread currentThread() : static 메소드로 호출한 쓰레드의 객체를 반환함.

ThreadLocalRandom.*current*() : 멀티쓰레드 환경에서 서로 다른 인스턴스들에 의한 난수를 반환하므로 경합을 하지 않아 동시성에 안전한 방법.

Java는 Seed를 지정하지 않으면 컴퓨터의 현재 시간을 이용하여 난수에 대응한다.

  1. 필드 : private/static/final Random defaultrandom
  2. 생성자 : default
  3. 메소드
    1. public static int pickNumberInList(final List<Integer> numbers) : numbers 리스트가 비어있는지 체크한 후 넘버 생성.

JUnit5 & AssertJ

Java Style Guide

예외 처리

https://hbase.tistory.com/157

  1. 예외 대한 설명을 최대한 자세히 적어주자.
  2. 단, 예외의 이름으로 최대한 설명을 잘 하면 된다.
profile
Progress Gradually, Never Stop

0개의 댓글