본문 바로가기
개발 공부 기록하기/- Kotlin & Java

Kotlin을 사용하며 느낀점

by soulduse 2018. 2. 18.
반응형

6개월 가량 코틀린을 사용하면서 느낀점을 작성하고자 한다.


장점

- 코드가 간결해진다.

- 코드가 간결해지니 가독성도 증가한다.

- 복잡한 로직을 간단하게 짤 수 있다.

- 모두가 말하는 널 안정성

- 람다, 스트림 사용가능!

- 자바와 호환성 100%

- ETC...


우선 장점에대해서 나열하면 자바만 사용해온 나로썬 엄청 좋다 이다. 그냥 다 좋다! 왜 그런가 하면 

첫번째로 코틀린에 익숙해질수록 코드가 단순해진다.


도대체 무엇이 단순해지는가? 말로만 하지말고 보여달라


우선 안드로이드 View를 사용하려면 항상 아래와 같은 (View)findViewById(R.id.text.. )

와 같이 선언을 해줘야하는데 뷰가 하나정도면 괜찮지만 여러개일 경우 여간 귀찮은게 아니다.



반면 코틀린 코드는 ?



이게 끝이냐고? 그렇다 이게 끝이다. Kotlin extionsions를 사용하면 위와 같이 사용할 수 있다.


다음 자바코드를 보자

아래와 같이 Person클래스가 있다고하고, 

필드로는 name, age, nick, sex, hobby가 있다고 할때 아래와 같이 선언해줘야 한다.

요즘 IDE가 좋아져서 다행이 setter / getter를 생성하는건 불편함이 없지만

뭔가 내용에 충실하기보단 사용하기위해 어쩔수 없이 작성해줘야 하는 코드들이 너무많다.


반면 코틀린 코드는?

이번에도 이게 다다.


아래와 같이도 사용할 수 있다.

코틀린은 null safe 하기 때문에 저렇게 초기화를 빈값으로 초기화를 하던지, 

lateinit을 사용하여 늦은 초기화를 해주거나, 또는 null값으로 초기화를 할 수 있다.


자 이제 Person코드를 가지고 놀아보자.



위코드는 단순히 각각 다른 이름과 나이를 입력하여 Person객체를 생성하고 List에 담아준 모습이다.


동일한 내용을 코틀린으로 변환했을때는 아래와 같다.


길이는 모르겠지만 전체적인 내용면에서 불필요한 보일러플레이트 코드가 없어져서 한눈에 잘 들어온다.



자 그렇다면 위의 List의 값을 아래와 같이 찍으려면 어떻게 해결 하겠는가?

잠시 생각해보자. ( 실습해봐도 좋다 )










우선 자바는 아래와 같이 작성할것 같다.

뭔가 굉장히 지저분한 느낌인데...


for문을 변경하여 다시한번 줄였다.


코드는 단순하지만 뭔가 한눈에 안들어온다 (나만그런가)


아래는 코틀린 코드이다. 리스트 값을 String으로 변형해주는 joinToString() 메서드를 제공한다.


separator =""

리스트를 스트링으로 만들때 구분 값으로 뭘 넣어줄꺼냐 인데 "\n"을 넣었으므로 리스트안에 하나의 아이템마다 줄바꿈이 이루어진다.


prefix = ""

리스트를 스트링으로 변환할때 데이터 출력전에 무엇을 넣겠냐인데, "[Person List]\n"을 넣었으니 가장 앞에 출력된다.


자 그럼 추가로 아래와 같이 나이가 20살 미만일때는 제외시키고 싶다면 어떻할 것인가?







우선 자바코드는 아래와 같이 if 조건을 줘서 해결할 것 같다.



코틀린은?

아래와 같이 필터를 걸어줘서 해결 가능하다. 

filter { 조건 }을 하면 조건에 해당되는것은 필터로 걸러지고 값이 들어온다.


단점

- 초기 학습이 필요하다(?)

- 없음.


결론 

정말 코틀린의 빙산이 일각에 일각도안될 먼지만큼 설명한 글이지만 이외에도 기본적으로 제공되는 유틸성 함수들도 많고,

확실히 코드를 작성하는데 간단한 로직부터 복잡한 로직까지 정말 단순하게 작성할 수 있어서 

생산성이 증가한 것을 느낀다. 조금더 기능구현에 집중할 수 있고, 단순한 보일러 플레이트 들이 줄어들어서

단순반복적으로 불필요한 코드를 작성하는 일이 없어졌으며, 심지어 단점으로는 초기학습이 필요하다고 적어놨지만

정말 쉬운 편인것 같다. (일주일만 바짝하면 어느정도 알 수 있다고 생각한다.)


이상으로 코틀린을 사용하면서 느낀점에 대해서 포스팅을 마무리한다.


다음 시간에는 책에 대한 내용을 공부하면서 기초적인 부분부터 정리해볼 생각이다.


다음 포스팅은 

3/2일 전까지 작성완료하기

반응형