오늘 저녁 먹고 회사에서 안드로이드 MVP 라이브러리 mosby, mortar, necleus GitHub를 기웃거리다가 mosby 개발자가 mosby를 어떻게 사용하는지 설명해 놓은 글을 보았습니다. 글을 보고 감탄사 캬! 한번 속으로 읊었습니다. 사람들이 해당글 하단에 궁금한 점을 물어보면 개발자가 답변을 해주더군요. 쭉 읽어보다 이 개발자가 소프트웨어 설계에 대한 풍부한 지식이 있다는 것을 직감했습니다.
이런 MVP 라이브러리를 개발하려면 어떤 백그라운드가 필요할지 그 개발자가 쓴 글을 천천히 읽어보니 separation of concern이란 용어를 사용하면서 설명하는데 정작 제가 해당 용어를 잘 몰라 wikipedia에서 찾아보았습니다. SoC(separation of concern)로부터 시작해서 계속 wikipedia 링크를 타면서 글을 읽은 후 내린 결론은 제가 software design principle 에 약점이 있다는 것을 찾았습니다. 예전에 software design pattern, software architecture design pattern 을 책으로 스터디를 했지만 정작 좀더 본질적인 software design principle에 대해선 상당히 몰랐단 느낌적인 느낌이듭니다.
성능 튜닝 때문에 MIT introduction to algorithms이란 책도 봐야하는데 여기에 추가로 software design principle에 대한 책도 봐야하네요;;
우선 아래 사이트에서 principle에 대해 설명이 좀 있습니다. 좀 저명한 책을 찾아야 되는데 아직 못찾았습니다.
http://www.cs.cmu.edu/~aldrich/214/slides/design-grasp.pdf
RxJava JAVADOC을 좀더 보고 마무리 한후 이번 주말은 이 부분을 집중 공략하여야 겠습니다. 어쩐지 앱 개발할 때 특정 상황에 맞는 디자인 패턴을 쓰더라도 뭔가 백그라운드가 약하다는 느낌을 받았는데 요걸 파면 부족한 부분이 채워질 것 같다는 지감이 팍듭니다.
그럼 모두들 알찬 주말 보내시길...