본문 바로가기

분류 전체보기

(299)
Effective Kotlin - Minimize elements visibility Scope 을 알맞게 설정하자 Kotlin 에서는 다음 visibility modifiers 들을 갖는다. public(default) : 어디에서나 접근이 가능하다. ( 자바에서는 default 가 package-private : 패키지 내에서만 접근 가능 ) private : 클래스 내에서만 접근이 가능하다. protected : 클래스와 자식 클래스에서 접근이 가능하다. internal : 자바의 package private 같은 녀석이지만, kotlin에서 module 단위에서 접근이 가능하다. module 은 패키지와 클래스를 포함한다. 위에서 visibility modifiers 을 이용해서 알맞게 클래스를 설계하자.
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 이다. 해당 속성이 중요한 이유는 다음 과같은 결론이 이루어지지 않을 경우, 조건 비교가 영원히 진행될 수 있기 때문입니..
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. 09. 15 ~29일. 집 계약. 이사. 제주에서의 하루 하루 9.15 급한데로.. 집을 구했다. 아내의 직장과 가까운 곳으로 구했다. 제주시 연동에 위치한 오래된 아파트에 둥지를 틀었다. 비록, 오래된 아파트지만... 4층에 엘레베이터도 없지만... 그래도 집을 계약했다. 년세 500 에 700으로 계약을 하였다. 태풍이 다가오고 있어서, 급하게 계약을 하고, 육지로 돌아갔다. 9.16 ~ 9.24 포장이사를 알아보았고, 견적을 냈다. 5톤 1대 분량으로 산정했고, 가격은 280만원이었다. ( 육지, 제주도 포함 ) 다만, 세탁기,건조기 분리, 에어컨 분리, 정수기 분리 는 별도로 직접 진행해달라고 요청받았다. ( 해제는 가능하지만, 고장 날 수 있다고 했다. ) 세탁기, 건조기 분리하는데 거의 10만원 , 에어컨 분리 10만원, 정수기 분리 3만원정도 들었던것으..
2021. 09. 13. 계약금 천만원을 날리다. 눈 뜨고 코 베이기 도시에서 아둥바둥 살았던 사람이라면 제주도에서, 전원주택에서 살아가는 꿈을 꾸었을 것이고, 나 또한 그랬다. 아파트, 빌라는 쳐다도 보지 않았고, 바로 전원주택만 알아보았다. 그러던 중 괜찮은 매물을 오일장 앱을 통해 확인하였고, 후다닥 전화를 하였다. 애월읍 납읍로 에 위치한 전원주택을 보러 갔다. 전세 1억이 가능하다는 말을 들었고, 건축회사 친구분이라는 김이사님에게 이런저런 설명을 들었다. 그러던 중 다음과 같은 말을 들었는데. 1순위 1억6천(건설사) , 2순위 1억 (나) 총 2억 6천이 있으면, 문제가 생기더라도 경매물건을 살 수 있다고 얘기해주셨고. 계약서를 작성하고 계약금 1천만원을 송금하였다. 당시, 김이사님이 소개해준 부동산으로 갔었고, 그곳에서 공인중개사와 같이 계..
엄마 3 나는 모른다. 엄마의 삶을. 당신이라는 사람이 어떻게 살아왔는지. 그래서 더 죄송하다. 그래서 더 미안하다. 기억할 수 있는게 당신의 이름뿐인 것이. 어릴적 가족사진을 제외하고, 당신과 사진을 남기지 않아, 지금 이 사진, 이 영상 밖에 없다는 것이. 너무 서럽고, 너무 후회스럽다. 당신을 그렇게 혼자 두어 미안하다. 내가 정말 미안하다. 다음 생이 있다면, 그 때는 내가 엄마로, 당신이 내 자식으로 태어나 내가 잘 해주겠다. 지금 못 다한, 하지 못하는 것들 모두 해주겠다. 많이 사랑한다. 진여사. 가능하다면 지금이라도 내가 모시고 살고 싶다.
2021.09.12. 제주살이를 위한 준비 제주살이를 시작하기에 앞서... 왜? 수원에서 1년간 정든 집을 잠시 비워둔채, 제주살이를 결심했다. 내게 남은 시간이 많지 않다. 9월 7일이 지나자, 34살이 되었다. 코로나 이후, 집과 재택근무로 삶을 가득 채워나갔다. 중간중간 즐거운 일들도 많고, 힘든 일들도 많았다. 반복되는 일상 속에서 점점 타협하는 내 자신을 보게됐다. 마음과 달리 돈을 벌기 위해 살아가는 내 모습이 그로인해, 소중한 이와 보낼 수 있는 시간들을 쉽게 쉽게 보내고 있었다. 그렇게 10년이 지나 44살이 되었을 때, 나는 지금의 34살로 돌아가, 소중한 이와 하고 싶었던 것을 할 수 있을까? 지나간 시간을 잡을 수 없다는 것을 감히 어느 누구보다 잘 느낀다고 생각한다. 지금 내 옆에 있는 어느 누구도, 영원히 내 옆에 있지 못..
Effective Kotlin - Avoid shadowing type parameters 속성과 파라미터를 같은 이름으로 설정하는 것은 가능합니다. 지역 매개변수가 외부 스콥의 속성을 따라 갈때, 실제로 경고가 생기지 않습니다. 왜냐하면 이런 경우는 일반적이기 때문입니다. class Forest(val name: String) { fun addTree(name: String){ // ... } }주의해서 사용해야할 부분입니다. ** 아래의 코드에서 Forest 의 T 와, addTree 의 T 는 서로 독립된 상태입니다. interface Tree class Birch: Tree class Spruce: Tree class Forest { fun addTree(tree: T) { // ... } }그렇다면 아래의 코드는 어떨까요? class Forest { fun addTree(tree: T..