FeelingXD

[독서] - 켄트 벡의 Tidy First? - 1 본문

글쓰기/독서

[독서] - 켄트 벡의 Tidy First? - 1

FeelingXD 2025. 3. 28. 23:47

저자 켄트백은 TDD(테스트 주도개발) , EX(익스트림 프로그래밍) 등의 개념과 애자일 방법론의 대가로 테스트 주도개발문화를 설파한 개발자이다.

Tidy First?

제목대로 Tidy( 깔끔하게 ) First? ( 먼저 )? 마치 책 제목을 통해 코드의 정리 가 먼저인가 코드의 작성 이 먼저인지
마치 닭 과 알 논쟁인것 처럼보이기도한다. 켄트백은 이책을 통해 다양한 상황에서 코드 정리법 또 자기만의 기준을 제시한다.

코드 정리법

안 쓰는 코드

지워버리세요 그게 다입니다. 심플하고 충격적인 답이다. 실무를하면서 어쩌면 나도 이생각을 가지고있지만 막상 실천하기는 정말어렵다. IDE 에서 실행되지 않는 변수, 메서드 등이 사용되지 않는다는 경고 가 나와도 차마 지우지는 못하고 주석 처리하는 정도로만 대응했다. (코드 작성자가 어떤이유에서 코드를 남겨두었는지 몰랐기에) 사실 git 기록을 통해 언제든 복원을 할수있더라도 코드를 작성하는 것보다 기존 코드를 지운다는 것이 내게는 더어렵게 다가왔다. 😂 만약 지웠다가 문제가 생긴다면 ? 의문의 불안감을 지워낼수가없다. 물론 내가 작성한 코드는 지우려고 하고있다. :/

대칭으로 맞추기

이 주제는 일관성 있는 코드로 표현해도 좋을것같다.

# 비슷한동작 혹은 메서드, 함수 작성시 일관된 규칙을 사용해서 반환 혹은 예측가능하게 일관성을 가져가도록 하자 
foo() return 1 condition else 2
foo2() = lambda x: 1 condition(x) 2

최근에 안드로이 관련 코드를 작성하면서 주제와 관련해서 피드백을 받은 경험이 있어 찔린다. 😂

응집도를 높이는 배치

  • 패키지 구조, 메서드 클래스를 묶어서 가져가기

    예를 들어 특정 인터페이스의 구현체를 해당 패키지 하위의 Impl 형태의 디렉토리에 위치시켜 모이게 해두기

선언과 초기화는 동시에 진행하기

kotlin 에서는 lazy init 등 .. 지연초기화가 있지만 가능하면 명시적이고 초기화 시점에 변수를 해야겠다. 라는생각이 든다. 변수의 선언과 초기화가 동시에 이루어지지않으면 변수가 무슨일을 하는지 포커스를 놓지게 되고 알수없고 잠재적으로 예측 불가 한 코드를 작성할수있다.

// 선언과 초기화가 동시에 이루어지지않는경우
fun foo(){
    val a : String ;
    ......

    a = "init"
}

이 케이스에서는 상수 선언 (val) 사용이여서 실수가 줄어들수 있지만 여전히 선언과 초기화가 동시에 이루어지지 않아 상당히 별로다 :P .. 가능한 상수를 사용하고 선언과 초기화는 동시에 가져가는 코드를 작성하는 습관을 들여야겠다.

'글쓰기 > 독서' 카테고리의 다른 글

[독서] - 데미안  (0) 2024.07.07