상대주의 - 합리주의를 기반으로
Value: 보편적 가치
Principle: 그룹, 카테고리에 따라서 계층적으로 생성된다. 구성원이 "모두" 지킬 때 가치있다.
모두가 원칙을 지킬 때, 지키지 않은 코드를 즉각적으로 발견하여 비용을 줄일 수 있다.
X-Oriented
Pattern: 위의 요소들이 반복적으로 사용됨에 따라 패턴이 발생하고, 그중 Best Practice를 말한다.
로직의 격리 "역할 모델"이 유일하다.
역할 모델에 따른 설계의 격리를 지향하라.
추상화에 대한 대표적인 기법
IT에서 사용하게 된다면
Data abstraction: 데이터적 추상화
목표
를 위해 필요한 것
만 추린 것.Procedural abstraction - 절차적 추상화
OOP에서는 모든 추상화 기법을 다 사용한다. 그래서 어렵다.
프로그래밍의 동작 방식에 대해 알아보자
메모리에 적재가 되어서 실행이 되는 순간부터 프로그램이다.
Program | Timing |
---|---|
Language Code | Lint Time |
Machine Language | Compile Time |
File | |
Load | |
Run | Run Time |
Terminate |
개발자는 Lint Time Error, Compile Time Error, Run Time Error의 세가지 에러를 살펴 볼 수 있다.
이 외에도 Context Error가 존재하지만 살펴 볼 방법이 없다.
Run Time Error는 대부분 잡을 수도 없고 재현이 힘들기 때문에 Lint Time, Compile Time에서
에러를 잡을 수 있도록 코드를 작성하는게 좋다. Run Time Error는 미리 예상하여 사전 조치를 취한 경우만
즉각 적인 모니터링이 가능하다.
객체지향에서 인터페이스를 정의하여 사용할 때 그 함수가 구상 클래스를 호출할 수 있는 원리.
LinkedList, Decoration Pattern 도 같은 원리로 구현되어 있다.
불변 값이 아닌 경우, 외부에서 데이터를 바꾸는 순간 모든 것이 망가지는 것을 방지한다.
연산 비용을 대가로 런타임에서의 안전을 얻을 수 있다. 책에서는 동적 바인딩이라 표현한다.
Run Time Error를 Compile Time Error로 바꿀 수 있는 것이다.