좀더 업그레이드되고 싶은데, 어떻게 발전해야 할지 모르겠네요.
안드로이드 공부를 한지 약 2,3달 사이 몇 개의 어플을 개발해 보았는데요. 한계가 느껴집니다.
좀더 큰 그림으로 보고 싶은데, 큰 그림을 못 보고겠어요.
원하는 기능을 완성하는데는 큰 어려움이 없지만 좀 더 체계적이고 큰 프로젝트를 계획하는 방법을 전혀 모르겠습니다.
그래서 설계 공부를 할 려고 혼자 디자인패턴을 공부하고 있습니다. 디자인 패턴이 어떻게 돌아가는지 어떻게 사용해야 하는지는 이해가 가는데, 도무지 각 패턴들이 왜 필요한지를 모르겠습니다.
책에서는 재활용 때문이다. 라고 설명을하는데, 직접 설계를 할 때는 과연 이렇게 상속(extends)을 복잡하게 하고 구현(implements)을 사용해야 하는지... 잘 모르겠고, 비효율적이라는 생각이 드네요.
물론... 제가 완벽한 이해가 안되었고, 경험이 부족해서 그렇지만요...
글 솜씨가 없으니 질문의 요점이 흐릿하네요.
정리하자면
프로그램을 체계적으로 짜고 싶습니다. 무엇을 어떻게 공부해야하는지 알고 계신분이나 혹은 그런 커리큘럼이 있는 학원 또는
대학원 과정에 대해서 알고 계신분이 있다면 조언 부탁드릴께요.
1. 님이 고민하시는 부분은 학원이나 대학원이 도움이 될 수 있을 지는 모르나,
필수적으로 경험이 필요한 부분입니다. 많은 프로그램을 개발을 해보고, 경험을 통해 그리고 연구(공부)를 통해
얻어지는 것이죠. 누군가 가르쳐 주는 것은 한계가 있습니다.
꼭 거쳐야 하는 과정이니 너무 고민하지 마시고, 디자인 패턴도 좋지만, 프로그래밍 기초 지식을 더욱 더
튼튼히 하는 쪽을 고려해보세요.
2. 디자인 패턴이 왜 필요한지 모르겠다는 건 디자인 패턴을 이해 못한 것입니다.
경험이 부족해서 그럴 확률이 큽니다. 직접 코드를 유지보수하다가 경험을 통해 패턴의 필요성을 절감하게 되는 경우도 있고,
다른 사람의 소스코드를 분석해 보면서 패턴의 쓰임과 효율을 이해할 수도 있습니다.
안드로이드 소스 코드를 몇개만 분석해 보세요. 디자인 패턴이 왜 필요한지 이해가 되실지도?
3. 큰 프로젝트도 작은 코드의 작성부터 시작되는 것입니다. 큰 프로젝트를 구상하고 체계적으로 구현할 수 있는
능력은 탄탄한 기초실력과 풍부한 경험이 있어야 합니다.
일단 저는 디자인패턴을 찬양하는 사람은 아닙니다.
하지만 디자인패턴에서 나오는 개념과 비슷한 구조와 개념으로 코딩을 합니다..
제가 코딩할때의 주요 포인트는, 유지보수에 있습니다. 객체지향적 코딩을 하라는 이유 자체가 코드의 지역화와 데이터와 구조의 완전한 분리를 지향하는 거라 생각하기 때문에, 그리하려고 노력을 많이 합니다.
하지만 전 객체지향을 아주 좋아하는편은 아니라서 중간중간 하드코딩이 많이 들어가는 편입니다.. 그러면서도 유지보수는 최대한 고려해서 추가삭제가 편리한 작업들을 많이합니다(이부분에서 객체지향의 패러다임과 디자인패턴을 많이 활용하죠..)..
많이들 설계가 중요하다 설계가 중요하다 하시는데, 이것은 스스로 느껴보기전엔 잘 모르는 법입니다. 많은 프로젝트를 접하면서 유지보수를 해보시면 자신의 코드가 유지보수하때 얼마나 편리한지 불편한지 판가름 할 수 있게 되고, 어떻게 하면 더 편하게 유지보수 하면서 시간도 아낄 수 있을지를 고민하게 되겠죠.. 이쯤되면 스스로 디자인 패턴과 비슷한 코드를 작성하게 됩니다.. 전 그래서 패턴공부를 딱히 한적이 여태 없었는데 최근에 와서 의사소통 문제때문에 보기 시작했네요..