코틀린 스터디/이펙티브 코틀린

아이템18) 코딩 컨벤션을 지켜라

막이86 2024. 4. 17. 10:42
728x90
  • 코틀린은 잘 정리된 코딩 컨벤션을 가지고 있음
    • 코틀린 문서의 Coding Convensions 참고
  • 컨벤션을 최대한 지켜주는 것이 좋음
    • 어떤 프로젝트를 접해도 쉽게 이해할 수 있음
    • 다른 외부 개발자도 프로젝트의 코드를 쉽게 이해할 수 있음
    • 다른 개발자도 코드의 작동 방식을 쉽게 추측할 수 있음
    • 코드를 병합하고, 프로젝트의 코드 일부를 다른 코드로 이동하는 것이 쉬움
  • 컨벤션을 지킬 때 도움이 되는 두 가지 도구가 있음
    • IntelliJ Formatter: 공식 코딩 컨벤션 스타일에 맞춰서 코드를 변경해 줌
      • settings → Editor → Code Style → Kotlin 에서 ‘Set from…’ 링크 클릭
      • ‘Predefined style/Kotlin style guide’ 선택
    • ktlint: 많이 사용되는 코드를 분석하고 컨벤션 위반을 알려주는 린터
  • 자주 위반되는 규칙중 하나는 클래스와 함수의 형식
class FullName(val name: String, val surname: String)
  • 많은 파라미터를 갖고 있는 클래스는 각각의 파라미터를 한 줄씩 작성하는 방법을 사용
class Person(
	val id: Int = 0,
	val name: String = "",
	val surname: String = ""
): Human(id, name) {

}
  • 함수도 파라미터들을 많이 가지고 있다면 아래 처럼 작성
public fun <T> Iterable<T>.joinToString(
	separator: CharSequence = ", ",
	prefix: CharSequnce = "",
	postfix: CharSequence = "",
	limit: Int = -1,
	truncated: CharSequence = "...",
	transform: ((T) -> CharSequence)? = null
): String {

}
  • 코딩 컨벤션을 다음과 같이 이해하는 사람도 있지만, 다음 코드와 위에서 설명한 코드는 완전히 다름
class Person(val id: Int = 0, 
	val name: String = "",
	val surname: String = "") : Human(id, name) {
						
}
  • 위 코드는 두가지 측면에서 문제가 될 수 있음
    • 모든 클래스의 아규먼트가 클래스 이름에 따라서 다른 크기의 들여쓰기를 갖음
      • 클래스의 이름이 변경될 때 생성자 파라미터의 들여쓰기를 조정해야 함
    • 클래스가 차지하는 공간의 너비가 너무 큼
      • 처음 class 키워드가 있는 줄도 너비가 너무 큼
      • 마지막 파라미터와 슈퍼클래스 지정이 함께 있는 줄도 너무 큼
  • 실행에는 문제가 없지만 프로젝트의 컨벤션은 반드시 지켜주는 것이 좋음
    • 마치 한사람이 작성한 것처럼 작성되어야 함
  • 코딩 컨벤션은 굉장히 중요
    • 가독성과 관련된 어떤 책을 보아도, 코딩 컨벤션과 관련된 내용을 강조
  • 코딩 컨벤션 일관성을 유지하기
728x90