PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2012/03/31 00:40:42
Name 곰비
Subject 자바 소스코드 분석에 관해...
안녕하세요.

이제 막 2년차 접어드는 개발자 입니다.

안드로이드 개발을 하고 있는데요, 보통 일을 하다보면 처음부터 짜는 경우보다는 남의 소스를 분석해서 사용하는 경우가

더 많은데, 어떤 방식으로 분석하시는지요...

오랜만에 소스코드를 봤는데.... (제가 잠깐 쉬었습니다-_-;; 2~3달 정도...)

코드를 쫓아가기만 하다보니 멍때리는 것 같고 졸음이 쏟아지더라구요-_-;;

다른 분들은 어떤 방법으로 분석을 하시는지 궁금하네요..!


통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
타츠야
12/03/31 00:50
수정 아이콘
1. 저같은 경우엔 라이브러리나 어플리케이션을 분석하는 문서를 함께 작성합니다.
나한테도 도움이 되지만 다른 사람에게 설명하는 용도(향후 인수 인계를 하거나 프리젠테이션을 하거나)로도 쓸 수 있고 좋습니다.

2. 더 좋은 알고리즘이 생각나면 다시 짜보는 것도 도움이 됩니다.

3. 없는 기능을 추가하거나 버그 수정, UI 변경 등을 해보는 것도 좋습니다.
neogeese
12/03/31 01:01
수정 아이콘
상황에 따라 좀 다른데 저 같은 경우를 말씀 드리면
인수인계를 받아서 완성을 시켜야 할 정도의 일이 아니라면 전체적으로 분석 하는 경우는 없습니다.

요구 사항에 맞쳐서 딱 필요한 기능 정도만 찾아서 이해 하고 수정 합니다. 좀 경험이 많아 지다 보면 같은 종류의 소스들을 보는 거다 보니 큰틀은 대부분의 개발자들이 거의 비슷한 형태를 취하다 보니 수정 사항이 있거나 개선 해야 되는 부분이 생겼다 싶으면 에뮬레이터 이용 하셔서 브레이크 포인트 적절히 사용 하시면 해당 부분이 구현된 소스를 찾으실수 있고 수정 하면서 다른데 어떤 영향 안 끼치는지 적당히 탐색 하는 식입니다. 다른 사람 소스를 수정 해야 할때는 가급적 시간 낭비를 안할려는 편입니다.

뭔가 요구 사항 없이 나중에 뭐 할지 모르니깐 일단 소스 파악 해 두라고 하면 전 그냥 다른거 합니다. 글쓴님 처럼 졸려서 참을 수가 없어요. 가끔씩 잠을 깨우게 하는 코드들이 있기는 합니다만 그런 경우 빼고는 최대한 간단하게 실용적으로 접근 하는 편입니다.

그런데 개발 중간에 인수 인계 받아서 개발 해야 되는 거라면 좀 달라지기는 하는데 그래봤자 구현 할려는 기능 하나를 찾아서 기존에 어떤 식으로 작성 했는지 찾고 몇가지 수정 해봐서 사용법 익힌 다음 시작 합니다. 구현 할려는 기능을 정하시고 해당 부분부터 찾아서 실제로 직접 구현을 해보다 보면 자연스럽게 소스 파악이 됩니다. 저같은 경우엔 그러네요.

기존 개발자가 얼마나 표준을 지켜 주는지 변수명 짓는 거에 규칙성을 가지고 있는지 상속 등의 기능들을 쓸데 없이 남발 하지 않는지 등등에 따라 난이도가 달라지는 부분이긴 합니다. 기존 개발자가 문서 정리 잘하는 개발자면 정말 고맙습니다.
JavaBean
12/03/31 01:56
수정 아이콘
저도 작년에 취직해서 올해로 2년차에 접어드는 안드로이드 개발자입니다.

저같은 경우, 유지보수 해야 하는 에서는 시퀀스 다이어그램을 그냥 노트에 그려봅니다.
그러면 핵심 뼈대 로직들이 파악이 되고, 그 지식을 기반으로 업무를 해 나갑니다.

저같은경우, 학부생 시절에 패턴 공부를 해뒀던 것이 소스코드를 익힐 때 도움이 좀 되었습니다.

클래스 일부분만 봐도 대충 어떤 코드겠거니, 머릿속에 그리고 분석을 시작합니다.
때로는 클래스 이름만 보고도 짐작이 가능할 때도 있죵..
12/03/31 02:42
수정 아이콘
저도 전체적인 것을 먼저 보지는 않고 부분부분 필요한 부분부터 찾아나가면서 전체를 조금씩 이해해나가는 방식으로 해요.
이건 Bottom-up 접근방식이라고 봐야겠네요. 문서화가 되어있지 않으면 한번에 이해하는게 어려우니까 그렇게 하는거고,
문서화가 잘되어있다면 탑다운으로도 접근 가능하지만 무언가 일처리하는 프로세스를 내기엔 이게 시간이 더 오래 걸리죠.
남이 짜놓은 소스 분석할때 그래도 안드로이드의 경우는 MVC가 명확하게 나눠져 있기 때문에 (그렇게 안짜는 사람들도 많이 있지만 그래도 어느정도 그렇게 짤수 밖에 없으니까..) 분석하는게 그렇게 어렵지는 않은거 같아요.
그리고 원래는 주석을 잘다는 개발자가 많이 고마웠는데, 이제는 주석없이도 소스를 읽을 수 있는 개발자가 고맙게 느껴지더라고요. 주석도 너무 많으면 소스 읽는데 방해되서 간결하고 핵심적인 부분만 있는걸 좋아하게 되었어요.
제가 그렇게 선호하다보니 점점 변수명, 함수명, 클래스명의 기능을 다 설명할 수 있는 긴~ 이름을 선호하게 되고, 루프도 i, j는 안쓰게 되더라고요. 그래서 이제는 이클립스 등 자동완성 해주는 IDE가 없으면 죽을맛입니다 흐흐
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
130830 [LOL] 초보가 진짜 답답해서 하는 단서없는 질문. [14] 삭제됨2219 12/03/31 2219
130829 [lol]트위치에게 티아멧효율이 좋나요? [2] 삼엽초2938 12/03/31 2938
130828 [lol] 시즌 리셋이 있다고 하던데 언제쯤일까요? [6] 돈성빠돌V52596 12/03/31 2596
130827 축구화 사려고 합니다. [9] 싸구려신사2272 12/03/31 2272
130826 [스2]테란으로 플토 전략적인 플레이 막기 [2] 요우1810 12/03/31 1810
130825 월급질문입니다. [2] 개떵이다2619 12/03/31 2619
130824 토익 스피킹 본적 있는분들 질문입니다. [2] Right2629 12/03/31 2629
130823 사람에게 있어서 어떤 부분들이 가장 중요할까요? [9] 더이상은무리2135 12/03/31 2135
130822 담은 어떻게 치료하는건가요? [3] 카네다 갱신했다2733 12/03/31 2733
130821 갑갑한 상황입니다.. 도와주세요 ㅠ_ㅠ [2] 이강호2309 12/03/31 2309
130820 통영, 진해쪽 먹거리 질문입니다 [5] 완료2063 12/03/31 2063
130819 랭겜 600점 인데요.. [9] 6767563080 12/03/31 3080
130816 고백해도 될까요? [11] #173579 12/03/31 3579
130815 혹시 컨버스 신발 싸게 사실분 안계신가요? [4] 꿀사탕2173 12/03/31 2173
130814 [lol] 포지션별로 강한 캐릭터 추천부탁드립니다. [9] Thiago Silva2338 12/03/31 2338
130813 에그 질문입니다. [1] 착한밥팅z3031 12/03/31 3031
130812 lol 탑 챔프 추천 질문입니다. [13] 찬양자2629 12/03/31 2629
130811 자바 소스코드 분석에 관해... [4] 곰비4516 12/03/31 4516
130810 혹시... 성격이나 습관같은걸 성공적으로 고치신분 계신가요? 조언 부탁드립니다. [5] Go윤하2286 12/03/31 2286
130809 대학생활 즐겁게 하는법? [24] 슈듸2524 12/03/31 2524
130808 페이스북 질문입니다.. 쿠루3261 12/03/31 3261
130807 마이스터고 이름 질문합니다. [5] hyde2262147 12/03/31 2147
130806 괜찮은 이성이 생겼습니다. [5] 마에2678 12/03/30 2678
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로