2009-10-22 4 views
5

나는 누군가 elses 코드를 인계받습니다. 프로그래머가 가능한 한 빨리 무엇을했는지 알 수있는 좋은 방법은 무엇입니까? 나는 그것을 달리고 그것을 밟아서 콜 스택을 보았다. 그 밖의 무엇을 할 수 있습니까?누군가 다른 사람의 코드를 넘겨 받기

미안 내가 언급하는 것을 잊어 버렸지 만 문서가 거의 없으며 간단한 문제를 해결하려고 노력하고 있습니다. 감사!

+0

커뮤니티 위키 여야합니다. 이것은 주관적인 질문입니다. – Joren

+0

나는이 모든 것을해야만한다면 그렇게 말할 것이다. 문제는 그렇게 간단하지 않습니다. 행운을 빕니다. –

+0

이것은 내가 현재 일하는 곳의 표준 인 것 같습니다. 당신은 올바른 길을 가고 있습니다. 이러한 시대에 나는 결코 선행에 대해 * 예 *라고 말하지 않습니다. 나는 보통 내가 시도 할 것이라고 말합니다. –

답변

5

일반적으로 가장 좋은 방법은 작은 버그를 수정하는 코드 작업을 시작하는 것입니다. 코드베이스를 익히는 유일한 방법은 더 많은 시간을 소비하는 것입니다. 코드 기반을 배우는 마법 같은 방법은 없습니다. 복잡성에 따라 수주, 수개월 또는 수 년이 소요될 것입니다. 그러나 가장 일반적인 비즈니스 시스템의 경우, 약 6 개월의 코드 지식과 6 개월의 산업 지식이 진정으로 모든 것을 이해하는 데 걸리는 시간이 길어집니다.

5

그것에 간단한 문제를 해결합니다.

편집 : 큰 문제를 해결하고 이해할 수있는 부분에 대한 문서 및 단원 테스트를 작성하십시오. 그 지역을 기반으로, 어느 날 당신은 전체 시스템을 이해할 수 있습니다.

+0

나는 이것이 해결책으로 작용할 수 있다는 것에 동의하는 동안 ... 나는 bandaiding bandaids가 싫다. –

4

설명서? 디버거에서 실행하지 않고 코드 자체를 읽는 중입니까?

그 외에도 내가하는 일을하고있는 것입니다.

+0

나는 일반적으로 코드가 문서가 아니라면 문서가 잘못되었을 가능성이 있다는 것을 알게된다. 그러나 코드가 "해야 할 것"으로 돌아갈 수도있다. –

+1

사실이지만, 문서가 코드보다 높은 레벨 일 수 있습니다. 그러면 클래스 X가 어떻게 큰 그림에 적합한지를 이해하는 것이 더 쉬울 것입니다. – jprete

0

내가 버그를 수정하기 시작할 때까지는 코드를 완전히 배우지 않을 것입니다. 원래 프로그래머가 아직 있다면, 구현하기 전에 변경 사항을 논의하면 도움이 될 것입니다.

1

코드가하는 일을 로깅하는 것이 좋습니다.

버전 관리 시스템을 사용하는 경우 프로그래머가 어떤 코드를 변경했는지 확인하고 일부 기록을 탐색 할 수 있습니다.

가끔 프로그래머 코드 스타일을 이해하려고 시도하는 것이 유용하다는 것을 알았습니다. 이것이 어떻게하면 문제에 대해 생각하고 해결할 수 있는지 이해하는 데 도움이됩니다.

6

자신의 클래스/메소드를 사용할 수있는 단위 테스트를 시작하면, 두 가지 일을 배우고 버그를 발견하거나 버그가 나타나면 버그를 발견하거나 도구를 준비합니다.

+0

이 접근 방식의 문제점은 먼저 (1) 작동 방식, (2) 작동 방식, (3) 진입 점이 무엇인지를 알아야한다는 것입니다. 그는 아직 효과적인 단위 테스트를 작성하는 데 충분하지 않다. : -/ –

+3

단위 테스트를 작성하면서 그는 배울 것입니다. 그는 코드를 살펴보고 수업이 어떻게 디자인되는지 생각해야 할 것입니다. 문서가없고 그것을 알아 내야 만한다면 단위 테스트를 작성하고 학습하면서 생산성을 높이고 프로세스의 버그를 고칠 수도 있습니다. –

+2

테스트하도록 설계되지 않은 코드베이스에 대한 단위 테스트를 작성하는 것은 어려울 것입니다. 그 문제에 대한 통합 테스트를 작성하는 것을 고려하십시오. –

1

가장 먼저 할 일은 가장 간단한 대화 상자와 코드를 살펴보고 대부분 코딩 스타일을 분석하고 개발자가 코드를 정렬하는 방법을 살펴 보는 것입니다.

코딩 스타일을 알고 파일에 모든 것이 존재하는 곳 (또는 무언가가 무작위로 배치되는 경우 - 알고있는 경우조차도)은 다른 모든 것을 쉽게 통과 할 수 있습니다.

2

다른 사람의 코드를 어떻게 빨리 이해할 수 있는지에 대한 설명은 없습니다. 특히 해킹으로 가득차 있고 문서화가 불가능한 경우.

클래스 구조를 이해하고 디버거 도움말을 사용하여 소프트웨어의 일반적인 흐름을 실행해야합니다.

너무 많은 코드 섹션을 건너 뛰지 마십시오. "오,이 섹션의 기능을 알고 있습니다." 아니, 그렇지 않아.우리가 코드에서 발견 할 수있는 "혁신"에 놀랄 것입니다.

1

가능한 경우 다른 사용자의 코드에 대해 이야기하십시오 (최종 사용자 또는 코드를 사용하여 작업해야하는 다른 개발자). 그러면 다른 사람 코드의 품질에 대한 느낌을 갖게 될 것입니다. 단지 몇 가지 버그만으로 출시 되었습니까? 아니면 6 개월의 수정이 필요 했습니까? 개발자는 멋지게 세련된 응용 프로그램을 만들 때주의를 기울였습니까? 아니면 엉망 이었습니까? 그렇게하면 코드를 조금만 조정하거나 큰 코드 조각을 교체해야하는지 여부를 알 수 있습니다.

+0

사용자 인터페이스와 그 뒤에있는 코드의 품질에는 약간의 차이가 있습니다. 비닐 사이딩과 아주 흡사합니다. 그 집은 그 아름다운 하얀 판자 밑에서 절대 난파일지도 모르지만 배선이 엉망이고 틀이 썩어서 파이프가 새고있다. 하지만, 거리에서 아름답습니다. –

+0

확실히 가능합니다. 그러나 일반적으로 외관이 좋게 보이고 세부 사항에주의와주의를 기울여 제작 된 것이라면 동일한 프레임 워크가 같은 방법으로 제작 된 것으로 가정합니다. 물론, 당신은 누구에게 책임이 있는지 알아야합니다. 나쁜 배선을 위해 사이딩을 입은 사람들을 잘못 할 수는 없습니다. – TLiebe

1

코드의 메서드에 테스트가 추가되지 않았 으면 좋겠다. 코드 커버 방법을 알아 내면 코드 경로에 대한 많은 통찰력, 기대되는 출력 결과 등을 얻을 수 있습니다.

1

다른 모든 사람들은 코더가 무엇을했는지를 정확히 알고 있습니다.

다른 방법은 프로그램 자체를 배우는 것입니다. 사용자와 같이 깊이있는 응용 프로그램으로 재생하고 프로그램 자체가하는 것을 이해하십시오. 최종 시스템을 철저히 이해하면 어떻게 작성되었는지, 왜 작성되었는지 훨씬 쉽게 이해할 수 있습니다.

0

클래스, 함수 등등에 대해 배운 내용을 문서화하는 것은 큰 어려움이 없을 것입니다. 다음 사람 (또는 동일한 물건을 사용하기 위해 고용 된 다른 사람)도 마찬가지입니다.

또한 전에이 작업을 수행했을 때 코드를 이해하기 전에 프로그램을 사용하는 것이 가장 좋습니다. 분명한 것처럼 들리 겠지만, 당신이 보는 것 중 더 많은 것이 그 후에 의미가있을 것입니다. 단위 테스트는 다른 사람들이 제안한 것처럼 같은 방식으로도 도움이 될 수 있습니다. (리팩터링 할 때 자신감이있을 때 유용합니다.)

0

시스템을 더 빨리 익히는 데 도움이되는 한 가지 방법은 직접 문서를 작성하는 것입니다.

  • 은 내가 많은 버그/나쁜 디자인 결정을 볼 수
  • 개요를 얻을. 그래서 주문하고 경품을 내기가 더 쉽습니다. (관련이없는 버그를 고르지 않고 해결하는 대신, 나는 정말로 중요한 것들을 고칠 것이다.)
  • 나중에 나는 문서를 가지고있다.
  • 문서는 쉽게/리팩토링을 정당화 소송의 I 코드가 무엇을 알고 생각
0

, 그것을가 높은 수준에서 해결하기 위해 작성되었습니다 문제는 좋은 시작을 다시 작성하게됩니다. 그런 다음 정신적으로도 높은 수준에서 사용 된 유형 도구를 사용하여 그러한 문제를 해결할 수있는 방법을 구상하려고합니다.

코드를 살펴보면 몇 가지 의미가 있으며 원래 개발자의 생각을 따르는 데 도움이 될 것입니다. 또한, 길을 잃을 때 신속하게 발견 할 수 있습니다.

나는 코드가 내 경험으로 대부분의 시간이 코드 외부의 문서이므로 대부분의 시간이 코드와 동기화되지 않고 오도 할 수 있다고 생각합니다. 그래서 여기 저기에 몇 가지 의견, 클래스 헤더, 메소드 주석이 도움이 될 것입니다.

처음으로 다른 사람의 코드를 상속 받으면서 이틀 후에 편두통을 앓 았습니다. 악몽이었습니다.

재미 있습니다.

1

내가 처음 시작하는 곳은 데이터베이스입니다.

내 경험에 비추어 볼 때 데이터 모델을 이해하면 코드를 실행할 때 상황을 파악하는 것이 중요합니다. (이것은 데이터 모델이 일반적인 키 - 값 generic 엔티티 테이블이 아니라고 가정합니다.)

+0

데이터 모델이 일반적인 키 - 값 테이블 인 경우 바로 거기에 문제가 있다는 것을 알고 있습니다! – HLGEM

0

작년 대부분을 다른 사람으로부터 상속받은 코드 작업에 보냈습니다. 아무런 문서화가 없었으며 시스템이 의도 한 많은 양의 정보가 어디서나 기록되지 않고 클라이언트 헤드에 기록되었습니다. 나를위한 열쇠는 할 수있는 한 많은 질문을하고 가능한 모든 정보원에서 정보를 수집하는 것이 었습니다. 필자는 자신의 문서를 컴파일 할 것을 권장합니다.

많은 사람들이 코드를 다시 작성하지 않겠다고 말할 수도 있지만 코드가 잘못 주석 처리되거나 코드화 된 경우 (자체 문서화가 아닌 경우) 종종 최선의 방법 일 수 있습니다. 제가 고민했던 코드는 종종 가장 좋은 솔루션이었습니다.

시작하기 전에 몇 가지 종류의 표준 문서를 가지고 있으면 도움이 될 것입니다. 표준 문서는 코드를 해독하거나 사양에 맞게 코드를 가져와 이해하기 쉽게 만들어줍니다.

관련 문제