2012-01-25 2 views
1

거대한 클래스를 여러 부분으로 나누는 데 도움이되는 유용한 보조 도구가 있습니까? 코드는 잘 작동하지만 500 줄 이상의 클래스를 사용하는 것은 쉽지 않습니다. 작은 조각으로 나눌 수 있다고 확신합니다.거대한 클래스를 두 개로 나누는 도구

이번에는 파이썬 용 도구에 관심이 있지만, 계산에 포함되지 않을 것이라고 확신합니다.

+0

어떤 프로그래밍 언어/환경을 사용하고 있습니까? – k3b

+0

그것이 있기를 바랍니다. 메소드와 필드간에 그래프를 그릴 수 있습니다 (메소드 M은 필드 F를 사용합니다). 이 그래프를 바탕으로 알고리즘이 제안 할 수 있습니다. – pihentagy

+0

현재 py3k를 사용하고 있지만 그래프가 언어에 독립적으로 생성 될 수 있다고 생각합니다. – pihentagy

답변

6

왜 수동으로 수행 할 수 없습니까? 500 라인은 그렇게 다루지 않습니다. 저는 어떤 도구가 그것이 제공하는 목적의 맥락에서 의미있게 클래스를 나눌 수 있을지 의심 스럽습니다. 필자는 코드를 독자적으로 분리하고 코드를 재 설계/리팩터링하는 것이 좋습니다.

+0

질문에 – pihentagy

+0

내 의견을 추가했지만 도구가 나에게 도움이 되었기를 바랍니다. – pihentagy

0

글쎄, 그것은 당신이 의미하는 언어를 계산합니다. python과 같은 언어에 비해 Java와 같은 언어에 대한 자동화 된 리펙토링을 훨씬 더 안전하게 수행 할 수 있습니다 (Python의 동적 특성 때문에).는 "당신이하지 않는 한 사용하지 마십시오"더처럼 자기 반성을 사용하여 자바 getattr() 동안 사용하는 것이 정상입니다 파이썬에서

("파이썬"). 이러한 기술은 자동화 된 리팩토링 도구가 모든 관계를 감지 할 수 없기 때문에 거의 불가능합니다.

아무튼 자바와 파이썬 둘 다 리팩터링을 위해 Eclipse을 사용합니다. 그것은 일을 아주 잘합니다. Python의 경우 pydev 플러그인 또는 aptana 스튜디오가 필요합니다.

+0

네, 파이썬에서 자바보다 리팩토링이 더 어렵다는 것에 동의하지만, 개인적으로는 매일 getattr()을 사용하지 않으므로, 그 연결을 놓친다면 괜찮습니다. – pihentagy

1

우선, "편안하지 않게 만드는"500 줄의 코드는 무엇입니까? 왜 수업을 두 개의 새로운 수업으로 나눌 필요가 있다고 생각합니까? 아마 클래스는 괜찮기 때문에 (500은 너무 크지 않습니다.) 또는 클래스를 3 또는 4 개의 다른 클래스로 나눌 필요가 있습니다.

더 이상의 정보가 없으면 작은 조각으로 분할해야하는 이유를 이해할 때까지 도구가 도움이되지 않는다고 말하고 싶습니다. 아니 도구는 어떻게 클래스를 분할 말할 것입니다.

클래스의 단일 책임은 무엇인지 물어보십시오. 둘 이상이 생기면 적어도 책임 회선을 따라 수업을 나누어야합니다. 6 세가되면,해야 할 일이 상당히 많습니다.

+0

네, 맞습니다. 어떤 도구도 _how_로 나눠서 알려주지는 않지만, 내 의견에 따라 정말 좋은 힌트를 줄 수 있습니다. – pihentagy

+0

나는 학문의 외부에서 당신에게 필요한 힌트를 줄 수있는 어떤 도구도 알지 못한다. 그렇게해도 도구는 자동화 된 도구에 단순히 지식이 필요하지 않기 때문에 (AI에 접근하고있을 것입니다) 더 나은 클래스 집합을 디자인하는 데 도움이되지 않습니다. 그래서 도구를 찾는 것을 멈추고 코드 디자인 및 각 클래스가 가져야 할 책임에 대해 생각해보고 시작하는 것이 좋습니다. –

관련 문제