2009-07-30 3 views
1

현재 "Customers"라는 VB.NET 클래스가 있습니다. 꾸준히 커지면서 이제는 몇 가지 기능이 있습니다. 동일한 클래스의 함수를 유지하는 방법이 있습니까? 이후 그들은 여전히 ​​공통의 개인적인 방법을 사용하지만 유사성에 의해 그들을 그룹화. 예를 들어ASP.NET 클래스에서 함수를 그룹화하는 방법은 무엇입니까?

:

Class Customers 
-GetData 
---GetCustomerObject() 
---GetCustomerFieldx() 
-Lists 
---GetSomeList() 
---GetAnotherList() 
-Maintenance 
---AddCustomer() 
---DeleteCustomer() 
---UpdateCustomer() 

UPDATE : 나는 내가이 발생하는이 그룹을 원하는 위치에 명확하지 않았다 같아요. 내 고객 클래스를 사용할 때 그룹화가 IntelliSense의 네임 스페이스/클래스와 거의 같기를 바랍니다. 현재 지역을 사용하고 있지만 클래스를 사용할 때만 코드를 볼 때 도움이됩니다.

답변

3

일반적으로 파일에 콘텐츠를 그룹화하는 영역을 사용하지 않는 것이 좋습니다.

파일을 다시 그룹화해야 제어 할 수 있다고 생각되는 크기가되면 원래 클래스의 서브 세트를 담당하는 여러 클래스로 리팩터링해야한다는 힌트가됩니다. 그래서 당신은 끝내지 않는 엉망으로 끝나지 않을 것입니다. God object

1

소스 파일의 코드 영역을 사용하십시오. 이렇게하면 펼치기/접기 버튼이 생기므로 파일의 섹션을 숨길 수 있습니다.

#Region "GetData" 
    ... code ... 
#End Region 

#Region "Lists" 
    ... code ... 
#End Region 

#Region "Maintenance" 
    ... code ... 
#End Region 
0

지역은 내가 권장하는 해결책 중 하나입니다. 그러나 부분 클래스도 사용할 수 있습니다.

1

고객 클래스가 너무 많이 할 수 있으며 단일 책임 원칙을 고수해야 할 필요가 있다고 생각됩니다. 아이디어는 클래스가 하나의 작업을 잘 수행하는 방법을 알고 데이터를 가져 오는 것이 데이터로 비즈니스 로직을 수행하는 것과 다른 책임이 있다는 것입니다. 저는 현재 모 놀리 식 수업을 더 작고 목표가 많은 수업으로 분해하려고 노력하고 있습니다. 그래야 어떻게 할 수 있는지에 대한 조언을 많이 줄 수는 없지만 웹에 도움이되는 자료가 많이 있습니다 :

like this

은 별도의 추가 선 (善)에 대한 SOLID 삼촌 밥 (로버트 C. 마틴)에 대한 구글의 비트.

0

그리고 클래스를 훨씬 더 작은 클래스로 분해하면 임의의 깊이있는 네임 스페이스 시스템에 배치 할 수 있습니다. Project.Customer.Data 네임 스페이스에는 GetCustomerObject 및 GetCustomerField 클래스가 포함될 수 있습니다.

은 (아무것도만큼, 내 VB.NET 작업에 SOLID 적용하는 자신을 가르치려고 노력하고 있습니다. 이것은 당신이 구현 결국 물건의 종류인가?)

2

내가 어떤 표시되지 않습니다 제안을 구현하는 방법을 보여주는 코드이므로 여기에 추가 할 것입니다. 함수를 기반으로 클래스를 구분해야합니다. 그런 다음 각각의 클래스에 namespace 키워드를 추가하십시오. 다음은 MSDN 문서입니다 (http://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic3). 다음은 가짜 코드입니다. 그런 다음 projectname.namespace.classname.method를 사용하여 코드를 참조합니다.

namespace Customers 
-Class GetData 
---GetCustomerObject() 
---GetCustomerFieldx() 
end namespace 

namespace Customers 
-Class Lists 
---GetSomeList() 
---GetAnotherList() 
end namespace 

namespace Customers 
-Class Maintenance 
---AddCustomer() 
---DeleteCustomer() 
---UpdateCustomer() 
end namespace 
관련 문제