스터디 회고
동국
객체를 뽑아내는 고민을 하면서 이제 점점 객체지향적 사고방식을 점점 알아가는 것 같습니다. 정말로 신이 존재한다면 그도 이런 사고로 세상을 창조하지 않았을까요?
하지만 아직 수련이 부족하여 객체지향적인 사고에 자신감은 없네요.
한편, 리팩토링을 할때 이전에 만들어 둔 테스트가 버텨주고 있으니 정말 든든하고 편했습니다.
테스트의 그린라이트를 볼때는 정말 뿌듯하고 진짜 공부를 한듯한 느낌을 받네요. 반면 빨간색은 싫어지는...
또, 스텝바이스텝으로 리팩토링을 하니 복잡도가 줄어들고 일이 착착 진행되는 느낌을 받아 굉장히 단백했습니다.
이런 과정을 천천히 밟아 보니 다음 그림이 떠올랐습니다.
RED(테스트 실패) -> GREEN(테스트 성공) -> BLUE(리팩토링)
윤성
- 지금 당장 눈앞에 있는 코드에서 벗어나 더욱 더 멀리, 넓게 볼 수 있는 프로그래밍적 관점을 배운 시간이였다.
- 특히 injection과 객체화에 대한 토론에서 많은 insight를 얻을 수 있었던것 같다.
injection을 논의할 때에는 지금까지 test코드를 바라보던 관점들인 '서비스코드와 실시간으로 상호작용을 할 수 있다, 에러처리가 빠르다. 소스코드 수정 및 리팩토링에 자신감을 줄 수 있다'는 것에서 발전시켜 코드설계나 객체지향의 시점을 알려주는 선각자가 된다는 것을 배웠다. (수업중에 논의되었던 '테스트코드가 복잡한건 실서비스 항목에서 리팩토링이 필요한 것이다'나, '테스트코드에서 중복되는건 객체화를 고민해볼 시기라는 것') 등과 같은 항목들이 인상깊엇다.
- 현재 학교수업을 통해 여러 프로젝트를 진행하고 있지만, 루비스터디가 가장 즐겁다. 테스트코드와 todo list가 함께하기 때문인것 같다. 보통 다른 프로젝트의 경우 한번 시작하면 빠져들어 재밌게 코딩하지만, 한번 시작하기가 어렵다. 하지만 루비 스터디는 앞서 이야기 한것과 같이 테스트코드와 todo list덕분인지 코딩의 시작과 끝이 부담되지 않는것 같다.
- 밀려있던 스터디준비를 지난밤, 한꺼번에 하다보니 코드의 질이 떨어지는 것을 많이 느꼈다. 나름 코드작성 + 리팩토링의 순서를 지켜서 진행했지만 스터디 시간에 논의되는 리팩토링의 수준으로 사고하기 위해서는 아직 자주보고, 고민해봐야겠다는걸 느꼈다.
재성
- 객체를 추출해 가는 과정을 어려워함. 스터디를 시작하기 전에 객체를 왜 추출해야 되는지에 대한 논의를 함.
- Size, Position 객체를 추출함.
- Position을 Grid 크기에도 사용하려고 함.
- 그런데 의미상 명확하지 않다는 느낌을 받음.
- 학생들이 스스로 객체를 찾아갈 수 있도록 시간을 가지고 기다려 봄.
- 한 참을 논의한 후 Position과 별개로 Size라는 클래스를 분리하는 것이 좋겠다로 결정함. 단, Size가 Position을 상속하면 되겠다.
- 구현을 하기 전에 위 과정으로 설계하는 과정을 가짐.
- 설계 과정 후 개발 진행함.
- 기존 기능에 대한 변경은 하지 않으면서 점진적으로 소스 코드 리팩토링 진행함.
- 최대한 컴파일 에러가 발생하지 않도록 구현함. ruby에서 메서드 오버라이딩이 되지 않는 것을 확인함.
- 단위 테스트는 반드시 통과하는 과정으로 진행함.
- 마지막 느낌.
- 기능 구현 보다는 리팩토링이라는 한 가지 주제에 집중하면서 최대한 천천히 진행한 것이 학습하는데 큰 도움이 되었음.
- 빠른 속도로 기능 구현하는 것에 집중하기 보다 OOP, TDD, 리팩토링이라는 주제에 집중한 것이 스터디와 학습에 대한 몰입도를 가져왔음.
- 한 번에 너무 많은 기능을 추가하는 것보다 한 번에 한 가지 경험, 한 가지 주제를 다루는 것이 집중하는 것이 훨씬 더 좋겠다.
- 프로그래밍에 대한 기본 지식, 루비에 대한 기본적인 문법을 알고 있는 상태라 다음 단계로 자연스럽게 발전할 수 있어 스터디에 대한 몰입도가 더 높다는 느낌을 받았음.
루비에서 Dependency Injection