我最近一直在做一些阅读,并遇到了得墨忒耳法则。现在我读到的一些内容非常有道理,例如报童永远不能从顾客的口袋里翻出来,抓起钱包把钱拿出来。钱包是客户应该控制的东西,而不是报童。
让我对法律感到困惑的是,也许我只是误解了整个事情,将属性与功能/信息的层次结构联系在一起可能非常有用。例如.NETs 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 很陌生,所以请放轻松:)