본문 바로가기

Programming40

Effective Kotlin - Minimize elements visibility Scope 을 알맞게 설정하자 Kotlin 에서는 다음 visibility modifiers 들을 갖는다. public(default) : 어디에서나 접근이 가능하다. ( 자바에서는 default 가 package-private : 패키지 내에서만 접근 가능 ) private : 클래스 내에서만 접근이 가능하다. protected : 클래스와 자식 클래스에서 접근이 가능하다. internal : 자바의 package private 같은 녀석이지만, kotlin에서 module 단위에서 접근이 가능하다. module 은 패키지와 클래스를 포함한다. 위에서 visibility modifiers 을 이용해서 알맞게 클래스를 설계하자. 2021. 10. 14.
Effective Kotlin - Respect the contract of compareTo compareTo의 상호간의 동작 관계 compareTo method 는 Any class 의 함수가 아니고, 코틀린의 오퍼레이터이며, Comparable 인터페이스에 존재한다. 어떤 오브젝트가 해당 interface 를 주입받거나, compareTo 라는 오퍼레이터 함수를 갖고 있다면, 이는 해당 오브젝트가 질서를 갖는다는 의미다. 아래의 질서를 갖는다. 반대칭 : a>= b 이고 b >= a 이면 a == b 입니다. 그러므로, compare 과 equality 사이에는 관계가 있으며, 서로 일치해야 합니다. 일관성이 있어야함. 전이 : a >= b 이고 b >= c 이면 a>=c 이다. 해당 속성이 중요한 이유는 다음 과같은 결론이 이루어지지 않을 경우, 조건 비교가 영원히 진행될 수 있기 때문입니.. 2021. 10. 7.
Effective Kotlin - Data Modifer Data Modifier (데이터 수정자) Destructuring Declarations 개념으로 구현이 되어 있다. data class Player { val name: String, val age: Int, }사용하는 이유 아래의 기능들을 제공한다. toString @NotNull public String toString() { return "Player(name=" + this.name + ", age=" + this.age + ")"; }componentN ( 사용시 주의할 점, 중간에 Player 클래스에 새로운 속성을 부여할 떄, 맨뒤에서부터 하나씩 붙여나가자, 안그러면 N 의 순서가 바뀌므로 문제가 생길 수 있다. ) val (name, age) = Player("홍길동", 20) copy.. 2021. 9. 30.
Effective Kotlin - 변수의 범위 최소화 변수의 범위를 최소화 하자 핵심포인트 property 대신 지역변수를 사용하자 가능한한 가장 작은 범위에서 변수를 사용하자 책에서말하는 근거 Scope 이 넓은 변수의 경우, 그 만큼의 코드를 다른 개발자들이 파악해야한다. 언제 정의되었고 초기화되는지. ( 일반적으로 우리는 정의를 함과 동시에 초기화를 진행하는 경우가 많다. 그렇지 않으면, 코드상에서 해당 변수가 언제 초기화되는지도 찾아봐야 하기 떄문이다. ) for 문을 마치고 나서, 변경된 값의 내용을 추리해야한다던지. Sequence 내부 로직 처리시, 의도치 않는 값이 나올 수 있다. 에라토스테네스 체 ( 소수 구하는 방법 중 하나 ) 동작하는 코드 ``` val primes: Sequence = sequence { var numbers = ge.. 2021. 7. 22.
반응형