[TDD, 클린 코드 with Java] 강의를 듣고나서
[TDD, 클린 코드 with Java] 17기 수료후기
수료 후기를 쓰긴 했지만 그것과는 별개로 강의를 듣는동안 들었던 생각같은걸 정리해보려고한다!
TDD는 테스트 기술이 아니다
사실 TDD~ TDD 하면서 누구나 한번쯤은 들어봤을것같다
검색 한번만 해봐도 Test Driven Development(테스트 주도 개발) 이라고 나오는데
아! 테스트를 먼저 작성하는 방법론이구나 라고 바로 알수있다.
하지만 가장 중요한 점은 TDD는 분석과 설계 기술이라는것..
만들고자 하는 프로그램의 목적과 기능들간의 관계에 대한 분석, 설계가 안돼있다면
애초에 테스트를 만들수가 없다..
그래서 미션을 진행하면서 다시 처음부터 만들고 하는 경우가 여러번 있었다..
분명 분석, 설계를 열심히 하고나서 시작했는데도 중간쯤 가서는 아 내가 잘못알았구나!!
를 깨달을때도 정말 정말 많았다.
미션때마다 기능목록을 먼저 작성하고 시작하는데 미션이 끝날때까지고 기능 목록을 수정하는 나..
얼마나 분석, 설계가 중요한지 여실히 느꼈다.
가장 중요한건 객체지향설계
미션을 진행하면서 강사님과 리뷰어님들이 가장 중요시 하는건 객체지향 프로그래밍이라고 느꼈다.
사실 TDD도 객체지향적으로 설계를 한다면 자연스럽게 따라오는것이라고 생각한다.
빈도는 줄었지만 처음 미션부터 마지막 미션까지 리뷰에 등장하는 내용이
"객체에게 물어보면 어떨까요? 였다.
그동안 getter, setter로 값을 꺼내오는것에 익숙하던 난 매번 실수를 했다..
아마 Java를 사용하는 모두가 Java는 객체지향언어인걸 알고있을것이다
그런데 Java를 객체지향적으로 사용하고있는 비율보단
절차지향적으로 사용하고있는 비율이 더 많을것같다.. (나만의 생각)
간단하게 예를 들자면
강의가 무료강의인지 유료강의인지 상태를 가진 class가 있을때
public class Session {
private String pricePolicy; //FREE 또는 PAID
}
강의를 듣기전의 나라면
public class JavaClass {
//..이전 코드
Session mySession = new Session();
if (mySession.getPricePoilcy().Equals("FREE")) {
//이 강의는 무료입니다.
}
}
아마 이렇게 했을것같다.
하지만 이제는
public class JavaClass {
//..이전 코드
Session mySession = new Session();
if (mySession.isFree()) {
//이 강의는 무료입니다.
}
}
이런식으로 객체에게 물어보는식으로 작성을 해야된다. 이래야 객체지향이라고 할수있을것같다.
객체를 사람처럼 의인화 해서 객체에게 물어보기!
이게 정말 간단해보이지만 이 간단한걸 기능을 만들다보면 자꾸 실수를 한다..
기능이 많아지고 추상화가 늘어나고 책임에대해서 고민하다보면 그리 간단해지지않는것같다..
계속 더 좋은 방법에대해 고민하겠지만 뭐든지 딱 하나의 정답은 없는것같다.
유지보수하기 좋은 코드, 클린코드는 뭘까?
위에서 말한대로 당연히 좋은 설계와 객체지향 프로그래밍이 좋은코드, 클린코드의 기본이겠지만
이런것들은 굉장히 추상적이고 정답이 없다.
시간이 지나면서 내가 성장하던 기술이 성장하던 계속 발전할텐데
그럴때마다 매번 새로운 기준이 적용돼야될까? 그럼 오히려 이것저것 섞여서 난해할 코드가 될것같다.
내가 생각하는 베스트는 프로젝트 시작할떄 코드의 기준을 확실히 설정하고, 그것을 철저하게 지키는것이다.
지나고보면 설계가 조금 미흡했고 객체지향에 대한 이해가 부족했더라도
회사, 팀, 어떤 그룹간에 명확한 기준을 설정하고 그대로 실천한다면
적어도 그 조직에선 그게 정답 아닐까? 너무 최신의, 유명한, 인기있는걸 따라하려고만 하진 말자..
여기까지 뒤쳐진 사람의 생각이었습니다.ㅋ_ㅋ
앞으로
도~ 똑같다. 열심히 일하고, 공부하고...
아직도 배울게 얼마나 남았는지 감도 안잡힌다는게 조금 막막하긴 하지만
그래도 이 강의가 내 커리어에있어서 정말 중요한 지점이 될것이라고 생각한다.
나중에 이 글을 보면 좁은시야, 짧은 생각이 창피하고 쪽팔릴때도 오겠지만
이럴때가 있어야 그럴때도 오는거지 뭐~!