본문 바로가기

전체 글35

Modern Java In Action 정리 - 10장 람다를 이용한 도메인 전용 언어 도메인 전용 언어는 특정 비즈니스 도메인의 문제를 해결하려고 만든 언어다. 기존 자바 언어로 비즈니스 로직을 설명하는 것은 읽는 사람으로 하여금 이해하기 어려운 과정을 만들 수 있다. 코드로 이어지는 의사소통을 좀 더 원활하게 하기 위해서 자바가 담을 수 있는 여러가지 기능들을 이용해서 초심자도 쉽게 이해할 수 있는 코드를 만들기 위한 노력을 다루고 있다. DSL의 장단점 Strengths Weaknesses 간결함 가독성 유지보수성 높은 수준의 추상화 집중 관심사 분리 DSL설계의 어려움 개발비용 추가 우회 계층 새로 배워야 하는 언어 호스팅 언어의 한계 최신 자바 API의 작은 DSL 최신 자바는 람다와 메소드 참조가 생기면서 DSL을 활용하기 더욱 좋은 환경이 되었다. Collections.sort.. 2020. 6. 22.
Modern Java In Action 정리 - 9장 리팩터링, 테스팅, 디버깅 코드 가독성 내가 쓴 코드를 다른 사람이 쉽게 이해하고 유지보수할 수 있게 만드는 것. 9장에서는 아래의 방법으로 기존의 코드를 리팩터링하고 있다. 익명클래스 -> 람다표현식 람다표현식 -> 메서드 참조 명령형 데이터 처리 -> 스트림 익명클래스를 람다 표현식으로 리팩터링하기 Runnable runnable = new Runnable() { @Override public void run() { System.out.println("Hello"); } }; Runnable runnable2 = () -> System.out.println("Hello"); 익명 클래스를 람다로 바꿀 때 주의할 점이 세가지 있다. 1. this라는 키워드가 쓰이고 있다면, 익명 클래스 내에서의 this는 익명 클래스 내에서의 .. 2020. 6. 13.
Modern Java In Action 정리 - 8장 컬렉션 API 개선 Collection 팩토리 메소드 가변 리스트 만들기 List friends1 = new ArrayList(); friends1.add("Raphael"); friends1.add("Olivia"); friends1.add("Thibaut"); 고정 크기의 리스트 만들기 List friends2 = Arrays.asList("Raphael", "Olivia"); // fixed size friends2.set(0, "Richard"); // friends.add("Thibaut"); // throws UnsupportedOperationException 한 발짝 더 나아가 불변 리스트 만들기 (Java 9 부터 지원) List friends3 = List.of("Raphael", "Olivia", "Th.. 2020. 6. 6.
Kotlin - Data Class 데이터 클래스 (공식문서 번역) 이 글은 Kotlin 공식 문서의 "Data Classes"를 번역한 글입니다. 다소 오역과 의역이 있을 수 있습니다. https://kotlinlang.org/docs/reference/data-classes.html Data Classes - Kotlin Programming Language kotlinlang.org 우리는 자주 데이터를 가지고 있을 목적의 클래스를 생성합니다. 이러한 클래스에서 몇가지 표준적인 기능이나 유틸 함수 등은 바로 데이터를 통해서 유추가 됩니다. 코틀린에서는 이러한 클래스를 데이터 클래스 Data Class라고 칭하며 data 키워드를 앞에 붙입니다. data class User(val name: String, val age: Int) 컴파일러는 primary constr.. 2020. 5. 2.
자전거 출퇴근(a.k.a 자출) 한 달 후기 지난달에 이사를 하면서 자전거로 출퇴근을 해보겠다고 마음을 먹고 전기자전거를 구매했다. 지하철 역이 집에서 약간 먼 것도 있고, 운동할 시간은 없는데 출퇴근하면서 운동을 할 수 없을까 하는 생각에 자출을 선택하게 된 것이다. 무언가를 시작할 때는 장비가 중요하니까 장비부터 보자. 팬텀 마이크로 내가 산 자전거는 삼천리 자전거의 팬텀 마이크로다. 자전거에 대해서 잘 모르지만, 일단 접이식이다. 핸들 부분과 중앙 폴이 접히게끔 되어있다. 그래서 차 뒷 트렁크에도 쏙 들어간다. 하지만 무게가 17.8kg이나 되기 때문에, 휴대가 간편하다고는 절대 할 수 없을 것 같다. 전기 자전거로 무슨 운동이 되겠냐고 싶겠지만, 스쿠터가 아닌 페달을 밟아야 앞으로 나갈 수 있는 방식 (PAS, Power Assist Sys.. 2020. 4. 27.
코틀린 기초 문법 (공식문서 번역) 이 글은 "Basic Syntax"를 번역한 글입니다. 다소 오역과 의역이 있을 수 있습니다. https://kotlinlang.org/docs/reference/basic-syntax.html Basic Syntax - Kotlin Programming Language kotlinlang.org 패키지 정의, import 패키지 지정은 파일의 맨 위에서 해야합니다. 디렉토리 구조와 패키지 구조를 꼭 맞출 필요는 없습니다. 소스 파일은 파일시스템 내에 임의대로 둘 수 있습니다. (패키지에 대해서 궁금하시다면 Packages를 참고해주세요) 프로그램의 시작점 코틀린 어플리케이션은 main 함수에서 시작합니다. 함수 두 가지의 Int 파라미터를 갖고 Int 리턴 타입을 갖는 함수입니다. 표현식이 있고 추론된.. 2020. 4. 15.