Part 3, 루프와 논리를 단순화 하기
가독성을 높일 수 있는 최상의 방법은 읽어야 할 코드의 양을 줄이는 것입니다.(No Code, No Problem)
이를 위해 최대한 중복 코드를 줄이고, 가독성이 좋은 코드를 작성 하는 방법을 알아보겠습니다!
상관없는 하위문제 추출하기 📤
일반적인 목적의 코드를 프로젝트의 특정 코드에서 분리해야 합니다.
여거서 프로젝트의 특정 코드는 프로젝트라는 목적을 달성하기 위한 코드이고, 목적의 코드는 프로젝트와는 직접적인 상관은 없지만 목적을 달성하기 위한 코드입니다.
프로젝트의 코드의 가독성을 높이기 위해서는 이러한 목적의 코드를 분리하여, 프로젝트의 목적을 달성하기 위한 코드에 집중할 수 있도록 해야 합니다.
순수한 유틸리티 코드
유틸리티 코드는 문자열 변경, 해시테이블 사용, 파일 읽기/쓰기 같은 기본적인 작업을 뜻합니다.
보통 프로그래밍 언어에 내장돼 있는 경우가 많지만, 스스로 구현해야 하는 경우가 있습니다.
Swift에서는 extension을 이용하여 해당 함수를 추가하여 사용합니다.
ex, String+, URL+ 등
일반적인 목적 코드
목적 코드는 위 설명과 같이 프로젝트와 직접적으로 상관은 없지만, 하위 문제를 해결하기 위한 코드입니다. 예를 들어 디버깅 함수, SQL 데이터베이스, HTML 템플릿 같은게 있습니다.
이러한 목적 코드는 프로젝트에 종속되지 않아 다른 비슷한 하위 문제를 해결하기 위해 다른 프로젝트에서도 사용이 가능합니다. 그렇기 때문에 별도의 라이브러리를 만들어 코드 베이스를 완전히 분리하여 사용할 수 있습니다.
Apple 에서도 Swift Package Manager 통해 코드베이스를 라이브러리로 목적 코드를 관리 할 수 있도록 했습니다.
기존의 인터페이스를 단순화 하기
라이브러리의 인터페이스는 사용하기 간편해야 합니다. 이를 위해 적은 수의 인수를 받고, 별다른 설정을 요구하지 않도록 ‘덮개( Wrapper)’를 사용해 만들면 좋습니다.
그럼 사용자가 읽기 힘들고, 꼭 알아야 할 필요가 없는 코드를 감출 수 있습니다.
하지만 프로그램 안에서 라이브러리의 설정과 인수를 원하는 대로 처리를 할 경우가 생기면, 필요한 위치에 ‘접착 코드(glue code)’를 만들어 따로 관리하면 됩니다.
한번에 하나씩 📍
여러가지 일을 하는 코드가 모여 있으면, 코드를 한번에 보다가고 계속해서 Context가 변화하기 때문에 한번에 읽기가 힘듭니다. 아래 사진과 같이 일이 Context별로 나뉘어져 있으면 코드를 파악하기 쉽고 가독성을 높일 수 있습니다.
작업의 분리는 함수로 쪼개는 경우도 있지만, 우선 논리적으로 구분하여 읽으면서 Context를 유지하도록 만들어야 합니다.
생각을 코드로 만들기 📝
코드도 하나의 글입니다. ‘쉬운 글’로 문제를 설명하면, 이를 코드로 옮겼을때 보기 쉬워질 것입니다.
이렇게 ‘쉬운 글’로 코드를 짜기 위해 항상 옆 동료나 주변에 문제를 해결하기 위한 방법을 설명하고, 코드로 작성하면 이애하기 쉬운 코드를 작성할 수 있습니다.
- 코드가 할 일을 옆의 동료에게 말하듯이 평범하게 묘사하라.
- 이 설명에 들어가는 핵심적인 단어와 문구를 포착하라.
- 설명과 부합하는 코드를 작성하라.