본문 바로가기

코틀린

코틀린(Kotlin) 을 해야하는 이유!

우선, 코틀린 포스팅을 하기에 앞서 우리가 코틀린을 해야 하는 이유에 대해 간단하게 짚어보며 매력포인트를 알아본 후 시작을 해보고자 합니다.

 

아마도 이 글을 보고 계신 개발자분들이라면 이미 익히 다 알고 계시는 내용이겠지만 리마인드의 차원과 약간의... 동기부여 차원에서 다시 한번 정리해보도록 하겠습니다. 

코틀린(Kotlin)

▶ Google I/O 2017. 공식 개발 언어로 지정

 Multi Platform Language (Android, Backend, Frontend 등... 자바가 실행되는 모든 곳)

 Safety Code / Readable Code : Null Safety, 안전한 캐스팅

  (Null Safety의 경우 Null이 될 수 있는지 여부를 타입 시스템에 추가함으로써, 컴파일 시점에서 미리 감지할 수 있기 때문에 런타임에서 발생할 수 있는 예외의 가능성을 줄일 수 있다)

 Simple Grammar ( = Easy to Learn) : 간결한 문법으로 소스코드의 30~40% 절감 효과

 Java <-> Kotlin 100% 상호 호환

 Extension Methods : 기존 클래스에 확장 함수를 추가해서 자유롭게 커스텀하여 사용할 수 있음

 Asynchronous Programming by Coroutines : 강력한 비동기 처리

 Java 8 Lambda, Optional

 Java 10 var (Automatic Casting)

 안드로이드 공식문서 및 샘플 코드들도 코틀린이 먼저 나옴 (심지어 래퍼런스 문서의 언어 선택 탭의 첫 항목이 코틀린!)

 스택오버플로우 또한 코틀린으로 작성된 답변들이 많아지고 있는 추세! (즉, 코틀린을 알아야 우리의 야근이 줄어들고 저녁이 행복해질 수 있다!!!)

 

이렇게 장점이 많다면, 단점 또한 있을 텐데... 제가 생각해본 단점으로는,

 

- 러닝 커브 : (개인의 차가 있을 수 있지만, 보편적으로) 익숙해지는 데까지 대략 일주일 정도 소요

- 빌드 속도...? (클린 빌드 시, 시간이 쫌 더 걸림... 보통의 1.3배 정도의 시간 소요)

 

이렇게 두 가지 정도 생각해 볼 수 있을 것 같습니다. 🤔

 

위와 같은 특징을 가진 코틀린에 대해 간단히 리마인드 해보았고,

이렇게 장점이 많은 코틀린! 알겠는데 그럼 도대체 우리가 어떻게 현업에 적용하는 것이 좋을지 각자마다의 고민이 많으실 거라 생각합니다...😰

현업에 실제 적용하기

가장 큰 고민은, 기존에 있던 소스코드들을 코틀린으로 바꿔가며 서서히 적용해볼 것인지,

아니면 새롭게 개발하는 부분부터 코틀린으로 짜 볼 것인지에 대한 고민이 상당할 것입니다.

 

저도 이에 대해 많은 고민을 하였고, 더 좋은 의견들과 아이디어를 얻고자 코틀린 관련 컨퍼런스 및 커뮤니티를 통해 여러 개발자분들의 (젯브레인 컨퍼런스 참관 당시 코틀린의 아버지 하디하리리의 답변도 포함) 의견과 적용 후기 등을 종합해보았습니다.

 

그 결과로는,

"이미 잘 돌아가고 있는 코드를 굳이 바꿀 이유도, 필요도 없다! 앞으로 새롭게 작성하게 되는 코드부터 적용을 시작하라" 라는 결론을 내보았습니다.


현업에서는 새로운 기술의 도입도 물론 중요하지만, 아무래도 안정적인 서비스 제공이 우선시 되다 보니 굳이 기존에 잘 돌아가는 코드를 전환하여 사이드 이팩트를 마주하고 싶진 않으실 겁니다...ㅠㅠ

 

또한, 코틀린 전환에 대한 일정이 따로 확보되지 않는다면 기존에 진행하던 프로젝트 일정과 코틀린 전환을 병행하게 될 것이고, 넉넉지 않은 일정에 쫓겨 프로젝트와 코틀린 전환 두 마리 토끼를 놓치는 상황이 발생할 수 도 있습니다.
결국엔 이마저도 급하게 전환한 탓에 래거시로 남아버릴 수 있는 일이 발생할 수도 있습니다....;; 😭

(물론, 그전에 충분한 학습기회와 실습이 바탕이 된다면 훨씬 더 수월하게 진행해 나갈 수 있을 겁니다!)

 

그렇기 때문에, 새로 시작하는 프로젝트 또는 클래스들부터 도입을 하면서 팀 트레이닝 목적으로 시작을 하는 것이 좋았고, 이로써 작은 성공 사례가 하나하나씩 만들어지기 때문에 그 과정에서 소소한 성취감을 맛보며 팀원들 간의 동기부여와 좋은 원동력이 되었던 경험이 있습니다.

 

이를 바탕으로, 현재 저희 팀에서는 어떻게 하는지 간단히 공유드려본다면

- 주 2회 코틀린 스터디 진행 (래퍼런스 문서와 "Kotlin in Action" 기본서 활용)
- 공통으로 사용되는 클래스들부터 전환 (예로, 데이터 클래스, 유틸 클래스 등...)
- 새롭게 작성하는 코드는 가급적 코틀린으로!
- 코틀린으로 바로 작성이 어려울 경우, 자바로 먼저 코딩한 후에 안드로이드 스튜디오의 [Code] > [Convert Java File to Kotlin File] 기능을 활용하여, 자바 코드 -> 코틀린으로 단순 변환 후, 다듬는 식으로 진행

위의 내용대로 팀 내 코틀린 적용을 시작하였습니다.

 

물론, 이 과정에서는 팀원들 간의 코드 리뷰가 반드시 있어야 할 테고, 실제로 코드 리뷰를 진행하면서 새롭게 배우는 부분도 상당하기 때문에 주저하거나 고민하지 마시고 부담 없이 적용해보시기를 추천드립니다!

 

이렇게, 코틀린 포스팅을 앞두고 간단히 코틀린을 해야 하는 이유에 대해서 적어보았고,

아무쪼록 코틀린을 통해 늘어난 생산성만큼 우리 모두 좀 더 여유 있는 저녁이 있는 삶을 누릴 수 있게 되기를 바랍니다!

 

 

2020/02/04 - [안드로이드 기술 공유] - 코틀린 전환과 같이하면 좋은 선행작업!

 

코틀린 전환과 같이하면 좋은 선행작업!

코틀린 전환의 선행작업 코틀린 전환을 시작하면서, 코틀린 전환에 효과적인 선행작업은 무엇이 있을까? 라는 생각을 해보았습니다. 단순히 자바를 코틀린으로 바꾼다면 그저 문법 변환에 그치

0391kjy.tistory.com