2017-04-15 8 views
1

Python 프로젝트를 시작하고 수백 줄의 코드를 작성하고 소수의 클래스를 작성하고 즉각적인 만족을 얻었으며 모든 것이 잘 작동했습니다.Python 클래스를 통해 개요를 유지하는 방법은 무엇입니까? 데이터 유형을 추론하는 방법?

몇 달 후 프로젝트로 돌아 가면 절망적입니다. 스파게티보다 나쁘다.이 코드는 나에게 백 등급 멤버 함수의 혼란스러운 콜렉션처럼 보인다. 이 기능의 대부분은 길이가 2 ~ 10 라인에 불과합니다. 그들의 작업과 목적은 완벽하게 명확하다 - 함수 인자, 리턴 값, 그리고 관련된 클래스 멤버 변수의 데이터 타입이 무엇인지 전혀 알지 못한다는 것만 제외하면 말이다. 그러므로 나는 내 수업이 어떻게 상호 연관되어 있는지 큰 그림을 얻을 수 없다.

어떻게 이런 상황에서 진행할 수 있습니까? C++에서 .h 헤더가 제공하는 상위 레벨 개요를 얻는 방법? 이 정보를 소스 파일에 삽입하여 다음 번에이 연구를 다시 할 필요가 없도록하려면 어떻게해야합니까?

+0

적절한 경우 [docstrings] (https://www.python.org/dev/peps/pep-0257/)을 사용하십시오. – spectras

답변

0

적절한 경우에는 docstrings을 사용하십시오. PEP에 인용

예 :

def complex(real=0.0, imag=0.0): 
    """Form a complex number. 

    Keyword arguments: 
    real -- the real part (default 0.0) 
    imag -- the imaginary part (default 0.0) 
    """ 
    if imag == 0.0 and real == 0.0: 
     return complex_zero 
    ... 

이러한 문자열은 파이썬에서 액세스 할 수있는 기능/방법에 __doc__ 특별한 속성으로 추가됩니다. 직접 또는 pydoc 모듈로. 보너스로, 그러한 문서는 help(something)을 사용하여 파이썬 콘솔에서 직접 사용할 수 있습니다. 파이썬 자체를 문서화하는 데 사용되는 도구 인 sphinx-doc을 조사해야합니다. 소스가 아니지만 파이썬 코드를 문서화하고 전체적으로 꽤 편리합니다.

실제 유형에 대한 우려로 보통 특정 유형의 이름을 지정하지 않습니다. 그들은 중요하지 않습니다. 중요한 것은 파이썬 코드가 일반적으로 duck typing을 사용하므로 사용자가 할 수있는 작업입니다. 즉, foo 메서드를 호출하고 해당 bar 특성에 액세스 할 수 있고 예상 한대로 동작하는 한 인수가 무엇인지 신경 쓰지 않아도됩니다.

+0

verbose docstrings을 사용하는 것이 코딩 규칙 _ex ante_에 대한 조언을 제공합니다. 제 질문은 주어진 혼란을 분석하는 방법에 관한 것입니다 _ex post_. –

+0

아아, 디버거로 코드를 실행하고 따르는 것 외에는 할 수있는 일이 많지 않습니다. – spectras