본문 바로가기
반응형

Back/자바지기 클린코드&TDD3

문자열 계산기 1차 구현 사실 문제만 보고서 어떻게 구현해야 할지 몰라 처음에는 테스트코드만 짜서 만지작 거렸다. 도저히 이렇게 하는 건 아닌 것 같다 싶어서 다른 분들이 하신 걸 참고했는데 역시나 클래스를 설계해서 우선 구현하고 그다음에 테스트를 통해 검증하는 거였다. 이제야 알았다 하더라도 알고리즘이 나한테는 어려워서 씨름하다가 모르는 건 찾아가면서 나름 내 코드로 구현해 봤다. 당연히 당연히 정답은 아니고 피드백도 받기 전이고 그냥 내가 각 단계마다 어떤 생각으로 구현했는지 기록하기 위함이다. 개선할 점이나 지적질은 너무 환영입니다. 요구사항을 간단하게 요약하면 "1 + 2 * 3 / 3"와 같은 문자열을 일반 사칙연산의 우선순위를 무시하고 나열된 순서대로 계산 후 결과를 출력하는 거다. 우선 최대한 객체 지향 프로그래밍을.. 2023. 2. 22.
JUnit, AssertJ를 활용한 Test 연습 기존 Main method를 통한 테스트는 몇 가지 문제점이 있었다. 이 문제점을 해결하기 위해 등장한 도구가 JUnit이다. Main method 테스트의 문제점 Production code와 Test code가 클래스 하나에 존재하여 클래스 크기가 커지고 복잡도가 증가한다. Test code가 실제 서비스에 같이 배포되버린다. main method 하나에서 여러 개의 기능을 테스트하기 때문에 복잡도가 증가한다. method 이름을 통해 어떤 부분을 테스트하는지 의도가 불분명하다. 테스트 결과를 개발자가 수동으로 확인해야 한다. 테스트 연습 1 (assertThatThrownBy 연습) 예외를 발생시켜야만 아래 테스트가 통과된다. @Test @DisplayName("예외 발생 시 StringIndexO.. 2023. 2. 20.
클린코드는 왜 중요한가? 객체 지향 설계에서 어려운 점은 소스 코드 중 문제가 있는 부분을 찾는 것이고, 어떻게 리팩터링을 할 것인지는 그 다음 이슈이다.대신 코딩해주는 AI들이 떠오르는 화두이지만 그렇다고 하더라도 코드는 항상 존재할 수밖에 없다. 그러므로 개발자는 클린 코드에 항상 관심을 가져야 한다. 클린 코드를 고려하지 않고 개발하면 당장은 빠르게, 생산성 높게 개발할 수 있겠지만 시간이 지날수록 생산성이 떨어지기 마련이다.결국엔 갈수록 치우기 어려운 거대한 똥을 쌓아나가는 셈이다.실무자는 현저하게 떨어진 생산성에 고통받아 재설계를 고려하며 제안하게 되고 관리자는 악화되는 상황에 어쩔 수 없이 뒤늦게 재설계를 허락한다. 클린 코드는 운동과도 같다. 하루 이틀 연습하여 구현한다고 한들 소용없다. 지속적으로 훈련하며 적용시켜.. 2023. 2. 20.