코틀린은 자바를 기반으로 만들어졌기 때문에 자바로 만든 코드들은 코틀린에서도 사용할 수 있게 됩니다. 그러다 보니 그 과정에서 어노테이션으로 nullable이 지정되지 않은 타입 즉 플랫폼 타입들을 쓰게 될 경우 코틀린에서는 매번 널 관련된 검사를 해야 합니다. 그렇지 않는다면 해당 부분을 사용할 때 NPE가 발생할 수도 있는 위험을 감수해야 합니다. 그렇기 때문에 이 책에서는 이러한 nullable이 지정되지 않은 플랫폼 타입을 사용을 자제하라고 말합니다. // 자바 public class UserRepo{ public List getUsers() { //... } } 위처럼 자바의 경우 NotNull 이필수가아닙니다. 자바에는 여러 자료형이 있고 어떤 자료형에서는 null을 허용하기도 하고 막기도 합..
변수의 스코프를 최소화시켜야 하는 이유 책에서는 변수의 스코프를 최소화하라고 합니다. 예시를 봐봅시다. fun main(){ val a = 1 val b = 2 val c = 3 fun fizz() { println(a+b) } fun buzz() { println(a+c) } } 이예시에서는 b와 c는 fizz와 buzz에서 밖에 쓰이지 않습니다. 그렇다면 b와 c를 fizz와 buzz안에 넣으면 어떻게 될까요? fun main(){ val a = 1 fun fizz() { val b = 2 println(a+b) } fun buzz() { val c = 3 println(a+c) } } 이렇게 넣게 되면 b나 c라는 변수를 추적하거나 함수의 스코프 밖에서는 해당 변수를 사용할 수 없습니다. 이러한 부..
- 시작하며 - 만약 잘 넘어지는 아이가 뛰어놀고 있다면 가장 간단하게 넘어져 다치지 않게 만들 수 있는 방법이 무엇일까요? 저는 우선 아이를 우선 멈춰 새 울 것 같습니다. 멈춰 새운다면 돌아다니지 않으니 다치지 않을 것입니다. 코드도 이와 비슷한 점이 있습니다. 첫 Chapter인 안정성에서는 안정성이 있는 코드를 짜서 잠재적 오류를 배제하라고 합니다. 코드 또한 안전하게 만들기 위해서는 가장 간단하게 가변성을 제한한다면 예측가능한 상황으로 만들 수 있을 것입니다. - 본문 - 코틀린의 요소 중 일부는 var 또는 mutable을 사용하여 상태를 가질 수 있습니다. 이 요소가 작다면 예측가능한 패턴만 있겠지만 그 수가 많다면 생길 수 있는 패턴이 기하급수적으로 늘어날 것입니다. 패턴이 많으면 무슨 문..
- 시작하며 - 프로젝트를 하다 보면 예전에 만들었던 코드들과 현재코드를 비교했을 때 통일성이 없을 때가 많습니다. 대부분 그 이유는 변수나 함수를 만들 때 따로 규칙 없이 생각나는 대로 이름을 정한다든가 비슷한 규칙을 다르게 표현하면 코드가 통일성이 없고 이해하기도 힘들어지니 유지보수하기도 어려워집니다. 이런 통일성 없는 코드들을 예방하기 위해서는 클린코드 규칙을 정하고 그 규칙을 따르며 코드들을 짜야합니다. - 본문 - Java 같은경우 클린코드규칙들을 정리한 Effective Java라는 책이 있습니다. Java를 바탕으로 나온 Kotlin 또한 Effectiv Kotlin이라는 클린코드규칙들을 정리한 책이 있습니다. 이 책 같은 경우 안전성, 가독성등 52가지 주제를 가지고 클린코드를 짜기 위한 ..