私は最近いくつかの読書をしており、デメテルの法則に遭遇しました。今私が読んだことのいくつかは完璧な意味を持ちます。ペーパーポーは、顧客のポケットに銃をかけて、財布をつかんでお金を引き取ることはできません。財布は、顧客が管理するべきものであり、paperboyではありません。デメテルの法則とOOPの混乱
私は法律について迷惑を掛けていますが、おそらく私はすべてのことを誤解しているかもしれません。機能性/情報の階層構造とともにストリングプロパティーが非常に役立つかもしれません。例えば.NETのHTTPContextクラス。
は以下のようなコードではないでしょう:
If DataTable.Columns.Count >= 0 Then
DataTable.Columns(0).Caption = "Something"
End If
それとも
Dim strUserPlatform as string = HttpContext.Current.Request.Browser.Platform.ToString()
それとも
If NewTerm.StartDate >= NewTerm.AcademicYear.StartDate And
NewTerm.EndDate <= NewTerm.AcademicYear.EndDate Then
' Valid, subject to further tests.
Else
' Not valid.
End If
この法律を破ること?私は(おそらく誤って)OOPのポイントは、部分的に素敵な階層構造の関連クラスへのアクセスを提供することだと考えました。私が好きな
、例えば、電子メールを送信すると便利な文字列メソッドをカプセル化するなど、繰り返し作業を回避するために、ページクラスで使用できるユーティリティツールキットを参照のアイデア:
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
はどれ透明性があることでしょう偉大な...現時点では法律がどのようにストリングのプロパティとメソッドを一緒に追い払うように見えるのかを調和させることはできません...それは私には奇妙なことです。私はかなりOOPを推測しているかもしれませんので、簡単に行ってください:)
これらの「法律」は真の法律ではありません。熱力学の法則とは違って、好きな時に曲げたり折ったりできます。あなたが狂ってしまうのを止めるには、それをデメテルの「ガイドライン」と考えるようにしてください。あなたがそれを宗教的に従えば、それはあなたのために働くことになります。節度のあるすべてのこと...節度を含む。 –
^---------それ! – Dan
ありがとうバイナリ:) –