이펙티브 코틀린 : 안전성, 가독성, 코드 설계, 효율성을 향상시키기 위한 52가지 전략과 기법
저자

마르친모스칼라

저자:마르친모스칼라
경험이많은개발자이자코틀린교육자다.젯브레인과코틀린교육에대한공식적인파트너십을체결하고있는Kt.Academy의창립자다.《AndroidDevelopmentwithKotlin(코틀린을이용한안드로이드개발)》의저자이며,여러국제컨퍼런스에서발표한경험이있다.다수의라이브러리를만들었으며,컨트리뷰터로도활동하고있다.

역자:윤인성
출근하는것이싫어서책을집필하기시작했다.현재직업특성상집에서나갈이유가별로없다는것에굉장히만족해하고있다.홍차와커피를좋아하며,기타,가야금,그림그리기,스컬핑등이취미다.저서로는《자바스크립트프로그래밍입문》,《C#프로그래밍》,《혼자공부하는파이썬》,《모던웹을위한HTML5+CSS3바이블(3판)》,《모던웹을위한JavaScript+jQuery입문》,《모던웹을위한Node.js프로그래밍》등이있으며,역서로는《TopCoder알고리즘트레이닝》,《자바퍼즐러》,《소셜코딩으로이끄는GitHub실천기술》,《NatureofCode》,《프로그래밍대회공략을위한알고리즘과자료구조입문》등이있다.

목차

1부:좋은코드

1장안정성
아이템1:가변성을제한하라
아이템2:변수의스코프를최소화하라
아이템3:최대한플랫폼타입을사용하지말라
아이템4:inferred타입으로리턴하지말라
아이템5:예외를활용해코드에제한을걸어라
아이템6:사용자정의오류보다는표준오류를사용하라
아이템7:결과부족이발생할경우null과Failure를사용하라
아이템8:적절하게null을처리하라
아이템9:use를사용하여리소스를닫아라
아이템10:단위테스트를만들어라

2장가독성
아이템11:가독성을목표로설계하라
아이템12:연산자오버로드를할때는의미에맞게사용하라
아이템13:Unit?을리턴하지말라
아이템14:변수타입이명확하게보이지않는경우확실하게지정하라
아이템15:리시버를명시적으로참조하라
아이템16:프로퍼티는동작이아니라상태를나타내야한다
아이템17:이름있는아규먼트를사용하라
아이템18:코딩컨벤션지켜라

2부:코드설계

3장재사용성
아이템19:knowledge를반복하지말라
아이템20:일반적인알고리즘을반복해서구현하지말라
아이템21:일반적인프로퍼티패턴은프로퍼티위임으로만들어라
아이템22:일반적인알고리즘을구현할때제네릭을사용하라
아이템23:타입파라미터의섀도잉을피하라
아이템24:제네렉타입과variance한정자를활용하라
아이템25:공통모듈을추출해서여러플랫폼에서재사용하라

4장추상화설계
아이템26:함수내부의추상화레벨을통일하라
아이템27:변화로부터코드를보호하려면추상화를사용하라
아이템28:API안정성을확인하라
아이템29:외부API를랩(wrap)해서사용하라
아이템30:요소의가시성을최소화하라
아이템31:문서로규약을정의하라
아이템32:추상화규약을지켜라

5장객체생성
아이템33:생성자대신팩토리함수를사용하라
아이템34:기본생성자에이름있는옵션아규먼트를사용하라
아이템35:복잡한객체를생성하기위한DSL을만들어라

6장:클래스설계
아이템36:상속보다는컴포지션을사용하라
아이템37:데이터집합표현에data한정자를사용하라
아이템38:연산또는액션을전달할때인터페이스대신함수타입을사용하라
아이템39:태그클래스보다는클래스계층을사용하라
아이템40:equals의규약을지켜라
아이템41:hashCode의규약을지켜라
아이템42:compareTo의규약을지켜라
아이템43:API의필수적이지않는부분을확장함수로추출하라
아이템44:멤버확장함수의사용을피하라

3부:효율성

7장비용줄이기
아이템45:불필요한객체생성을피하라
아이템46:함수타입파라미터를갖는함수에inline한정자를붙여라
아이템47:인라인클래스의사용을고려하라
아이템48:더이상사용하지않는객체의레퍼런스를제거하라

8장효율적인컬렉션처리
아이템49:하나이상의처리단계를가진경우에는시퀀스를사용하라
아이템50:컬렉션처리단계수를제한하라
아이템51:성능이중요한부분에는기본자료형배열을사용하라
아이템52:mutable컬렉션사용을고려하라

용어