TDD란 Test Driven Development의 줄임말로 '테스트 주도 개발'이라고 한다.
테스트 주도 개발은 설계 이후 코드 개발 및 테스트 케이스를 작성하는 기존의 개발 프로세스와 다르게 테스트케이스를 작성 한 후 실제 코드를 개발하여 리펙토링하는 절차를 따른다.
코드 양이 많아진 상황에서는 좋은 코드를 작성할 때 고려해야하는 요소를 모두 지키며 작성하기 쉽지 않다. 하지만 테스트 주도 개발을 통해 개발을 하면 뚱뚱해진 함수를 여러 함수로 나누는 과정에서 해당 기능이 오작동을 일으킬 수 있지만 간단히 테스트를 돌려봄으로써 이에 대한 안심을 하고 계속해서 리팩토링을 진행할 수 있다. 결과적으로 리팩토링 속도도 빨라지고 코드의 퀄리티가 좋아진다.
새로운 기능을 추가하기 전 테스트를 먼저 작성한다.
이 를 위해서는 개발자는 해당 기능의 요구사항과 명세를 분명히 이해하고 있어야 한다.
이는 사용자 케이스와 사용자 스토리 등으로 이해할 수 있으며, 개발자가 코드 작성 전에 요구사항에 더욱 집중할 수 있도록 도와준다.
기존 코드에 테스트코드까지 작성해야 해서 필요한 코드의 양이 늘어난다.
코드의 퀄리티보다는 빠른 생산성이 요구되는 시점에서 TDD는 추천하지 않는다.
어떠한 부분을 어떻게 테스트해야하는지 등 여러 부분에 대한 학습이 필요하고 익숙해져야 한다.
또한 팀 전체가 익숙해져야 하므로 진입 장벽이 높다.
Functional Programming is programming without assignment satements
함수형 프로그래밍은 대입문이 없는 프로그래밍이다.
-Rober C.Martin(클린 코드 저자)-
함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로, 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다.
immutable 객체는 객체가 가지고 있는 값을 변경할 수 없는 객체를 의미한다. 값이 변경될 경우, 새로운 객체를 생성하고 변경된 값을 주입하여 반환해야 한다.
mutable 객체는 해당 객체의 값이 변경될 경우 값을 변경한다.
함수형 프로그래밍에서 함수(function)는 일급 객체로 간주된다.
아주 유익한 내용이네요!