본문 바로가기
[책 정리] 9장. LSP(Liskov Substitution Principle): 리스코프 치환 원칙 - Clean Architecture - 리스코프는 하위 타입(subtype)을 아래와 같이 정의했다. "여기에서 필요한 것은 다음과 같은 치환(substitution)원칙이다. S 타입의 객체 o1 각각에 대응하는 T타입 객체 o2 가 있고, T타입을 이용해서 정의한 모든 프로그램 P 에서 o2 의 자리에 o1 을 치환하더라도 P 의 행위가 변하지 않는다면, S는 T의 하위 타입이다." 상속을 사용하도록 가이드하기 - 사용자가 Interface 를 바라보면서 어떤 하위타입이 사용되는지에 의존하지 않는다면 이것은 LSP 를 준수한다고 볼 수 있다. 정사각형/직사각형 문제 - LSP 를 위반하는 전형적인 문제로는 유명한 정사각형/직사각형 문제가 있다. Squre 가 Rectangle 을 상속하는 경우.. Rectangle r = ... r.s.. 2020. 4. 13.
[Effective Unit Testing] Chap7. 테스트 가능 설계 [Effective Unit Testing] Chap7. 테스트 가능 설계 7.1. 테스트 가능 설계란? -테스트 가능 설계의 가장 큰 의의는 당연히 코드를 더 잘 테스트할 수 있도록 해준다는 것이다. -테스트 용이성(testability)이란 테스트할 수 있는 소프트웨어냐 아니냐를 설명하는 용어가 아니다.그보다는 소프트웨어를 멀마나 쉽게 테스트할 수 있느냐를 평가하는 용어다.단위 테스트를 위한 시나리오 준비는 식은 죽 먹기여야 한다.테스트 용이성이 떨어질수록 테스트를 작성하는 프로그래머의 부담이 커진다. 7.1.1. 모듈러 설계 -제품은 특정 역할을 담당하는 독립 모듈로 구성된다는 그 본질만 잘 반영하면 자연스럽게 모듈러 설계가 만들어진다.제품의 전체 기능을 뚜렷한 역할로 나누고 그 역할 각각을 독립된.. 2019. 3. 17.
[Java8 In Action] #15 OOP 와 FP 의 조합 : 자바8과 스칼라 비교 [Java8 In Action] #15 OOP 와 FP 의 조합 : 자바8과 스칼라 비교 Java8 In Action 내용을 보며 정리한 내용입니다.정리자는 기존에 Java8 을 한차례 rough 하게 공부한 적이 있고, Kotlin 역시 공부한 적이 있습니다.위의 prerequisite 가 있는 상태에서 추가적인 내용만 정리한 내용이므로, 제대로 공부를 하고 싶다면 책을 구매해서 보길 권장합니다! -스칼라는 객체지향과 함수형 프로그래밍을 혼합한 언어다.스칼라는 자바에 비해 많은 기능을 제공한다.스칼라는 복잡한 형식 시스템, 형식 추론, 패턴 매칭, 도메인 전용 언어를 단순하게 정의할 수 있는 구조 등을 제공한다.스칼라 코드에서는 모든 자바 라이브러리를 사용할 수 있다. 자바8과 마찬가지로 스칼라는 컬렉.. 2019. 1. 4.
Efficient Android Threading #7 Executor 프레임워크를 통한 스레드 실행 제어 Efficient Android Threading #7 Executor 프레임워크를 통한 스레드 실행 제어 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.9.1. Executor -Executor 는 interface 로 void execute(Runnable command); 하나의 함수를 갖는다.단순하지만 강력하다. 이는 테스크를 만드는 것과 실행 사이에 분리를 확실하게 해주기 때문에 기본 Thread 인터페이스보다 더 자주 사용된다. -public class SimpleExecutor implements Executor { @Override public void execute(Runnable runnable){ new.. 2018. 3. 23.
[Kotlin] Kotlin 의 숨겨진 비용 #1 [Kotlin] Kotlin 의 숨겨진 비용 #1 https://medium.com/@BladeCoder/exploring-kotlins-hidden-costs-part-1-fbb9935d9b62 -“With great power comes great responsibility” 를 기억해야 한다.( 간단한 코드를 짜는 대신 대가가 있다는 얘기다 ) -Kotlin bytecode inspector 를 사용하면 Kotlin 코드가 어떻게 bytecode 로 변환되는지 볼 수 있다.Android studio plugin 으로 접할 수 있다.이를 보면 primitive type 의 boxing, code 에서 보이지 않는 기타 object 들의 instantiation, 그리고 각종 추가 method 들의 추.. 2018. 1. 16.
[ios] Umbrella Framework? Umbrella Header? [ios] Umbrella Framework? Umbrella Header? https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html -Umbrella Framework 는 표준 Framework 와 비슷하다.Umbrella Framework 는 header file 들을 include 하고 있다.그리고 subframework 들을 encapsulate 한다. -Umbrella framework 는 내부의 구현을 잘 숨겨서 필요한 interface 만 제공할 수 있고,precompiled header 를 사용해 build 도 더 빨리 할 수 있는 장점이 있.. 2017. 11. 27.
Linux 가 Desktop 으로 잘 쓰이지 않는 이유 Linux 가 Desktop 으로 잘 쓰이지 않는 이유 http://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.current.html -Java 나 .Net 과 같이 platform independent 한 프로그램을 만들 수 있는 언어들이 있는데, 왜 무료 OS 인 Linux 가 인기가 없을까 궁금해서 찾아보았다. 위 링크 자료는 매년 업데이트 되는 것으로 보이며, 최신판은 2016 Edition 이다. Hardware support -하드웨어 회사들이 Linux 용 드라이버를 잘 지원하지 않는다. 드라이버 회사들이 Linux 용 드라이버를 지원하지 않거나, 제약된 범위에서 지원하곤 한다. (완전 핵심만 지원) Open source .. 2017. 11. 17.
[ios] abstract class 만드는 방법 [ios] abstract class 만드는 방법 -방법 1 .h 파일에 상속에서 구현해야 할 interface 들을 구현하고,.m 파일에서는 해당 interface 함수들에서 Exception 을 던지도록 함으로써 간접적으로 만들 수 있다. -방법 2 마찬가지로 .h 파일에 상속에서 구현해야 할 interface 들을 구현한다..m 파일에서는 init 함수에서 isMemberOfClass 함수를 통해 abstract class 에서는[self doesNotRecognizeSelector:_cmd] 함수로 Exception 을 날리고,nil 을 return 해준다.if ([self isMemberOfClass:[AbstractClass class]){ [self doesNotRecognizeSelecto.. 2017. 10. 27.
[도서 목차 정리] Kotlin in action [도서 목차 정리] Kotlin in action Kotlin in action 을 공부하면서 정리한 내용입니다.Java 를 어느 정도 이해하고 숙달한 사람들이 이해하기 좋습니다.Java 와 동일하거나 너무 당연한 기본적인 내용은 정리하지 않았습니다. Kotlin 소개 - Kotlin : what and why Kotlin 기초 #1 - Chap2. Kotlin basics Kotlin 기초 #2 - Chap2. Kotlin basics 함수 정의하고 호출하기 #1 - Chap 3. Defining and calling functions 함수 정의하고 호출하기 #2 클래스, objects, 그리고 인터페이스 #1 - Chap4. Classes, objects, and interfaces 클래스, obje.. 2017. 9. 25.
반응형