Ostatnio czytałem i spotkałem się z prawem Demeter. Teraz niektóre z tego, co przeczytałem, mają doskonały sens, np. gazeciarz nigdy nie powinien być w stanie przebić się przez kieszeń klientów, chwycić portfel i wyjąć pieniądze. Portfel to coś, nad czym klient powinien mieć kontrolę, a nie paperboy.Prawo Demeter and OOP confusion
Co rzuca mi się na prawo, może po prostu nie rozumiem tego wszystkiego, jest tak, że właściwości ciągnienia wraz z dziedzicznością funkcjonalności/informacji mogą być tak użyteczne. na przykład Klasa HTTPContext .NETs.
Would not kod, na przykład:
If DataTable.Columns.Count >= 0 Then
DataTable.Columns(0).Caption = "Something"
End If
Albo
Dim strUserPlatform as string = HttpContext.Current.Request.Browser.Platform.ToString()
Albo
If NewTerm.StartDate >= NewTerm.AcademicYear.StartDate And
NewTerm.EndDate <= NewTerm.AcademicYear.EndDate Then
' Valid, subject to further tests.
Else
' Not valid.
End If
być złamanie tego prawa? Pomyślałem (być może błędnie), że punktem OOP było po części zapewnienie dostępu do powiązanych klas w ładnej strukturze heirarchicznej.
lubię, na przykład, pomysł o przedstawieniu zestawu narzędzi narzędzie, które może być wykorzystywane przez klas stronie, aby uniknąć powtarzających się zadań, takich jak wysyłanie e-maili i enkapsulacji użytecznych metod wyrażenie:
Dim strUserInput As String = "London, Paris, New York"
For Each strSearchTerm In Tools.StringManipulation.GetListOfString(strUserInput, ",")
Dim ThisItem As New SearchTerm
ThisItem.Text = strSearchTerm
Next
Wszelkie klarowność byłoby wspaniale ... w tej chwili nie mogę pogodzić się z tym, jak prawo wydaje się wyganiać własności i metody strunowe ... wydaje mi się dziwne, że należy zlekceważyć tak wielką moc? Jestem całkiem nowy w OOP, jak niektórzy z was mogli się domyślić, więc proszę jechać łatwo :)
Te "prawa" nie są prawdziwymi prawami. W przeciwieństwie do zasad termodynamiki można je zginać i łamać, kiedy tylko chcesz. Aby powstrzymać się od obłędu, spróbuj pomyśleć o tym, jako o "wskazówce" Demeter, jeśli będziesz postępował zgodnie z tym, co religijne, skończysz pracować dla niego, nie robiąc tego dla ciebie. Wszystkie rzeczy z umiarem ... W tym umiar. –
^--------- To! – Dan
Dziękuję Binary :) –