TIL
Chapter 22 요소들을 유익하게 관계 맺는 일
소프트웨어 설계란?
‘소프트웨어 설계는 인간관계 속에서 벌어지는 활동’
‘요소들을 유익하게 관계 맺는 일’
요소
물질 구조가 원자 → 분자 → 결정으로 이루어지는 것처럼 소프트웨어도 마찬가지다.
프로그래밍 세계에선 토큰 → 식 → 문 → 함수 → 객체/모듈 → 시스템으로 이루어진다.
요소는 하위 요소를 포함하며 프로그래머들은 보통 컴포지트 패턴과 같은 동질적 계층 구조를 선호한다.
관계 맺기
한 함수가 다른 함수를 호출하며 ‘호출하고/호출받는’ 관계를 맺는다.
소프트웨어 설계에서의 관계는 다음의 것들이 있다.
호출
발행
대기
참조 (변수 값을 가져오기)
유익하게
하나의 설계 작업은 작은 하위 요소로 만든 거대한 요소를 만드는 일이다.
설계할 때 기계를 위한 명령어가 아닌 중간 요소를 만들면 서로에게 도움이 되기 시작한다.
함수 A는 함수 B가 복잡한 계산 부분을 덜어가면 더 간단해진다.
요소들을 유익하게 관계 맺는 일
소프트웨어 설계자는 다음의 일을 할 수 있다.
요소를 만들고 삭제한다.
관계를 만들고 삭제한다.
관계의 이점을 높인다.
아래는 한 객체가 하나의 함수에서 다른 객체를 두 번 호출하는 예시다.
fun
caller
()
{
return
box
.
width
()
*
box
.
height
()
}
box 객체의 두 함수로 만든 식을 box 객체 안으로 옮길 수 있다.
fun
caller
()
{
return
box
.
area
()
}
caller 함수가 단순하고 유익해진 대가로 Box가 하나의 더 커진 함수를 갖게 된다.
시스템 구조는 다음과 같다.
요소 계층 구조
요소 사이의 관계
이러한 관계가 만들어내는 이점