2021-02-16-TIL
2021-02-16-TIL
조건 분기 없이 커맨드 실행하기
Map<String, Runnable> 로 조건 분기문 없이 커맨드를 실행할 수 있다.
콘솔 프로그램에서 입력 명령마다 다른 동작을 하려면 보통 if-else나 switch를 길게 쓴다. 명령이 늘어날수록 분기문도 길어지고, 명령을 추가할 때마다 그 분기문을 고쳐야 한다. Runnable은 인자도 반환값도 없는 run() 메서드 하나만 가진 함수형 인터페이스라서 람다로 바로 만들 수 있다. 명령 문자열을 키로, 실행할 동작을 값으로 Map에 담아 두면 분기문 대신 조회 한 번으로 실행할 동작을 찾는다.
1
2
3
4
5
6
7
Map<String, Runnable> commands = new HashMap<>();
commands.put("start", () -> game.start());
commands.put("end", () -> game.end());
commands.put("status", () -> printStatus());
commands.getOrDefault(input, () -> System.out.println("알 수 없는 명령"))
.run();
새 명령을 추가할 때는 put 한 줄만 늘리면 되고, 기존 분기 로직은 건드리지 않는다. 동작에 인자가 필요하면 Consumer<T>나 직접 정의한 함수형 인터페이스를 값으로 쓰면 된다.
체스 미션에서 생각해 볼 것
black인데 white_representation 인 폰이 생성되면?
색과 표현 문자를 따로 받아 생성할 수 있으면, 서로 맞지 않는 조합의 객체가 만들어질 수 있다. 색을 받으면 표현 문자가 거기서 결정되도록 생성 경로를 하나로 묶으면 이런 잘못된 상태를 처음부터 만들 수 없다.
스터디와 코드 리뷰
1000문제 풀면 카카오 뽑힌다. TIL 쓰면 뽑힌다.
Dong과 함께 알고리즘 스터디를 개설했다.
코드리뷰를 하면서 많은 것을 배웠다. 다른 사람의 리뷰와 코드를 보면서 많이 배워야겠다.
닫힌 풀 리퀘스트 다시 열기
클로즈된 풀리퀘스트를 어떻게 다시 열수있나?
reopen 하거나 브랜치를 따로 만들어서 옮겨서 pr
브랜치당 pr은 하나!!
브랜치는 아무리 많이 만들어도 상관없으니 백업하고 수행
풀 리퀘스트는 특정 브랜치(head 브랜치)를 기준으로 열린다. GitHub 문서에 따르면 PR을 연 뒤에도 head 브랜치에 새 커밋을 추가하면서 변경을 이어 갈 수 있다. 다시 말해 그 브랜치에 푸시한 커밋은 모두 그 PR에 들어간다. 그래서 한 브랜치에서 서로 다른 작업을 섞으면 PR의 범위도 섞인다. 작업마다 브랜치를 따로 만들어 PR을 하나씩 대응시키면 리뷰 범위가 분명해진다.
브랜치는 커밋을 가리키는 가벼운 이름이라 얼마든지 만들 수 있다. 리베이스나 강제 이동처럼 이력을 바꾸는 작업을 하기 전에 현재 위치에 백업 브랜치를 하나 만들어 두면, 잘못되었을 때 그 브랜치로 돌아갈 수 있다.
댓글
아직 댓글이 없습니다