Kotlin ㅤㅤㅤㅤㅤ By nathan_H [이펙티브 코틀린] Item 31 - 32. 문서 규약과 추상화 규약 Item 31. 문서로 규약을 정의하라 함수가 무엇을 하는지 명화갛게 설명하고 싶다면 KDoc 주석을 붙여주는 것이 좋음 /** * 이 프로젝트에서 짧은 메시지를 사용자에게 출력할 때 사용하는 기본 방식 * @param message 사용자에게 보여 줄 메시지 * @param length 메시지의 길이가 어느정도 되는지 나타내는 enum 값 */ fun Context.showMessage( message: String, duration: MessageLength = MessageLength.LONG, ) { val toastDuration = when (duration) { MessageLength.SHORT -> Length.LENGTH_LONG MessageLength.LONG -> Length.LE.. Reading Record/이펙티브 코틀린 2022. 5. 29. ㅤㅤㅤㅤㅤ By nathan_H [이펙티브 코틀린] Item 28 ~30. API 안정성 및 가시성 Item 28. API 안정성을 확보하라 프로그래밍에서는 안정적이고 표준 API를 선호하는데 그 이유는 아래와 같음 API가 변경되고 개발자가 이를 업데이트 했다면 여러 코드를 수동으로 업데이트 해야함 많은 곳에서 api에 의존적이면 변경사항이 많을 수 있음 사용자가 새로운 API를 배워야함 변경된 api를 쓰는 쪽에서는 변경사실을 알아야 하고 변경 부분에 대한 이해가 필요함 한번에 안정적인 API가 나왔으면 하지만 좋은 API 설계는 어렵기 때문에 우선 만들고 지속적으로 발전시켜 나가야 한다. 그래서 API 안정성을 지정해서 정보를 제공함으로써 api를 사용하는 곳에서 안정성을 확인할 수 있음 안정성 제공에 가장 간단한 방법은 문서에서 API 일부가 불안정한지 명확하게 지정 버전을 사용해 전체 라이브러.. Reading Record/이펙티브 코틀린 2022. 5. 29. ㅤㅤㅤㅤㅤ By nathan_H [이펙티브 코틀린] Item 27. 변화로부터 코드를 보호하려면 추상화를 사용하라 추상화를 잘하면 세부 사항을 잘 알지 못하더라도 변경에 자유로워짐 상수 리터럴을 상수 프로퍼티로 변경하게 되면 해당 값을 이름을 붙일 수 있고 값을 변경할때에 훨씬 쉽고 안전하게 변경이 가능하게됨 Before fun isPasswordValid(text: String): Boolean { if (text.length < 7) return false } After const val MIN_PASSWORD_LENGTH = 7 fun isPasswordValid(text: String): Boolean { if (text.length < MIN_PASSWORD_LENGTH) return false } 이런식으로 상수로 빼면 장점 의미있는 이름 부여 값 변경에 안전함 함수 사용자에게 토스트 메시지를 자주 출력해.. Reading Record/이펙티브 코틀린 2022. 5. 29. ㅤㅤㅤㅤㅤ By nathan_H [이펙티브 코틀린] Item 26. 함수 내부의 추상화 레벨을 통일하라 컴퓨터 과학에서의 추상화 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 추상화가 필요한 이유 복잡성을 숨기고 사용되는 단순한 형식만 노출해 코드를 체계화하고 만드는 사람에게 변화의 자유를 주기 위해 추상화를 사용 자동차의 경우 내부적으로는 매우 복잡한 요소들이 많지만 추상화된 핸들과 변속기 가속페달만으로 자동차를 운전할 수 있음 → 굉장히 추상화가 잘된 예시 추상화 레벨 높은 레벨로 갈수록 물리 장치에서 멀어지고 프로그래밍에서는 일반적으로 높을 레벨일수록 프로세스와 멀어지고 관리해야하는 세부적인 내용이 적음 ex) C언어는 직접 메모리를 제어할 수 있지만 비교적 JVM 언어에 비해 복잡도가 높음 추상화 레벨 통일 코드도 추상화를 계층처럼 만들어서 사용할 수 있는데, 이.. Reading Record/이펙티브 코틀린 2022. 5. 29. 이전 1 다음