1주차 과제 메일이 도착했다.
기간은 1주일이며, github를 통해 기본 세팅을 받고 코딩 후 제출 하는 방식이였다.
과제는 크게 기능 요구사항
, 프로그래밍 요구사항
, 과제 진행 요구사항
3가지로 구성 되었다.
기능 요구사항은 Java를 배우면서 만들어 봤던 단순 숫자야구였다.
indent(인덴트, 들여쓰기) depth를 2가 넘지 않도록 구현한다.(1까지만 허용)
while(index > 0) { // depth 1
for (int i = 0; i < list.size(); i++) { // depth 2
...
}
}
자바 8에 추가된 stream api를 사용하지 않고 구현해야 한다. 단, 람다는 사용 가능하다.
else 예약어를 쓰지 않는다.
함수(또는 메소드)의 길이가 10라인을 넘어가지 않도록 구현한다.
AngularJS Git Commit Message을 읽어 보았는데 영문이어서 당황했다. 평소 commit시 정해진 규칙 없이, 날짜 커밋한 사람, 커밋 내용만 적었었는데 해당 문서에서는 커밋 내용이 버그 수정인지, 테스트 코드 작성인지, 리팩토링인지 구분하는데 해당 내용 관련해서는 나중에 시간 내서 따로 찾아봐야겠다.
처음으로 테스트 코드를 작성하고 실행시켰다.
프로젝트를 clone 하였을 때 ApplicationTest.java에 기본 테스트 코드 2개가 있었는데 그중 하나가 입력값 예외 처리 기능에 대한 테스트 코드였다. 해당 테스트가 계속 실패하였다. 프로젝트를 직접 실행했을 때는 예외 처리가 잘 되었는데 테스트 코드로는 계속 실패가 떠서, 해당 테스트 코드 함수들을 까보다가 우연히 예외 처리하는 함수가 static으로 선언되어 있어서 테스트에서 인식을 못 하는거를 알아서 해당 함수를 변경하니까 테스트에 성공했다.
또한 기능 단위로 테스트를 진행하고 싶었는데 랜덤 값 입력이나, private로 선언되어 접근 못하는 함수는 어떻게 테스트 하는지 등 궁금한 점이 많이 생겼다.
구글링한 결과 접근 제한된 함수인 경우 테스트를 진행하지 않는다고 한다.
최대한 함수, 변수 이름을 객관적으로 짓기 위해 노력을 하였다.
또한, 자바 코드 컨벤션을 지키기 위해 해당 문서를 읽어 봤는데 이해가 안 되는 부분도 있고, 익숙하지 않아서, 습관적으로 코딩하다 보니 해당 규칙을 못 지킨 부분이 있었던 거 같다.
사실, 지금 재직 중인 회사에는 따로 규칙이 없다 보니 그동안 너무 마음대로 코딩한 거 같아 자바 코드 컨벤션 익숙해지기 위해 번역하고 규칙에 따라 코딩해야겠다고 생각했다.
함수(또는 메소드)가 한 가지 일만 잘하도록 구현한다.
해당 부분도 당연한 이야기지만 그 동안 못 지킨 거 같아 반성을 많이 하게 되었다.
프리코스 1주차 야구게임를 작성하고 과제를 제출했다.
재직 중인 회사에서 SVN을 사용하는데 과제를 받거나 제출할 때 gitHub를 사용해서 어려울 거 같았는데 보내준 PDF에 설명이 잘 나와 있어서 그대로 따라 하니 쉽게 되었다.
과제 제출일이 지나고 과제 제출 레파지토리에 가보니 200명 이상이 제출한 거 같았다.
다른 분들은 기능 목록(Read.me)을 어떻게 작성하였는지
, 프로젝트 구조를 어떻게 설계를 어떻게 했는지
, 커밋 메세지는 어떻게 작성하였는지
, 함수 또는 변수 네이밍은 어떤 식으로 지었는지
살펴보았다.
각자 다른 방법으로 과제를 제출하였는데 실력이 부족한 나로서는 어떤 방법이 더 좋은지는 모르겠다.
시간이 좀 더 있었으면 잘 할 수 있을 거 같은데, 회사 일도 바쁘고 회식도 생기고 아쉬움이 많이 남았다.