GitHub - SY97P/java-calculator: 자바 계산기 구현 미션 Repository입니다.
OOP가 뭔지, 선언형 프로그래밍이 뭔지, 클린코드가 뭔지 개념으로만 알고있던걸 직접 써보니까 확실히 다르다.
객체지향 생활체조라는 게 있는지도 몰랐는데, 생각보다 많은 사람들이 복잡한 코드에 온 몸 비틀다가 이런 저런 아이디어를 떠올렸다는 생각이 든다.
잘 흡수해서 커리큘럼 말미에는 몸에 베어있으면 좋겠다.
여러 사람 코드를 보면서 비교도 가능하고, 보완도 가능한게 좋다.
클론한 프로젝트나 새로 시작한 레포지토리 관리를 매번 헤맸는데 이번 기회에 확실히 짚고 넘어간 것 같다.
초기비용이 줄어든다는게 이런것도 포함되나 싶다.
프로젝트 할 때마다 항상 구조 설계가 문제였다.
기능이 추가될때마다 구조를 변경하곤 했는데
이번엔 주어진 요구사항이 명확하고, 디자인 패턴으로 뭔가 상상력이 풍부한 상태라 이것저것 많이 시도해봤다.
강의 내용에서 리더님이 보여준 예제로 감을 잡고 시작한 것도 마음에 들었다.
귀찮음으로 범벅된 나의 인생덕에 늦게 접한 gitignore.
강사님의 조언으로 당최 뭐하는 놈인지, 어떻게 쓰는건지 알게 되었다.
git에 클린한 프로젝트를 올릴 수 있다는 장점 외에도,
내가 만든 코드 중 필요한 코드와 언제든지 만들 수 있는 코드를 구분할 수 있다는 게 좋았다.
.gitignore
파일 써보기build.gradle
에 내가 원하는 걸 넣어보기Calculator
: 모든 작업 요청, 결과가 이뤄지는 클래스Validator
: 검증 인터페이스Converter
: 후위변환 인터페이스Computer
: 계산 인터페이스Historian
: 계산 기록, 출력 클래스Input
: 입력 인터페이스Output
: 출력 인터페이스Operator
: 연산자 관련 enum 클래스InvalidInputException
: 표현식 검증 Exception 클래스계산에 들어갈 요소가 어떤게 있을지 생각하면서 적은게 좋았다.
Historian
-> Histories
exp
같은 축약어 사용 지양하기Calculator
클래스에서 label:
구문 제거switch
문으로 break
키워드 제거case
조건 String을 다시 Menu enum
클래스로 변환Calculator
run
메소드에서 들여쓰기 조절try-catch
블럭 두기validator
가 모호SimpleValidator
클래스에 있는 필드 변수 책임SimpleComputer
calculate
메소드 사용부분 단순화Historian
클래스에서 띄어쓰기, 수식 넣는걸 output
으로 책임 넘기기Operator
클래스 getOperator
메소드는 값을 못 찾을 때 NPE 발생 가능