목록

    [Kotlin] Delegated Properties

    일반적으로 프로퍼티는 필요할 때마다 수동으로 구현할 수 있지만, 한 번 구현한 후 필요할 때마다 재사용하는 것이 더 유용하다. 대상은 다음과 같다. Lazy 속성: 최초 접근시에만 값을 계산. Observable 속성: 이 속성의 변경사항을 리스너로 알림. 별도의 필드가 아닌 맵에 속성을 저장. 이 경우들을 처리하기 위해 Kotlin은 Delegated Properties를 지원한다. class Example{ var p: String by Delegate() } 형태는 val/var : by 이다. by 뒤에 붙은 expression이 대리자(delegate)이며, 프로퍼티에 대한 get() / set()을 대리자 getValue() / setValue() 메소드에 위임한다. 프로퍼티 대리자는 인터페이..

    [Kotlin] Delegation

    Delegation 패턴은 상속 처리의 좋은 대안으로, Kotlin은 네이티브 코드에 보일러 플레이트 코드가 필요 없는 이 패턴을 지원한다. 아래 코드에서 클래스 Derived는 인터페이스 Base로부터 상속받아 모든 퍼블릭 메소드를 지정된 객체에 위임 가능하다. interface Base{ fun print() } class BaseImpl(val x: Int): Base{ override fun print() { print(x) } } class Derived(b: Base): Base by b fun main(){ val b = BaseImpl(10) Derived(b).print() } //result: 10 Derived의 상위 타입 목록에 있는 by는 Derived의 객체 내부에 b가 저장되고..

    [Java] 예외 종류

    Java에서 예외는 Error, RuntimeException, OtherException 3가지 종류로 나뉜다. 먼저 Error는 메모리 부족(OutOfMemoryError), 스택오버플로우(StackOverFlowError)등 JVM 또는 하드웨어적인 시스템의 문제로 발생하는 것을 의미한다. 다시 말해 개발자의 영역이 아님 시스템 영역의 문제이기 때문에 Error가 발생하면 프로그램을 종료시키는 것이 통상적이다. 다음으로는 큰 분류로 Exception이다. Error와 Exception의 가장 큰 차이점은 개발자가 프로그램적으로 처리할 수 있느냐 없느냐의 차이이다. 즉, 예외가 발생하더라도 프로그램이 비정상 종료되는 일을 막을 수 있다. Exception은 RuntiException과 OtherExc..

    [클린 코드] 오류 처리(1)

    오류 코드보다 예외를 사용 아래 코드는 오류 플래그를 설정하거나 호출자에게 오류 코드를 반환하는 방법으로 작성되어 있다. public class DeviceController{ ... public void sendShutDown(){ DeviceHandle handle = getHandle(DEV1); //디바이스 상태 점검 if(handle != DeviceHandle.INVALID){ //레코드 필드에 디바이스 상태 저장 retrieveDeviceRecord(handle); //디바이스가 일시정지 상태가 아니라면 종료 if(record.getStatus() != DEVICE_SUSPENDED){ pauseDevice(handle); clearDeviceWorkQueue(handle); closeDev..

    [클린 코드] 객체와 자료구조(4)

    자료 전달 객체 자료 구조체의 기본적인 형태는 공개 변수만 있고 함수가 없는 클래스이다. 이런 자료 구조체를 자료 전달 객체(DTO, Data Transfer Object)라 한다 DTO는 데이터베이스에 저장된 가공되지 않은 정보를 어플리케이션 코드에서 사용할 객체로 변환되는 단계에서 가장 처음 사용된다. 좀 더 일반적인 형태는 '빈(bean)'구조이다. 아래 코드를 보면 private 변수를 조회/설정 함수로 조작한다. 이는 사이비 캡슐화로 별다른 의미없는 행동이다. public class Address{ private String street; private String city; public Address(String strret, String city){ this.street = street; t..

    [프로그래머스/Kotlin] 멀쩡한 사각형

    문제 설명 가로길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자 칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군가가 이 종이를 대각선 꼭짓점 2개를 잇는 방향으로 잘라 놓았습니다. 그러므로 현재 직사각형 종이는 크기가 같은 직각삼각형 2개로 나누어진 상태입니다. 새로운 종이를 구할 수 없는 상태이기 때문에, 이 종이에서 원래 종이의 가로, 세로 방향과 평행하게 1cm × 1cm로 잘라 사용할 수 있는 만큼만 사용하기로 하였습니다. 가로의 길이 W와 세로의 길이 H가 주어질 때, 사용할 수 있는 정사각형의 개수를 구하는 solutio..