본문 바로가기

Track of Edu

패.활.리. 4탄

7장 단순화.

 

가볍게 전체를 훑어본 후, 반 쯤 다시와서야 이런 생각이 듭니다.

1 이 책은 뭔가 번역이… 너무 방어적이다

2 이 책은 친절함이 적다..

3 이 책은 1, 2를 모두 포함하고 있다

4 그보다 앞서 나는 이 책을 읽을 준비가 되어있지 않다.

여기서 말하는 패턴, 즉 디자인 패턴 관련해서 ‘적당한’ 학습이 되어있지 않다.

 

1에 잡설을 붙이자면, 제가 좋아하는 시리즈 중에 올재클래식스가 있습니다.

고전을, 합리적인 - 요즘에 비교하면 진짜 저렴한 가격에 보급해보자는 프로젝트로

대기업의 후원과 번역에 대한 저작권비 및 검수비, 그리고 타협점을 이루는 발행부수가 주된 것이죠. 대기업 후원이 얼마인지 몰라서 함부로 확신할 수는 없지만, 제가 생각하는 이 프로젝트의 핵심은 바로 번역에 대한 퀄리티입니다. 번역만 좋으면, 절판된 책이라도 사람들이 찾아서 옮긴다든지, 돈을 모아서 살린다든지 하거든요.

 

개발서적이라는 특성상, 이런 것까지는 바랄 수 없더라도 너무 배려심이 없는 서적이랄까요. 짜라투스트라는 이렇게 말했다 라는 책을 봐도 이렇게 답답하진 않았습니다.

 

간단하게 예를 들어볼까요?

7징 단순화의 첫 소제목은 Composing Method입니다. 여기서 메서드까지 우리나라 언어로 하라는 것이 아니라, 메서드를 구성하라 혹은 (동일 레벨로, 동일 수준으로) 등으로 달아놨더라면, 최소한 학습 목표를 상기하는 결과는 가져올 수 있지 않았을까, 하는 아쉬움입니다.

하나더, 다음 소제목인 Embellishment와 같은 어휘입니다. 전체 소제목은 Move Embellishment to Decorator로서, 상경계열 전공자로서(!) 토익은 물론 토스나 오픽에서 나름 마이너스는 당하지 않은 사람 입장에서도 뉘앙스를 이해하기 힘들었습니다. 사전을 꺼내들었고 (사실 네/카의 사전을 켰다가, 역시나 이해가 가지 않아서 워드레퍼런스를 향했습니다) 영영사전 그리고 예문을 보고서야 느낌이 왔습니다.

 

갑자기 영어단어 풀이가 되어서 스스로도 좀 당황스러운데요, 그래도 마무리를 하자면

꾸미다 라는 단순 영한사전 의미를 다시 영한으로 돌려보면 adore, embellish 그리고 decorate가 있습니다. adore은 기리기 위해서 단장하는 것을, embellish은 기존에 있던 것에 뭔가를 더 추가해서 꾸민다는 의미가, 마지막으로 decorate는 일반적인/ 그러나 물질적인 꾸밈을 뜻한다고 합니다.

 

그렇다면 이번 소제목은 추측컨대 데코레이터라는 디자인 패턴을 사용하는데 있어서, 여기서 표현하는 말로는 ‘투명한 외투’처럼 서브클래스로 감싸서 표현하는 것을 뜻합니다. 만약 단어의 미묘한 뜻을 소제목에 풀어냈더라면 데코레이터가 어떤식으로 활용되는지 더 쉽게 이해할 수 있었을 겁니다.

 

...

 

다시 본론으로 돌아가서..

다음으로는 데코레이터와 대비되는 방식으로 스트레티지 패턴을 설명하고 있습니다. 두 디자인 패턴 모두 상속으로 인한 부정을 피하는 것으로 봤습니다. 데코레이터는 상속으로서 추후에 복잡다단해지는 기능을 감당할 수 없기에, 스트레티지는 상속에서 비롯되는 부작용 때문에 인터페이스를 적극 사용하고 있습니다.

 

스테이트 패턴은 스테이트, 즉 상태의 전이를 표현하는 로직을 간단, 명료하기 위해서 이루어집니다. 예제로서는 변수에 대입만 하는 상태에서, 별개 클래스를 통한 명시적 구분으로 상태의 전이를 표현하는 방식을 보여줍니다.

 

컴포짓은 포함하고 있는 데이터 사이에 관계가 있다면, 이를 나열하는 것이 아니라 구조를 갖춰서 표현하는 디자인 패턴입니다. 구조체와 링크드리스트를 떠올리면 적절한 반응이라고 봤습니다.

 

...

 

그런데 이 쯤에서, 이런 식으로 정리하다보니 파생이 잘 되지 않는다는 느낌을 받았습니다. 다수의 코드를 직접 run해본 사람은 이게 그렇구나 하겠지만, 이 글을 우연히 혹은 단순 검색으로 보는 분들은 이게 맞는 내용인지, 적확한 내용인지 바로 판단하실 수 있는지, 이런 패턴이 본인과 무슨 상관인지...

 

그러다가 발견한 것이 커맨드 패턴을 인공지능비서에 빗댄 곳입니다. 너무 많은 블로그를 참조하다보니 원문을 밝히지 못한 점 양해부탁드리며 ㅠㅠ... 마치 시리나 빅스비처럼, 혹은 알렉사를 통해서 IoT제품을 다루듯이 행동을 클래스로 감싸서 독립시켜 구현한 것을 말합니다. 보통 주체라고 할 수 있는 사람이 센서도 켜고, 티비도 켜고, 냉난방기를 각자 켜는 것이 아니라 인공지능비서를 통해서 call을 하고, 이것이 미리 연결되어 구현, 나아가 실현되는 것이 커맨드 패턴이라고 이해하였습니다.

'Track of Edu' 카테고리의 다른 글

패.활.리. 정리  (0) 2022.02.13
패.활.리. 5탄  (1) 2022.01.20
패.활.리. 3탄 생성  (0) 2021.12.30
패.활.리. 책리뷰 2부  (0) 2021.12.16
리드잇진 ReadIt Zine, #2  (0) 2021.12.15