소스을 정리할려면 어떻게 하면 좋습니까?
글쓴이: OpenSnake / 작성시간: 목, 2010/08/05 - 12:29오전
최초 프로젝트을 들어갈때에는 최대한 깔끔하게 구성을 합니다.
하지만 추후에 쏟아지는 요구사항이라던지... 수정사항같은것을 추가하다보면
분명 내가 만든거지만 나도 이해못하는 소스가 되어버리더군요.
될수있는한 주석을 달아서 이 함수가 어떤함수인지 설명문을 적어놓는데요.
도움이 되긴하지만 이렇게 해도 나중에 헷갈리기 마련이더군요.
저의 느낌은 딱이거입니다. "소스는 2D인데 프로그램은 3D 이다"
(3D을 2D로 적을라고 하니 헷갈리는 느낌?)
프로그램은 이곳저곳에서 이벤트 발생하면서 실행되는데
소스는 순차적으로 작성할수밖에 없는 A4용지일뿐이니..(객체던 뭐던간에 작성은 순차적일수밖에 없잖아요)
저의 느낌을 맞게 표현했나모르겠네요..
함수에서 또다시 함수로 물려가는 경우에 이걸 어떻게 나중에 이해하게 할지...;
다들 소스 어떻게 정리하십니까?
Forums:
따로 graph를 그리고 UML 같은 것을 도입해서 시각화할 수 밖에 없는 듯...
Call graph를 그려주는 몇가지 tool이 있지만 동적분석이 필요한 부분에서는 한계가 있을 수 밖에 없습니다. 결국 설계라는 것이 자주 변하는 곳을 잘 변하지 않는 부분으로 둘러싸는(없으면 만들어서라도) 것인데 그런 설계가 동적분석을 요구하게 만들기도 하지요.
저는 늘 source가 제대로 2D로 배치할 수만 있어도 좋겠다는 생각을 합니다. 사실 compiler든 interpreter든 1차원 text를 받아들여서 해석을 해나가죠. 물론 생성되는 말씀하셨듯이 중간 code는 2차원 이상이지만요.
제가 아직 UML을 시도해본적은 없지만..
어떻게든 소스로 해결해보고 싶거든요.
그래프을 따로 작성은 해봤지만 소스작성했다가 그래프작성했다가 왔다갔다하기에는 너무 무리가 있어보이더라구요.
"저는 늘 source가 제대로 2D로 배치할 수만 있어도 좋겠다는 생각을 합니다."
맞아요.. 소스을 그래프처럼 볼수있다면 좋을거같은데요.....
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
몇가지 시도는 있긴 합니다.
교육용 언어들이 그렇죠.
저는 source는 그냥 두고 meta file 형태가 좋을 것 같다고 봐요.
HTML과 CSS 관계처럼 말이죠.
다만 이 meta file을 자동생성하는게 좋은지 사람이 작업하는게 좋은지가 고민거리죠.
그런 언어가
그런 언어가 있습니다. 랩뷰LabView라고...
디버깅하려고 하면 골때립니다...-_-;
랩뷰의 경우에는 2D뷰어와 소스코드 뷰어를 둘 다 지원하면 어떨까 싶을 정도입니다.
--------------------------
피할 수 있을때 즐겨라!
http://snowall.tistory.com
피할 수 있을때 즐겨라! http://melotopia.net/b
> 하지만 추후에
> 하지만 추후에 쏟아지는 요구사항이라던지... 수정사항같은것을 추가하다보면
> 분명 내가 만든거지만 나도 이해못하는 소스가 되어버리더군요.
소프트웨어공학 일반론이긴 합니다만...
과도한 수정사항이 발생하는 것은 애초부터 요구사항 분석에 결함이 있었던 것이 아닐까라는 생각이 듭니다.
어디까지나 일반론이기 때문에 실제 진행중이신 프로젝트에 대해서 전반적으로 점검해보는 것도 좋을 듯 싶습니다.
> 될수있는한 주석을 달아서 이 함수가 어떤함수인지 설명문을 적어놓는데요.
> 도움이 되긴하지만 이렇게 해도 나중에 헷갈리기 마련이더군요.
또 일반론입니다. 소스에 주석을 달았다고 해서 반드시 그 주석을 봐야할 필요는 없습니다.
함수를 설계하기 전에 pseudocode를 쓴다거나 또는 그 함수의 사용법에 대한 예제 코드를 작성해서 메모해두는 것도 꽤 도움이 됩니다.
이게 코드 분석보다 더 효율적이고 빠를 때가 있습니다.
소스만으로 승부를 보겠다는 것은 어떻게 보면 가장 원초적이고 올바른 대응을 할 수 있다는 것으로도 생각되지만, 어떻게 보면 쓸데없이 시간을 낭비할 수 있는 양날의 칼이 아닐까 싶네요.
위의 분이 말씀하신 UML이나 Graph를 도입하는 것도 짧은 시간에 프로젝트의 변동이나 수정사항을 파악할 수 있는 중요한 자료를 확보한다는 의미에서 추천드리고 싶네요.
--
I think to myself...what a emerging world.
--
I think to myself...what a emerging world.
backus씨가 이야기했었던가?
programming (coding)은 기본적으로 time 영역을 space 영역으로 변환하는 작업이다.
저도 제가만든 소스
저도 제가만든 소스 나중에 보면 이게 대체 뭔지... 그래요
저같은경우는 소스파일 최대한 분할하고 main.h 에 포함시킬 헤더들
포함함수랑 역활 다 주석으로 써놉니다
댓글 달기