Kotlin 17

kotlin in Action 4장 예제 (by, selaed, factory method, constructor)

by 예제 interface Attackable { fun attack(): String } class Knife : Attackable { override fun attack() = "attack with knife" } class Gun : Attackable { override fun attack() = "attack with gun" } class Attacker(val impl: Attackable) : Attackable by impl { fun attackEmoji() = "${attack()} 😱😵" } fun main() { println(Attacker(Knife()).attackEmoji()) println(Attacker(Gun()).attackEmoji()) } 하위 클래스가 상위..

Languages 2020.04.26

kotlin으로 java springboot 프로젝트 리팩토링 하기 2

kotlin 으로 java springboot 프로젝트를 리팩토링 하며 알게된.. java와 kotlin의 차이 java와 kotlin 코드에 사용되는 몰랐던 개념 좋은 코드를 위한 고민 Any type을 Any라는 키워드로 지정할 수 있다 Any Java의 Object에 해당된다 when 인수에 대응하는 모든 분기를 조건이 충족될때까지 순차적으로 맞춰본다 모든 가능한 경우가 존재한다고 증명할 수 없는 경우에 else는 꼭 있어야 한다 companion object 코틀린에는 정적변수 혹은 메소드가 없고, 대신 패키지 내에 함수를 선언하여 사용할 수 있다 kotlin은 static 키워드 대신 companion object 기능을 제공 companion은 클래스 내부에 companion이라는 정적(sta..

Backend 2020.04.19

Kotlin의 함수 (Collection, 확장함수, 가변 인자 함수, 중위호출)

3장. 함수 정의와 호출 🎃 Kotlin 에서 Collection 만들기 val set = setOf(1,2,3) val set2 = hashSetOf(1,7,53) val list = arrayListOf(1,7,53) val map = hashMapOf(1 to “one”, 7 to “answer”, 53 to “fifty-three”) to : 언어가 제공하는 특별한 키워드가 아니라 일반 함수이다 중위함수 : 인자가 1개인 함수 .javaClass 객체가 어떤 클래스에 속하는지를 볼 수 있다 java에서는 getClass() set2.javaClass class java.util.HashSet kotlin이 자신만의 컬렉션 기능을 제공하지 않는다는 의미 kotlin이 자체 컬렉션을 제공하지 않는 이..

Languages 2020.04.16

kotlin으로 java springboot 프로젝트 리팩토링 하기

spring boot + java로 만들어진 API 제공 서비스를 kotlin으로 리팩토링 하기 👩🏻‍🍳 intelliJ gradle 프로젝트 불러오기 spring boot maven으로 빌드하는법을 배운지 얼마되지 않아 갑자기 이번 프로젝트는 gradle으로 빌드 해야 했다. dependency를 선언하는데에 있어서, 프로젝트를 불러올때 작은 차이가 있었다 프로젝트 불러오는법 gradle.build 파일로 import gradle에 필요한 external library가 자동으로 불러지지 않는 경우 .idea 파일을 지운다음 다시 import 하여 해결 gradle 프로젝트로 인식 못할 때 🙅🏻‍♀️ 기존 프로젝트의 버전을 그대로 사용? 기존 프로젝트의 버전은 아래와 같았다 gradle : 4.3 sp..

Backend 2020.04.11

Kotlin과 Java의 차이 그리고 혼용

2장. Kotlin 기초 Kotlin 코드는 Java 코드와 한 프로젝트에 있어도 완벽하게 혼용 가능하고 컴파일 된다. 그리고 심지어 컬렉션 (ex. java.util.HashSet )을 공유하면서도 기능은 더 많다. 🐨 예제로 살펴보는 Kotlin의 특징 class Person (val name: String, val age: Int? = null) fun main (args: Array){ val persons = listOf(Person(“영희”), Person(“철수”, age = 29)) val oldest = persons.maxBy { it.age ?: 0 } } class 의 파라미터 파라미터 이름 뒤에 파라미터의 타입을 쓴다 ? 표시를 통해 null값이 될 수 있다는 표시를 해주고 = 뒤..

Languages 2020.04.10

Kotlin 튜토리얼

1장. Kotlin 이란 무엇이며, 왜 필요한가? 🐨 Kotlin 튜토리얼 코틀린 튜토리얼 링크 IntelliJ IDEA 튜토리얼 사용 kotlin getting-started hello world 출력 프로그램 만들어보기 java와 차이점 system.out.println —> println 코틀린 코드 컴파일 코틀린 소스코드 확장자 : .kt 코틀린 컴파일러 또한 자바 컴파일러처럼 소스코드를 분석해서 .class 파일을 만들어낸다 커맨드라인 실행방법 kotlinc -include-runtime -d java -jar 코틀린 런타임 라이브러리 코틀린 컴파일러로 컴파일한 코드는 런타일 라이브러리에 의존 배포시 런타임 라이브러리도 함께 배포해야한다 maven, gradle등의 빌드 시스템은 알아서 런타임을..

Languages 2020.04.10

👩🏻‍💻신입사원의 레거시 코드 뽀개기

신입사원은 레거시 코드를 받았고 뽀개려 합니다 💼 새로운 부서 새로운 일 2020년 3월, 드디어 정직원으로서의 첫 부서를 배치받았다. 네이버 지도를 서비스하는 팀에 들어와서 초반 1주차는 지도, 좌표계에 관련된 여러 자료들을 살펴보고 도메인 지식을 쌓는데에 주력했다. 새로운 팀, 새로운 업무를 맡게 되니 당연스레 레거시 코드를 인수인계 받았다. 난생 처음 레거시 코드를 받고보니 어디서부터 살펴보아야 하는가, 이걸 내가 다 볼 수 있을까?, 어떻게 봐야 다 봤다고 할 수 있을까 등등 많은 생각이 들었다. (난생 처음 재택근무도 하고 있다 COVID-19😷) 🗂 부여받은 업무 내가 부여받은 업무는 퇴사자 분이 인수인계 해주신 업무를 (java, spring boot로 된 API) kotlin으로 리팩토링하..

Backend 2020.04.03