본문 바로가기
[책 정리] 14장. 컴포넌트 결합 - Clean Architecture ADP(Acyclic Dependecies Principle) : 의존성 비순환 원칙 - "컴포넌트 의존성 그래프에 순환(cycle)이 있어서는 안 된다." 개발자가 동일한 소스 파일을 수정하는 환경에서는 숙취 증후군(morning after syndrome)이 발생한다. 잘 작동하던 코드가 다음날 작동하지 않는 것이다. 이에 대한 해결책은 두 가지가 있다. 한 가지는 "주 단위 빌드(weekly build)"이며, 두 번째 해결책은 '의존성 비순환(Acyclic Dependencies Principle, ADP) 이다. * 주 단위 빌드 (Weekly Build) - 개발자 모두 코드를 개인적으로 복사하여 작업하며, 전체적인 기준에서 작업을 어떻게 통합할지는 걱정하지 않는다. 그런 후 금요일이 되면 변.. 2020. 4. 18.
[책 정리] 11장. DIP(Dependency Inversion Principle) : 의존성 역전 원칙 - Clean Architecture -의존성 역전 원칙(DIP)에서 말하는 유연성이 극대화된 시스템이란 소스 코드 의존성이 추상(abstraction)에 의존하며 구체(concrete)에는 의존하지 않는 시스템이다.자바와 같은 정적 타입 언어에서 이 말은 use, import, include 구문은 오직 인터페이스나 추상 클래스 같은 추상적인 선언만을 참조해야 한다는 뜻이다.구체적인 대상에는 절대로 의존해서는 안 된다. DIP 를 논할 때 운영체제나 플랫폼 같이 안전성이 보장된 환경에 대해서는 이를 무시하는 편이다.이들 환경에 대한 의존성은 용납하는데, 변경되지 않는다면 의존할 수 있다는 사실을 이미 알고 있기 때문이다. -우리가 의존하지 않도록 피하고자 하는 것은 바로 변동성이 큰(volatile) 구체적인 요소다.그리고 이 구체적인 요.. 2020. 4. 15.
[책 정리] 8장. OCP(Open Closed Principle): 개방-폐쇄 원칙 - Clean Architecture - 개방-폐쇄 원칙(OCP) 는 다음과 같다. "소프트웨어 개체(artifact)는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. 다시 말해 소프트웨어 개체의 행위를 확장할 수 있어야 하지만, 이 때 개체를 변경해서는 안 된다." 소프트웨어 아키텍처를 공부하는 가장 근본적인 이유가 바로 이 때문이다. 요구사항을 살짝 확장하는 데 소프트웨어를 엄청나게 수정해야 하면 이는 실패한 아키텍처이다. 사고 실험 - 재무제표를 웹 페이지로 보여주는 시스템이 있다고 하자. 웹 페이지에 표시되는 데이터는 스크롤 할 수 있고, 음수는 빨간색으로 출력한다. 이제 이해관계자가 동일한 정보를 보고서 형태로 변환해서 흑백 프린터로 출력해 달라는 요청이 왔다. 이 보고서에는 페이지 번호가 있어야 하고, 페이지마다 저절한.. 2020. 4. 12.
[책 정리] 7장. SRP(Single Responsibility Principle), 단일 책임 원칙 - Clean Architecture - 좋은 소프트웨어 시스템은 깔끔한 코드(clean code)로부터 시작한다. SOLID 원칙은 함수와 데이터 구조를 클래스로 배치하는 방법, 그리고 이들 클래스를 서로 결합하는 방법을 설명해준다. SOLID 원칙의 목적은 중간 수준(모듈 수준)의 소프트웨어 구조가 아래와 같도록 만드는 데 있다. 변경에 유연하다. 이해하기 쉽다. 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트 기반이 된다.(재사용성) - SRP: 단일 책임의 원칙. Single Responsibility Principle 각 소프트웨어 모듈은 변경의 이유가 하나, 단 하나여야만 한다. - OCP : 개발, 폐쇄 원칙. Open Closed Principle 기존 코드를 수정하기보다는 반드시 새로운 코드를 추가하는 방식으로 시스템의 행.. 2020. 4. 11.
[Effective Unit Testing] Chap7. 테스트 가능 설계 [Effective Unit Testing] Chap7. 테스트 가능 설계 7.1. 테스트 가능 설계란? -테스트 가능 설계의 가장 큰 의의는 당연히 코드를 더 잘 테스트할 수 있도록 해준다는 것이다. -테스트 용이성(testability)이란 테스트할 수 있는 소프트웨어냐 아니냐를 설명하는 용어가 아니다.그보다는 소프트웨어를 멀마나 쉽게 테스트할 수 있느냐를 평가하는 용어다.단위 테스트를 위한 시나리오 준비는 식은 죽 먹기여야 한다.테스트 용이성이 떨어질수록 테스트를 작성하는 프로그래머의 부담이 커진다. 7.1.1. 모듈러 설계 -제품은 특정 역할을 담당하는 독립 모듈로 구성된다는 그 본질만 잘 반영하면 자연스럽게 모듈러 설계가 만들어진다.제품의 전체 기능을 뚜렷한 역할로 나누고 그 역할 각각을 독립된.. 2019. 3. 17.
[맘스 터치] 딥치즈 버거 후기입니당. [맘스 터치] 딥치즈 버거 후기입니당. 모든 패스트푸드는 KFC 가 갑이라고 생각하고 살았던 나의 생각을 바꿔준, 맘스터치.이제는 햄버거만큼은 맘스터치가 갑이라고 생각하고 살고 있다. 오늘은 "딥치즈 버거"를 먹어보았다. 딥 치즈버거라고 해서 패티가 치즈로 코팅되어 있지는 않을까 기대했지만, 그렇지는 않았다.Dipping sauce 라고 할 때의 "딥" 인가보다. ( 참고로 Dipping sauce 의 dip 은 찍어먹는 느낌 ) 이 녀석, 나의 Favorite 휠렛버거에 비해 야채가 아주 부실했다...가격은 비싸면서..그리고 들췄을 때 치즈를 거의 찾을 수도 없엇다.이렇게... 저 살짝 묻힌 치즈떄문에 야채를 포기하고 그 거금(?) 을 낸 것인가? ( 나는 야채 아주 좋아함 )( 휠렛버거는 단품 3,4.. 2018. 4. 2.
[android] dip, dp, px 와 해상도의 관계 android의 dip, dp, px 와 해상도의 관계 안드로이드에서 개발자들은 쉽게 dp 값만 쓰면 모든 해상도(resolution)에 맞는 design 을 낼 수 있다고 믿지만, 실상은 그렇지 않다. dp 값을 씀으로서 폰에서 조금 더 유기적인 view 형태를 갖는 것은 맞지만,화면의 비율이 달라지기 때문에 full screen 을 보여주는 데는 분명 차이가 있다. 이 때 알아야 하는 것이, dip, dp, px 의 차이값이다. 기본적으로 1dp = 1px 을 갖는 해상도는 320x480(mdpi) 이다.그 이유인즉슨 320x480 은 160dip 을 갖는데, dp 공식이 아래와 같기 때문. dp = pixel * ( dip / 160 ) 이 값들의 의미를 이해했다면, 480x800 이 240dip,.. 2013. 6. 28.
[Spring] Spring Framework 의 개요 #2 Spring Framework의 개요 #2 변화를 예상 -> design pattern 적용 가능. 관심사의 분리( Separation of Concerns ) 관심이 같은 것끼리는 하나의 객체 안으로, 관심이 다른 것은 가능한 따로 떨어져 영향을 주지 않도록 분리. 템플릿 메소드 패턴( Template Method Pattern ) 슈퍼클래스에 기본적인 조작의 흐름을 만들고, 그 기능의 일부를 추상 메소드나 오버라이딩 가능한 protected 메소드 등으로 만든 뒤, 서브클라스에서 이런 메소드를 필요에 맞게 구현해서 사용하도록 하는 방법. 이 때 선택적 override 가능한 method 를 hook method 라고 한다. 팩토리 메소드 패턴( Factory Method Pattern ) 서브클래스에.. 2013. 6. 25.
반응형