"우수 사례"유형 과정에서 대학에서 배운 것을 토대로 가능하면 상속보다 구성을 선호하는 경향이 있습니다. 클래스 D는 "이 좋지 않다"이전 개발자가 작성한 클래스 A의 공용 속성을 사용하고 있습니다 : 위의 예에서상속 - 하위 클래스의 변수 초기화
Public Class A
Protected _Name As String
Public Property Name() As String
Get
Return _Name
End Get
Set(ByVal value As String)
_Name = value
End Set
End Property
End Class
Public Class B
Inherits A
End Class
Public Class C
Inherits B
End Class
Public Class D
Inherits C
Public Sub SomeMethod()
'This isn't good
Name = "Ian"
End Sub
Public Shared Sub Main()
Dim d As New D
d.SomeMethod()
End Sub
End Class
:이처럼 보이는 응용 프로그램의 일부 코드에서 찾고 클래스 D에서 이름의 초기화를 넘었습니다. 저는이 주석을 작성한 이유가 비즈니스 규칙에 기인한다고 생각합니다. 클래스 D에 a.Name의 값을 할당 한 것은 아닙니다. 그러나, 위의 코드에 문제가있는 것입니다. a.Name은 모든 서브 클래스가 공유합니다. 클래스 B, C 및 D에는 많은 오버로드 된 메서드가 포함되어 있으므로 상속이이 경우에 올바른 디자인 선택이라고 생각합니다.
이전 개발자가 더 많은 문서를 남기고 싶습니다.
아마도 이전 개발자의 이름이 Ian이 아니었을 것입니다 .-) –
하드 코딩 된 문자열''Ian "'때문에 생각합니다. 여기에 상속과 관련하여 잘못된 것은 없습니다. –
@ 아이바 슬라 보프, 감사합니다. 내가 질문을 설명하는 "이안"을 harcoded있다. 이름은 실제로 응용 프로그램의 데이터 계층에서 추출됩니다. 답변을 쓸 수 있습니까? – w0051977