이 글은 인프런 '박우빈'님의 Readable Code: 읽기 좋은 코드를 작성하는 사고법이라는 인프런 강의를 공부하며 정리한 내용이다. 가독성이 좋지 않게 짜여진 지뢰 찾기 게임 코드를 가독성 좋은 코드로 리팩토링 하며 읽기 좋은 코드를 작성하는 방법에 대해 학습한다.
Readable Code: 읽기 좋은 코드를 작성하는 사고법 강의 | 박우빈 - 인프런
박우빈 | 이 강의를 통해 클린 코드 원칙에 대한 깊은 이해를 하고, 객체 지향 사고 방식에 입각한 깔끔한 코드를 작성할 수 있게 됩니다. 클린 코드와 객체 지향이 궁금한 분, 코드를 정말 잘 짜
www.inflearn.com
왜? 읽기 좋은 코드를 작성해야 하는가
읽기 좋은 코드를 작성하는 이유는 '가독성' 때문이다.
모든 코드는 지속적으로 관리되어야 하고, 리팩토링 되어간다. 가독성이 좋지 않은 코드는 협업하는 동료 개발자에게 코드를 이해하는데 많은 시간을 투자하게 한다. 이는 '유지보수 하기 힘들다' 라는 의미가 된다.
개발의 효율성을 높이고, 협업을 수월하게 하며, 코드의 오류 발생 가능성을 낮추기위해 가독성 좋은 코드를 작성하는 것은 필수가 아닐까 생각된다.
1. 불명확한 변수명 역할에 맞는 변수명으로 리팩토링
- 지뢰찾기 게임의 게임판을 초기화 하는 코드. 반복문의 i, j 라고 명확하지 않은 코드를 row(행), col(열)을 의미하는 코드로 바꿔준다.
- 게임판에서 선택할 좌표를 선택 & 해당 좌표를 오픈 할 것인지, 깃발을 꽂을 것인지 입력받는 부분을 명확하게 바꿔준다.
2. 기능별 메서드 추출하여 코드 구조화 (하나의 메서드는 하나의 역할을 하라)
- 게임시작 코멘트, 지뢰찾기 판을 초기화 하는 코드 등을 메서드로 추출하여 구조화 시킨다. 메서드의 이름을 보고 어떤 역할을 하는 코드인지 한 눈에 알아보기 쉬워진다.
3. 추상화 레벨을 동등하게
- 게임 승리, 게임 패배를 체크하는 코드이다. 메서드로 추출하여 추상화시킨 코드들 다음에 갑자기 구체적인 코드가 등장하여 이해하기 어려워진다. 추상화 레벨을 동등하게 메서드로 추출하여, 게임 승리 & 게임 패배 라는 의미가 바로 이해될 수 있게 한다.
4. 매직 넘버 & 매직 스트링 - 상수로 추출
의미를 갖고 있으나, 상수로 추출되지 않은 숫자, 문자열을 상수로 추출하도록 한다. 의미를 부여함으로써 가독성이 향상된다. 또한 상수로 추출하였을 경우 추후 변경사항이 있을 때 변경에 용이하여 유지보수성이 향상된다.
약간의 리팩토링 후..
- 변수 네이밍
- 기능별 메서드 추출로 구조화
- 추상화 레벨을 주변 코드와 동일하게
- 매직 넘버 & 매직 스트링 - 상수로 추출
리팩토링 이전 코드는 main 메서드에 약 160줄 가량 코드가 모두 작성되어 있었다. 이 코드가 무슨 역할을 하는지 처음 읽어보면 이해하기 매우 힘들었다.
아직 더 진행할 것이 많지만 리팩토링 이후, main 메서드는 30줄 가량 코드로 줄었다. 전보다 코드의 구조를 파악하기 수월해짐을 느꼈다.
https://github.com/yoonion/my-readable-code
GitHub - yoonion/my-readable-code: [Readable Code: 읽기 좋은 코드를 작성하는 사고법]
[Readable Code: 읽기 좋은 코드를 작성하는 사고법]. Contribute to yoonion/my-readable-code development by creating an account on GitHub.
github.com