2019-05-05 Daily Post


1. 계약에 의한 설계(Design by Contract)

얼마전 스프링캠프에서 계약에 의한 설계(Design by Contract)라는 말을 들었다. 처음 듣는 용어라서(지금 생각해보면 들었을것 같은데 기억나지 않으니 처음듣는 것이다) 조금 찾아봤는데, 선행조건과 후행조건, 그리고 불변식이 핵심적인 내용이다. 간단하게 요약하자면 어떤 메소드 M에 a라는 값이 입력값으로 들어갔을 때 이 메소드는 항상 b라는 값을 반환한다는 것을 보장한다는 것이다. 선행조건과 후행조건으로는 a의 값과 b의 값에 대한 조건이 될 수 있다.(예를 들면 null이 아니다 라던지..)

이 용어와 설계기법은 모르고 있었지만 설계를할 때 가능한 지키려하는 방법 중 하나라서 친숙한 설계방법이었다. 개인적인 생각으로 저런 방법으로 설계를 함으로써 메소드의 역할과 책임이 분명해진다고 생각한다. 역할과 책임이 분명해짐으로 디버깅이 편하고, 무엇보다 입력값에 대한 반환값이 보장되어 TC작성에 유리한 설계방법이다. 특정 기능에 대해 입력값과 반환값이 보장되므로 보장되는 값으로 메소드를 실행해서 반환값을 확인하면 되기 때문이다. 또한, 기능간의 호출관계를 정리하기 좋은 설계방법이라고 생각한다.

함수형 프로그래밍에서 함수가 되기 위한 조건 중 하나(맞나…​?)에도 이와 같은 조건이 필요했던 것으로 기억하여 무슨차이가 있나 생각해봤다. 고민하다 지인에게 질문을 했는데 지인피셜로 함수형 프로그래밍에서 이 개념을 포함하는 것이라 한다. 좀 더 자세한 내용은 독립 포스트로 작성해봐야겠다.

2. Google Analytics

Google Analytics는 페이지 로딩 시 ga('send', 'pageview')로 페이지 조회 정보를 전송한다. 지금까지 페이지 조회에 대한 정보만 수집해서 분석하는 기능만 있는 줄 알았는데 생각보다 할 수 있는 기능이 많은 것 같다. 페이지 조회 외에도 이벤트 발생 시에도 ga 함수를 호출해서 이벤트 전환 정보를 기록할 수도 있다. 또한, GA에서 제공하는 Dimension 값을 지정하거나 Custom Dimension 값을 지정해서 특정 사용자의 정보를 지정해서 특정 사용자의 행동 패턴도 파악할 수 있다. 아직 알아볼 기능이 많지만 이것도 공부를 좀 더 한 후 독립 포스트로 작성해야겠다.

3. 블로그 카테고리 정리

블로그 카테고리가 많아서 정리를 했다. 일단 이대로 글을 계속 써보다가 개편해야될거같으면 다시 해야겠다.

4. 디자인패턴

디자인패턴을 자주 검색해서 찾아본다. 검색하는 횟수가 좀 많아졌는데 그냥 블로그에 정리해놔야겠다.

5. DDD

최범균님이 쓴 DDD START! 를 읽기 시작했다. 내용이 생각보다 심오한거같다. 앞부분만 조금 읽고 전반적으로 어떤내용을 다루는지 한 번 훑어본 다음에 책을 덮었다. 오늘은 정신이 좀 산만해서 집중이 잘 될때 제대로 읽어야겠다.

6. 잡담

블로그에 정리한다고 한 내용은 언제 정리를 할지 모르겠다. 매번 한다하고 안한다.

날이 엄청 풀리다 못해 더워졌다. 어린이날이다. 일요일이지만 대체휴일로 내일도 쉰다. 쉬면뭐하나 공부하고 운동해서 살이나 빼야지 ㅠㅠ

이전회사에서 퇴사한지 1년 조금 넘게 지났다. 아직도 이전회사에서 사용하는 특정 모듈의 에이전트정보가 나한테 문자로 온다. 처음에는 웃겼는데 이거 정보 빼달라고 연락해야되나..