티스토리 뷰
처음보는 프로젝트의 소스 코드 해독을 위한 팁
모든 이에게 적용된다고 보긴 힘들다. 누구는 탑다운이 편하고 누구는 바텀업이 편하기 때문이다.
- Unit Test가 있다면 핵심 기능을 하는 TC를 따라가면 해독이 매우 용이하다.
- 핵심 클래스의 생성자가 어느 클래스로부터 생성되는지 찾는다. A와 B 클래스가 핵심 클래스라고 한다면, 이 클래스의 생성이 어디서 이루어지는지 (new A, new B 로 검색) 확인하면 객체간의 Dependency 관계가 어느정도 눈에 파악된다. 팁으로, 탑다운이 아닌 바텀업으로 소스를 보고자 할때 가장 유용한 기능은 Find Usage 기능이다.
- 행위의 Trigger가 되는 Method를 찾는다. Command패턴의 경우 Execute를 Override한 메소드를 살펴보면 되고, 그 외에는 실제로 핵심 Task를 수행하는 메소드가 실행되는 위치를 찾는다.
- Prepare 및 Initialize Sequence를 살펴보면 필요한 객체가 무엇인지 파악하기 쉽다. 하지만 웬만한 경우 Init Sequence를 가독하는데 엄청난 시간이 필요하다.
- 당연한 얘기지만 디버깅이 가능한 환경이라면, 적재 적소에 BreakPoint 걸고 Debug 모드로 디버깅하면서 콜스택을 확인하면 매우 좋다.
- Handler 등을 통해 쓰레드를 벗어나는 코드의 경우 메세지를 보내는 쪽과 받는쪽 메소드가 무엇인지 안 후 (프레임워크 별로 다 다르다) 해당 코드에 브레이크포인트 걸고 보는게 좋다.
- PlugIn 을 적극 활용하자. UML을 그려주는 플러그인이 있으면 적극적으로 쓰자. (각 언어별로 제대로 되는 녀석을 찾기가 힘들긴 하다ㅜ) Android Studio(IntelliJ)의 경우 Sequence Diagram을 그려주는 Sequence Diagram Plugin을 설치하여 depth를 1로 하여, create 되는 객체를 조사하는 것 만으로도 아주 훌륭하다.
'JHB > 잡다한 이야기' 카테고리의 다른 글
좋은 글귀 (0) | 2021.04.14 |
---|---|
카테고리 정하기가 어렵다 (0) | 2019.12.15 |
로직부분 짜기. 적절한 함수의 최소 단위는..? (0) | 2018.06.25 |
host - client 시스템 설계시 행한 오늘의 삽질 (0) | 2018.05.10 |
이번 프로젝트 하면서 겪은 설계 실수 몇가지 (1) | 2016.03.05 |
[세미나] 유니코드의 다양한 이해 (0) | 2014.09.07 |
대학을 졸업한 소프트웨어 개발자에게 중요한 능력 (0) | 2013.04.26 |
[잡설] ResourcePool을 사용하자.. (0) | 2012.07.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- NDK
- db
- C
- AWS
- driver
- 음악
- linux
- jni강좌
- source
- gcc
- 리눅스
- java
- API
- jni
- Visual C++
- kering
- algorithm
- 안드로이드
- Troubleshooting
- 드라이버
- android
- Cloud
- Python
- 프로그래밍
- C++
- Quiz
- it
- MFC
- winapi
- database
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함