[이펙티브 코틀린 요약] 비용 줄이기

과거에는 메모리가 비쌌고 하드웨어적인 제약이 컸기 때문에 효율성(efficiency) 및 최적화에 많은 노력을 기울였다. (1985년에 출시한 게임, 마리오 브라더스 용량이 약 40kB이였던 것에 대해 생각해보자) 하지만 오늘날에는 상대적으로 하드웨어보다 개발자의 몸값이 비싸기 때문에 과거보다는 효율성에 대해 상대적으로 관대하게 바라본다.하지만 여러가지 측면에서 더보기…

처음 시작하는 코루틴, 기본적인 용어와 이해

코루틴(Coroutines)이란? 코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴이다. 코루틴은 다음과 같은 특징을 갖는다. 경량화 메모리 누수 감소 계층적 구조를 통한 취소 전달 Jetpack과의 통합 Suspend function suspend(유예하다, 연기하다) vs block(막다, 차단하다) blocking과 suspending의 더보기…

코틀린/자바의 volatile에 대해서

volatile이란? 자바의 volatile 키워드 또는 코틀린의 @Volatile 애노테이션을 변수 선언시 지정할 수 있다. 사전적 의미로는 ‘휘발성의’라는 뜻을 가지며, 변수 선언시 volatile을 지정하면 값을 메인 메모리에만 적재하게 된다. volatile 변수를 사용하지 않는 일반적인 경우는 내부적으로 성능 향상을 위해 메인 메모리로부터 읽어온 더보기…

[이펙티브 코틀린 요약] 클래스 설계

코틀린에서 자주 사용하는 클래스 패턴을 살펴보도록 한다. 이번 장에서는 다음의 내용에 대해서 생각 해 볼 수 있다. ‘상속’을 활용해야 하는 경우 ‘data 클래스’를 사용해야 하는 경우 하나의 메서드를 갖는 인터페이스를 함수 타입으로 사용해야 하는 경우 equals, hashCode 그리고 compareTo의 규약 더보기…

[이펙티브 코틀린 요약] 객체 생성에 대하여

코틀린은 순수 함수형 스타일로 작성할 수도 있지만 자바처럼 OOP스타일로도 작성할 수 있다. 객체를 생성하는 방법에느 어떤 것들이 있고 어떠한 장단점이 있는지 살펴보자. 생성자 대신 팩토리 함수 사용하기 객체를 만드는 일반적인 방법은 생성자를 사용하는 방법이지만, 팩토리 패턴을 이용한 객체를 생성할 수도 더보기…

[이펙티브 코틀린 요약] 추상화 설계에 대하여

추상화 객체 지향 프로그래밍(Object-Oriented Programming;OOP)에서 주요한 개념은 추상화, 캡슐화, 상속이 있다. 이 중 추상화에 대해서 알아본다. 추상화는 복잡성을 숨기기 위해 사용되는 단순한 형식을 의미한다. 대표적인 예가 인터페이스(interface)다. 클래스라는 복잡한 개념에서 메서드와 프로퍼티만 추출해서 단순화 했으므로 이를 추상화라 말할 수 있다. 더보기…

[이펙티브 코틀린 요약] 재사용성(Reusability)에 대하여

프로젝트에서 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다. -이펙티브 코틀린 저자- Knowledge를 반복하여 사용하지 말라 여기서 언급하는 knowledge는 일반적으로 표현하는 ‘지식’과 약간 다르게 ‘의도적인 정보’를 나타내는 개념으로, <실용주의 프로그래머> 라는 책에서 언급된다. 이 책에서는 ‘Don’t Repat Yourself’라는 규칙을 더보기…

[이펙티브 코틀린 요약] 가독성(Readability)에 대하여

코틀린은 간결함 보다는 가독성을 좋게하는 데 목표를 두고 설계된 프로그래밍 언어다. 코틀린을 사용하면 깨끗하고 의미 있는 코드와 API를 쉽게 작성할 수 있다. 다음의 항목들을 참조하여 가독성 좋은 코드를 작성해보자. 1. 가독성을 목표로 설계하기 개발자는 코드를 작성하는 시간보다 읽는데 많은 시간을 더보기…

[이펙티브 코틀린 요약] 안정성(Safety)에 대하여

이 책에서 코틀린을 사용하는 첫번째 이유로 안정성(Safety)을 꼽고 있다. 코틀린은 잠재적인 오류와 크래시를 줄이며, 사용자와 개발자 모두에게 좋은 비즈니스 가치를 제공한다라고 설명한다. 안전성은 기본적으로는 언어일뿐이고, 사실은 개발자가 이를 사용하여 어떻게 코드를 작성하느냐에 따라 안정성이 좌지우지 된다. 다음의 항목들을 참고하여 오류가 더보기…

[안드로이드로 배우는 OpenCV] Moments

Moments 모멘트(moments)는 한 점이나 축에 대한 분포를 나타낸다. 그렇기 때문에 OpenCV에서 모멘트는 이미지 픽셀 강도의 평균을 나타낸다. 즉, 모멘트란 영상의 형태를 표현하는 일련의 실수값이라고 볼 수 있다. 컴퓨터는 카메라 영상과 같은 실시간 이미지 처리시에 이미지의 픽셀 값들을 어떤 숫자로 변환한다. 더보기…