개발 ㅤㅤㅤㅤㅤ 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 26. 함수 내부의 추상화 레벨을 통일하라 컴퓨터 과학에서의 추상화 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 추상화가 필요한 이유 복잡성을 숨기고 사용되는 단순한 형식만 노출해 코드를 체계화하고 만드는 사람에게 변화의 자유를 주기 위해 추상화를 사용 자동차의 경우 내부적으로는 매우 복잡한 요소들이 많지만 추상화된 핸들과 변속기 가속페달만으로 자동차를 운전할 수 있음 → 굉장히 추상화가 잘된 예시 추상화 레벨 높은 레벨로 갈수록 물리 장치에서 멀어지고 프로그래밍에서는 일반적으로 높을 레벨일수록 프로세스와 멀어지고 관리해야하는 세부적인 내용이 적음 ex) C언어는 직접 메모리를 제어할 수 있지만 비교적 JVM 언어에 비해 복잡도가 높음 추상화 레벨 통일 코드도 추상화를 계층처럼 만들어서 사용할 수 있는데, 이.. Reading Record/이펙티브 코틀린 2022. 5. 29. ㅤㅤㅤㅤㅤ By nathan_H [이펙티브 코틀린] Item1. 가변성을 제한하라 코틀린은 모듈로 프로그램을 설계하는데 모듈은 클래스, 객체, 함수, 타입 별칭, 톱레벨 프로퍼티 등 다양한 요소로 구성 이러한 요소 중에 일부는 상태를 가질 수 있는데 프로퍼티 var를 사용하거나 mutable 객체를 사용하면 상태를 가질 수 있음 코틀린은 프로퍼티나 객체에 아래와 같이 상태를 가질 수 있다 var a = 10 var list: MutableList = mutableListOf() 이렇게 요소가 상태를 갖는 경우, 해당 요소의 동작은 사용 방법뿐만 아니라 히스토리에도 의존하게 됨 상태를 가지는 클래스 예시 class BankAccount { var balance = 0.0 private set fun deposit(depositAmount: Double) { balance += depos.. Reading Record/이펙티브 코틀린 2022. 4. 6. 이전 1 다음