asp.net – 得墨忒耳定律和OOP混淆
发布时间:2020-12-16 03:33:55 所属栏目:asp.Net 来源:网络整理
导读:我最近一直在做一些阅读并遇到了得墨忒耳法则.现在,我所阅读的一些内容非常有意义,例如:报童应该永远不能通过顾客的口袋,抓住钱包并拿走钱.钱包是客户应该控制的东西,而不是 paperboy. 是什么引发了我关于法律的问题,也许我只是误解了整个事情,将字符串属性
我最近一直在做一些阅读并遇到了得墨忒耳法则.现在,我所阅读的一些内容非常有意义,例如:报童应该永远不能通过顾客的口袋,抓住钱包并拿走钱.钱包是客户应该控制的东西,而不是
paperboy.
是什么引发了我关于法律的问题,也许我只是误解了整个事情,将字符串属性与功能/信息的层次结合在一起是非常有用的.例如.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的新手,所以请放轻松:) 解决方法
德米特法则(也是“函数/方法的德米特定律”)想要通过说“只使用一个点”来减少是因为在一个方法中你不应该从提供的参数中假设这么多的上下文.这增加了类的依赖性并使其不太可测试.
这并不意味着您不能使用上述所有示例,但它建议客户不再使用您的方法访问钱包并从中检索钱: function getPayment(Customer customer) { Money payment = customer.leftpocket.getWallet().getPayment(100); ... // do stuff with the payment } 您只需将paperboy所需的内容传递给方法,并因此减少方法的依赖性(如果可能): function getPayment(Money money) { // do stuff with the payment } 您从中获益将是您不依赖于客户将钱包放在左侧口袋中,而只是处理客户给您的钱.这是你必须根据个人情况做出的决定.较少的依赖性使您可以更轻松地进行测试 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- RSS2.0中文规范详解及示例
- asp.net-mvc – 使用键入的HTML助手时的模型前缀
- asp.net-mvc-3 – 剃刀视图引擎,如何在html之间写入?
- asp.net-mvc – 通过自定义HTML Helper扩展方法渲染Javascr
- (推荐)第15章 扩展ASP.NET MVC (IModelBinder、过滤器)
- asp.net – 如何将数据保存在MVC控制器的内存中?
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之验证
- asp.net-core – 如何在使用asp.net 5时更改登录URL
- asp.net – 在div标签内右对齐菜单控件
- asp.net-mvc – 如何在验证汇总中显示MVC 3客户端验证结果
推荐文章
站长推荐
- asp.net – ADO.NET实体数据模型缺少Visual Stud
- asp.net – 用于在自联接表中显示嵌套s中的无限类
- asp.net – 我可以通过div onclick事件调用函数后
- asp.net core 使用identityServer4的密码模式来进
- asp.net-mvc-4 – 当IIS在不同的系统上运行时,Si
- asp.net-mvc – 如何在ASP.NET MVC和Entity Fram
- asp.net – VS2010中新的asp“showat”属性要求不
- asp.net – 当内容页面位于子文件夹中时,jQuery无
- 微信红包系统asp源码开发的,也有叫微信一物一码红
- asp.net – 在部署过程中如何显示维护页面?
热点阅读