티스토리 뷰

[클린 코드: Clean Code] 5장 형식 맞추기

나는 devssun 2019. 8. 10. 18:30

오늘은!!!! 형식 맞추기 차례입니다!!!!

2019년 8월 10일은 너무 더운 날......

via GIPHY

 


5장 형식 맞추기

프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야한다. 팀이라면 팀의 규칙을 따라야 한다

 

형식을 맞추는 목적

코드 형식은 의사소통의 일환이다

오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다

오랜 시간이 지나 원래 코드의 모습을 찾아 보기 힘들어도 맨 처음 잡아둔 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다

 

원활한 소통을 장려하는 코드 형식은?

적절한 행 길이를 유지하라

세로 길이 / 가로 길이의 적절한 길이를 유지해야 한다

 

신문 기사처럼 작성하라

잘 작성된 신문 기사를 보면 크게 요약된 내용에서 점차 상세 내용이 나온다

코드에서도 이름만 보고 올바른 모듈을 살펴보고 있는지 아닌지를 판단할 수 있게 신경 써서 짓는다

 

개념은 빈 행으로 구분하라

거의 모든 코드는 왼쪽에서 오른쪽으로 그리고 위에서 아래로 읽힌다

빈 행은 새로운 개념을 시작한다는 시각적 단서다

예를 들어 아래와 같은 코드에서 enum과 loan(), reservation() 함수 사이에 빈 행을 넣어 분리된 것을 알린다

enum ReturnError: Error {
    case notLoanError
}
    
mutating func loan() throws {
    guard !isLoan else {
        throw LoanError.loanError
    }
        
    self.isLoan = true
}
    
mutating func reservation() throws {
    guard isLoan else {
        throw LoanError.notLoanError
    }
    guard resvCount != 5 else {
        throw ResvError.resvFullError
    }
    
    resvCount += 1
}

 

세로 밀집도

세로 밀집도는 연관성을 의미한다 밀집한 코드 행은 세로로 가까이 놓여야 한다

 

수직 거리

서로 밀접한 개념은 세로로 가까이 둬야 한다

* 변수 선언

변수는 사용하는 위치에 최대한 가까이 선언한다

지역변수는 함수의 맨 처음에 선언한다

((((((-> 전역변수같은 경우는 한 군데에 작성하는 것이 좋을 것 같다))))

 

* 인스턴스 변수

인스턴스 변수는 클래스 맨 처음에 선언한다. 변수 간에 세로로 거리를 두지 않는다

잘 알려진 위치에 인스턴스 변수를 모은다

 

* 종속 함수

호출하는 함수를 호출되는 함수보다 먼저 배치한다 그러면 프로그램이 자연스럽게 읽힌다

 

가로 형식 맞추기

가로로 얼마나 길어야 적당할까? 보통 100자 정도를 하고 있다

-> Xcode에서 가로 행 guide를 부여할 수 있다

-> 환경설정 > Text Editing > Page guide at column 체크설정!

 

가로 공백과 밀집도

func measureLine(line: String) {
	lineCount += 1
    let lineSize: Int = line.length()
    totalChars += lineSize
    lineWidthHistogram.addLine(lineSize, lineCount)
    recordWidestLine(lineSize)
}

할당 연산자를 강조하기 위해 앞뒤에 공백을 줬다

Swift 는 가로 공백에 대해 아래와 같은 제약조건이 존재한다

// Swift에서는 공백을 넣으려면 양쪽에 다 줘야한다
a =3 +2	// error!!!
a = 3 + 2	// success!!!

 

들여쓰기

범위로 이뤄진 계층을 표현하기 위해 코드를 들여쓴다

((( If문 적는 짤을 가져오고 싶은데..안나옴........)

아무튼 때때로 간단한 If, while, guard 문에서 들여쓰기 규칙을 무시하는 경우가 있다

짧아도 들여쓰기 해주는 편이 좋다. (뱅크샐러드 코드 컨벤션 정하기)

 


 

최근에는 컨벤션을 지키기위한 노력으로 Lint 툴을 도입하여 사용하고 있다

Swift도 SwiftLint 가 있고 다른 언어들도 있다!

또 각 회사라던지.. 유명 회사에서는 자신의 코드 컨벤션을 공개하기도 한다

이런 것들을 통해 코드 품질과 가독성을 높이자!!!!!!

via GIPHY

도움이 되셨다면.. Buy me a coffeeBuy me a coffee