코드 탐색
VIM보다 더 나은 편집기를 사용하십시오.
코모도 편집을 사용합니다.
기억에 더 많이 헌신해야한다고 생각합니다
좋은. 생각하는 것이 좋습니다. "학습"은 결국 "메모리"로 연결됩니다.
인터페이스를 식별하기 위해 지속적으로 "grep"하고 코드를 읽습니다.
이것이 일반적입니다. 당신이 그들을 기억할 수 없다면, 그들은 너무 복잡하지 않습니까? 단순화 할 시간입니다.
단순하게 만들기가 어렵습니다. 그러나 기억하기 어려운 경우 나쁜 디자인의 증상입니다.
나는 grep을 사용합니다. 그것은 나를 위해 작동합니다. 내 코모도 편집에는 멋진 검색이 많이 있습니다. 메모장도 마찬가지입니다. ++
내가 사용하는 객체의 인터페이스 식별
Doc Strings와 help()
함수가 작동합니다. 나는 그들을 사용합니다. 매일.
효율적으로 리팩토링 ... 단위 테스트의 품질에 따라 크게 달라집니다.
그건 뉴스가 아니야 정적 언어에서도 마찬가지입니다.
정적 언어에서는 컴파일하는 한 실제로 작동 할 가능성이 높다고 가정 할 때 종종 게으르게됩니다. 이것은 명백히 거짓이지만 우리는 게으르다.
이 문제에 대한 해결 방법이 있다고 확신합니다.
이러한 문제는 "문제"가 아니며 "해결 방법"이 필요하지 않습니다.
동적 언어는 조작하는 객체의 유형을 모르는 것에 관한 것입니다. 매개 변수를 받으면 "quack ()"및 "feathers ()"메소드를 정의한다고 가정하지만 문서가 어디에 있는지 알지 못합니다 (사실, 여러 구현에 여러 개의 docstring이 있음).
"객체의 종류를 모른다"? 정말. 객체의 클라이언트를 디자인 할 때 내가 디자인 한 유형을 알고 있습니다.
여러 클라이언트에서 사용하는 서비스를 정의 할 때 quack()
and 의 필수 인터페이스를 정의한 경우 "정확한"유형은 관련이 없습니다 feathers()
.
마지막으로, 미묘한 문제가있는 경우 드문 경우에 "정확한"유형을 결정하는 Read-Execute-Print-Loop 및 기타 도구가 있습니다. 그것이 실제로 매일 사용하는 것입니다.
>>> x = some_mystery_factory( some, args )
>>> type(x)
>>> dir(x)
적어도 파이썬에서는 객체의 유형을 풀기가 너무 어렵지 않습니다. 동적 언어에는 REPL이 있어야하므로 진행 상황을 쉽게 확인할 수 있습니다.
예상되는 매개 변수 순서도 모릅니다. IDE가 도움을주는 것이 어렵습니다.
그건 말이되지 않습니다. help()
공장.
그리고 내 IDE는 종종 정의를 찾을 수 있습니다. 항상 그런 것은 아닙니다. 일부 복잡한 동적 구성은 기본 클래스를 쉽게 숨길 수 있습니다. 이 경우 실제로 메소드 정의를 찾기 위해 객체의 클래스에 대해 생각해야합니다. 물론 코드를 작성 중이므로 미스터리가 거의 없습니다.