스터디/이펙티브코틀린

아이템 11 - 가독성을 목표로 설계하라

프로그래밍은 쓰기보다 읽기가 중요하다 고로 항상 가독성을 생각하면서 코드를 작성해야 한다. 그렇지 않으면 오류를 찾기위해 코드를 작성할 때보다 오랜 시간 코드를 읽는 자신을 발견할 수 있다. 개발자가 코드를 작성하는 데는 1분 걸리지만, 이를 읽는 데는 10분이 걸린다. by 로버트 마틴 인식 부하 감소 가독성이란 코드를 읽고 얼마나 빠르게 이해할 수 있는지를 의미한다. 경험과 인식에 대한 과학으로 만들어진 어느 정도의 규칙이 있다. fun readGood(person: Person?, view: View) { if (person != null && person.isAdult) { view.showPersion(person) } else { view.showError() } } fun readBad(pe..

2022.03.25 게시됨

스터디/이펙티브코틀린

아이템 2 - 변수의 스코프를 최소화하라

가시성 제한 상태를 정의할 때는 변수와 프로퍼티의 스코프를 최소화하는 것이 좋다. 프로프티보다 지역 변수를 사용하는 것이 좋다. 최대한 스코프를 좁게 가지도록 변수를 사용하자. 사용되는 곳에서만 사용될 수 있도록 ex) 반복문 내에서만 존재하는 경우 // AS-IS var user: User for (index in users.indices) { user = users[index] print("User at $index is $user") } // TO-BE for (index in users.indices) { val user = users[index] print("User at $index is $user") } // BEST for ((index, user) in users.indices) { pr..

2022.02.26 게시됨

스터디/이펙티브코틀린

아이템 1 - 가변성을 제한하라

어떠한 요소가 상태를 갖는 경우, 요소의 동작은 사용 방법뿐만 아니라 그 이력에도 의존하게된다. 상태를 갖게 하는 것은 양날의 검이다. 변하는 요소를 표현할 수 있다는 것은 유용하지만, 상태를 적절하게 관리하기 어렵기 때문이다. 이해하고 디버그하기 힘들어진다. 코드의 실행을 추론하기 어려워진다. 멀티스레드 프로그램일 때 동기화가 필요하다. 테스트하기 어렵다. 변경을 다른 부분에 알려야 하는 경우 불편하다. set, map의 key로 사용할 수 없다. hash 값이 변경되면 요소를 버킷에서 찾지 못할 수 있다. 코틀린에서 가변성 제한하기 코틀린은 가변성을 제한할 수 있게 설계되어 있습니다. val → 읽기전용 프로퍼티 가변(mutable) 컬렉션, 읽기전용(immutable) 컬렉션의 구분 데이터 클래스의..

2022.02.25 게시됨