171031-TIL

Reading time ~1 minute

오늘 한일

체스 구현 진행 상황

  • Position과 관련된 Exception을 만들어서 잘못된 위치로의 조작이 있을시 예외 발생하게 구현

  • 이동 동작을 수행할 MoveStrategy 인터페이스 제작

  • Knight, King, Pawn같이 재귀적 혹은 반복적으로 이동할 필요가 없는 Piece들의 이동 구현(Pawn같은 경우는 실제 이동방식과 다른데 다른 Piece가 끝난 후 다시 작업해야한다)

TDD 수업

포비와 상담


오늘 느낀점

  • 체스자체의 진행은 별로 안됐다. 어려워서 못했다거나, 이전 볼링때처럼 너무 설계를 고민해서 못한건 아니고 뭔가 손이 덜 갔다. 그래서 나중에 전체적인 리펙토링을 해야겠지만 몇몇 신경쓰였던 부분들 작업을 먼저 했다. 그 덕에 정말 Piece들의 이동만 신경쓰면 되는 상태다. 그러고선 일단 한번의 이동만 하면 되는 Piece들만 고려해서 구현을 했다. 내일은 Queen과 같이 재귀적인 이동이 필요한 작업을 마무리 하도록 하자.

  • js 공부는 볼링, 체스 정도 웹프론트 작업은 가능한 수준으로 목표를 잡자. 공부 자체는 주말 및 남는 시간에 하자.

  • TDD 수업때 TDD도 TDD지만 BiFunction<T, U, R>이 신박했다.

    private static final Map<String, BiFunction<Number, Number, Number>> operators = new HashMap<>();
    
    	static {
    		operators.put("+", (a, b) -> new Number(a.no + b.no));
    		operators.put("-", (a, b) -> new Number(a.no - b.no));
    		operators.put("*", (a, b) -> new Number(a.no * b.no));
    		operators.put("/", (a, b) -> new Number(a.no / b.no));
    	}
    
    	private int no;
    
    	public Number(int no) {
    		this.no = no;
    	}
    
    	public Number calculate(String expression, Number number) {
    		BiFunction<Number, Number, Number> operator = operators.get(expression);
    		if (operator == null) {
    			throw new IllegalArgumentException();
    		}
    
    		return operator.apply(this, number);
    	}
    

    포비 코드의 일부다. static{ … }도 궁금해서 찾아봤는데 예전에 책에서 봤던 내용이다…역시 잘 안쓰는건 까먹는다. 당장 쓸일은 없을거 같은데 일단은 해당 클래스를 눈여겨 두고 여유가 있을때 적용 할 수 있는 곳들은 사용해 보자.

  • 포비랑 상담을 했다. 상담 준비를 하면서 내 생각들을 정리해본 시간과 상담 시간을 통해서 심적으로 좀더 안정적인 상태가 된거 같다. 사실(?) 다행히 상담전에도 심적으로 불안정하진 않았다. 현재는 학습에만 집중하자는 생각을 가지고 있었는데 그러면서도 한두번씩 생기는 잡음이 잡힌 느낌이다. 생각이 더 뚜렷해졌달까? 한가지 더 다행인건 예전부터 집에서도 서로간에 선택을 존중해 주고 그걸 어영부영 하는것만 아니면 지지를 해준다.(대신 어영부영한 선택에 행동이면 가차없다) 환경적으로도 도와주니 스스로 지칠수 있는 감정 소진은 줄이고, 다른 생각말고 한두달은 정말 공부만 신경쓰자.


내일 할일

  • 체스 구현 마무리

  • 코드스쿼드 내 사람들간 소개시간 갖기