2021-02-23-TIL

@Test
public void findPiece() {
  board.initialize();
  assertThat(board.findPiece("a8"))
    .isEqualTo(Piece.createBlackRook(new Position(0, 7)));
  assertThat(board.findPiece("h8"))
    .isEqualTo(Piece.createBlackRook(new Position(7, 7)));
  assertThat(board.findPiece("a1"))
    .isEqualTo(Piece.createWhiteRook(new Position(0, 0)));
  assertThat(board.findPiece("h1"))
    .isEqualTo(Piece.createWhiteRook(new Position(7, 0)));
}

  • Board

whitePawnSize()blackPawnSize()를 따로 구현한 이유가 있나요? 어차피 list.size()로 가져올 것 이라면 없애는 것도 좋은 것 같습니다.

List 를 모두 따로 관리하는데 각 piece의 size를 구하는 메서드가 별도로 존재하지 않는다. pieceCount에서 list.size()를 모두 더한 값을 리턴해야 테스트를 통과할 것 입니다.

getDotOnBoard() 는 그냥 문자열 리터럴을 리턴하는데 그냥 변수랑 다른점이 없는 것 같습니다. 이것을 final 상수로 선언하는 것이 나을 것 같습니다.

  • StringUtils

utils.StringUtils.appendNewLine()getBoard()에서 사용하지 않습니다. 그리고 getBoard()라는 메서드명은 자칫 getter와 그 기능이 혼동이 올 수 있는 것 같습니다.

  • PieceTest

verifyPiece()는 논리적으로 같은 단위이므로 assertAll로 묶어도 좋을 것 같습니다.

getWhitePawnInstance() 에서 Instance 라는 이름은 굳이 필요가 없을 것 같습니다.

팩토리 메서드에서 get ~ instance라는 이름은 싱글톤에서 많이 사용한다. create ~ 라는 이름을 팩토리 메서드에서 많이 사용한다. static factory 메서드. get은 리턴값이 있다는 의미가 명확한 의미가 좋다.

- from: 하나의 매개변수를 받아서 인스턴스를 생성
- of: 여러개의 매개변수를 받아서 인스턴스를 생성
- instance or getInstance: 인스턴스를 반환하지만 동일한 인스턴스임을 보장하지 않는다.
	- 보통 singleton을 구현할때 많이 사용하는 네이밍이지만 singleton이랑은 무관하게 매번 신규 생성될 수 있다.
create or newInstance: 매번 새로운 인스턴스를 반환한다.

instance or getInstance 의 서브셋 개념이라고 볼 수 있을듯
getXxxx: getInstance와 같으나 호출하는 클래스와 다른 타입의 인스턴스를 반환할때 사용

예를들어 Date.getInstance() 는 Date 타입의 인스턴스를 반환하지만 Date와 상관없는 Period 타입을 반환한다면 Date.getPeriod() 가 된다.
newXxxx: getXxxx와 같으나 매번 새로운 인스턴스를 반환한다.

출처: https://multifrontgarden.tistory.com/255 [우리집앞마당]
git --log oneline
git stash // 임시저장 했다가
git stash pop // 다시 되돌리기

Collections.lineSeparator

오류가 발생해도 끝나지 않았으면 좋겠다하는 에러는 catch로 잡고, throws는 상위 객체로 책임을 떠넘기는 의미를 가진다.