저는 많은 방법으로 많은 수업을 듣고 있습니다 (물론 25 가지가 서로 연관되어 있습니다). 나는 그것을 분리하고 파생 클래스와 기본 클래스를 생성해야하는지 잘 모르겠다. 미래에베이스에서 물려받은 또 다른 클래스에 대한 기회가 보이지 않습니다. 큰 클래스를 작은 부분으로 분해하기위한 추진 요인은 무엇입니까?OOP : 언제 기본 클래스를 만들어야합니까?
답변
예, 20 가지가 넘는 방법을 사용하면 문제를 해결할 수 있습니다.
때때로 실험이 필요합니다.
또 다른 방법은 방법 수를 줄이는 방법을 살펴 보는 것입니다. 예를 들어 매개 변수의 다른 개수 및/또는 유형을 취하는 동일한 메소드 (이름으로)가 있습니까? 이 경우 해당 서명 간의 공통점을 볼 수 있습니다. 이것은 나를 또 다른 제안으로 이끈다.
4 개 이상의 매개 변수를 취하는 방법이있는 경우이를 살펴보면 어쩌면 그 자체로 클래스로 전환 할 수있는 옵션이있을 수 있습니다. 이로 인해 일부 기능이 새 클래스로 이동 될 수 있습니다.
클래스의 필드 수 (= 멤버 변수)를보십시오. 이러한 멤버 변수의 하위 집합에서 주로 작동하는 방식으로 메서드를 그룹화 할 수 있습니까? 어쩌면 당신은이 방법들과 그들이 작동하는 값들을 새로운 클래스로 바꿀 수 있습니다.
큰 클래스를 작은 부분으로 나누기위한 추진 요인은 무엇입니까?
별도의 개체로 논리적으로 이해해야 할 때해야합니다. 진정으로 정의한 모든 메소드가 단일 오브젝트에 대해 작동하고 논리적으로 다른 오브젝트에 관한 것으로 간주 될 수 없다면, 하나에 보관하십시오.
나는 내가 그것을 분할 및 파생 및 기본 클래스를 작성해야 확실하지 않다 대신
당신이 무슨 뜻인지 확실하지. 기본 클래스에서 일부 동작을 상속하지만 다른 클래스를 수정하거나 추가하는 객체가 필요할 때 기본 클래스에서 파생되지만 기본 클래스를 그대로 유지할 수 있습니다. 코드를 관리 가능한 덩어리로 분해하기 위해 상속받지 않습니다.
"대형 클래스"는 고전적인 "코드 냄새"입니다. 참조 : http://sourcemaking.com/refactoring/large-class
대형 클래스 인 경우 일 수도 있고 그렇지 않을 수도 있습니다.은 리팩토링에 적합한 후보를 의미합니다. 그것이 "코드 냄새"입니다 ... 코드가 좋을 수도 있지만, 좋은 모습 만 볼 수는 있습니다.
내가 링크 한 기사의 조언을 따르십시오. 그것이 PHP 용으로 작성된 것은 아니지만 개념과 전략은 여전히 적용됩니다.
- 1. 언제 ASP.NET MVC에서 새 컨트롤러 클래스를 만들어야합니까?
- 2. jquery 플러그인은 언제 만들어야합니까?
- 3. 자신의 DLL을 언제 만들어야합니까?
- 4. 언제 새로운 활동을 만들어야합니까?
- 5. 언제 Asp.net MVC (Design Question)에서 새로운 컨트롤러 클래스를 만들어야합니까?
- 6. 여러 클래스를 만들어야합니까?
- 7. 주석에 대한 상수 클래스를 만들어야합니까?
- 8. Redis에서 레일스에 새로운 클래스를 만들어야합니까?
- 9. PHP 기본 OOP 질문
- 10. 프로그래밍 방식으로 뷰 컨트롤러를 언제 만들어야합니까? 언제 NIB 파일을 사용해야합니까?
- 11. 많은 클래스를 실행, PHP는 OOP
- 12. 언제 ASP.NET MVC로 별도의 컨트롤러를 만들어야합니까?
- 13. 언제 포토샵을 사용하여 웹 페이지를 만들어야합니까?
- 14. tag-libs, mappings 등을위한 패키지는 언제 만들어야합니까?
- 15. 지도 키에 대한 클래스는 언제 만들어야합니까?
- 16. 기본 유형 (정수, 문자열)을 언제 사용하고 새로운 클래스를 작성해야합니까?
- 17. 클래스를 위임자로 지정하려면 클래스의 인스턴스를 만들어야합니까?
- 18. 이 작업을 위해 별도의 클래스를 만들어야합니까?
- 19. iOS :지도에 맞춤 주석 클래스를 항상 만들어야합니까?
- 20. 언제 중첩 클래스를 만들어야합니까? 그것은 외부 클래스의 인스턴스를 만들어 더 많은 리소스를 소비합니까?
- 21. php oop, 많은 클래스를 가진 클래스 구조
- 22. 언제, 왜 System.ComponentModel.Container 클래스를 사용해야합니까?
- 23. 기본 IOS OOP - 구조 및 구현
- 24. MVC에서 컨트롤러 이름을 어떻게 지정해야합니까? 언제 새로운 것을 만들어야합니까?
- 25. 사용자 정의보기 용 인터페이스 빌더 플러그인을 언제 만들어야합니까?
- 26. 언제 SQL 데이터베이스에 테이블을 만들려면 PHP 파일을 만들어야합니까?
- 27. 언제 기본 키 값을 변경해야합니까?
- 28. OOP Object 생성자 인수
- 29. 기본 클래스를 추출하는 도구?
- 30. 엔티티 개체는 어디에 만들어야합니까?
2 개의 클래스로 분류하려고 시도한 후에 클래스의 메소드의 상호 의존성은 메소드의 대부분을 기본 클래스 (20)로 만듭니다. 가능하다해도 코드를 두 부분으로 나누는 것이 전혀 의미가없는 것처럼 보입니다. 귀하가 제공 한 링크에서 조언의 유용성이 의심 스럽거나 모든 경우에 적용되지 않을 수도 있습니다. – stillstanding
@user, 그것이 내가 말한 것이다. 코드 냄새가 항상 잘못된 것을 의미하지는 않으며 각각의 경우가 다릅니다. –
@user이 조언은 마틴 파울러 (Martin Fowler)의 리팩토링 (Refactoring)에서 비롯된 것으로, 그 주제에 관한 성경입니다. 나는 당신의 특정한 경우에 유용하지 않다는 점에 유감 스럽지만, 조언은 정확하게 의문의 여지가 없습니다. –