
형식을 맞추는 목적 (96p)
- 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. ⭐️⭐️
- 그러므로 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다.
적절한 행 길이를 유지하라 (96p)
- 쓸데없이 코드의 길이를 많이 늘리지 마라. 코드의 길이가 늘어나면 이해하기 어렵다.
- 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다.
적절한 행 길이를 유지하기 위한 방법들 (98p)
- 신문 기사처럼 작성한다.
- 신문은 보통 최상단에 기사를 몇 마디로 요약하는 표제가 나온다. 첫 문단은 전체 기사 내용을 요약한다. 세세한 사실은 숨기고 커다란 개요를 보여준다. 쭉 읽으며 내려가면 세세한 사실이 조금씩 드러나게 된다. 코드도 그렇게 짠다.
- 코드의 이름은 간단하면서도 설명이 가능하게 짓는다. 이름만 보고도 올바른 모듈을 살펴보고 있는지 아닌지 구분할 수 있을 정도로 신경 써서 짓는다. 코드가 아래로 내려갈 수록 의도를 세세하게 묘사한다.
- 개념은 빈 행으로 분리하라
- 서로 다른 개념을 다룬 코드끼리는 빈 행으로 분리시켜 코드의 가독성을 높여야 한다. 코드를 서로 떨어뜨려 놓지 않으면 코드 가독성이 심각하게 떨어진다.
- 서로 밀접한 코드는 가까이 붙여놓자.
- 서로 밀접한 개념은 가까이 둬야 한다. 연관성이 깊은 개념이 서로 멀리 떨어져 있으면 코드를 읽는 사람은 소스 파일과 클래스를 여기저기 뒤지게 된다.
- 의미 없는 주석으로 괜히 변수와 변수 사이를 띄워놓지 말 것. 1) 변수는 변수를 사용하는 위치에 최대한 가까이 선언한다. 2) 인스턴스 변수는 클래스 맨 처음에 선언한다. 3) 한 함수가 다른 함수를 호출한다면 두 함수는 가까이 배치한다. 그리고 가능하면 호출하는 함수는 호출되는 함수보다 먼저 배치한다. 큰 개념을 담은 함수를 더 위에 배치하고 작은 개념을 담은 함수를 더 아래에 배치한다.
private func setTabBarSettings() {
setTabBarElements()
setTabBarColor()
setTabBarImage()
setTabBarName()
}
private func setTabBarElements() {
viewControllers = [home, motivation, achievement, deviceBlock, setting]
}
private func setTabBarColor() {
let appearance = UITabBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .white
tabBar.backgroundColor = .white
tabBar.tintColor = .systemOrange
}
private func setTabBarImage() {
guard let items = tabBar.items else { return }
items[0].image = UIImage(systemName: "house.fill")
items[1].image = UIImage(systemName: "shared.with.you")
items[2].image = UIImage(systemName: "trophy.fill")
items[3].image = UIImage(systemName: "exclamationmark.octagon.fill")
items[4].image = UIImage(systemName: "gearshape.fill")
}
private func setTabBarName() {
home.title = "홈"
motivation.title = "동기부여"
achievement.title = "나의 성취"
deviceBlock.title = "디지털 디톡스"
setting.title = "설정"
}
4) 코드가 개념적으로 유사할 경우, 서로 가까이 배치한다. (비슷한 동작을 수행하는 함수일 경우, 비슷한 개념으로 엮인 변수일 경우, 서로 가까이 배치한다.)
가로 형식을 맞추라 (106p)
- 한 행당 코드의 가로 길이는 120자 정도가 적당하며, 가로 길이가 그 이상이라면 줄여야 한다.
- 간단한 함수를 실행할 때에도 들여쓰기를 제대로 하자.
private func writeBooks() { writeSentences() } (X)
private func writeBooks() {
writeSentences()
} (O)
팀 규칙 (113p)
- 팀 규칙에 해당하는 요소들
- 어디에 괄호를 넣을지
- 들여쓰기는 몇 자로 할지
- 클래스와 변수와 메소드 이름은 어떻게 지을지 등
- 팀에 속한다면 팀 규칙을 반드시 따라서, 소스파일을 개개인이 따로 짜낸 것처럼 만들지 않는다.
- 한 소스 파일에서 봤던 형식이 다른 소스 파일에도 쓰이리라는 신뢰감을 독자에게 줘야 한다.