c# – 在一个强类型的世界中,为什么ASP.NET MVC对命名约定的脆弱依赖不受欢迎?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 在一个强类型的世界中,为什么ASP.NET MVC对命名约定的脆弱依赖不受欢迎?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3458字,纯文字阅读大概需要5分钟。
内容图文
![c# – 在一个强类型的世界中,为什么ASP.NET MVC对命名约定的脆弱依赖不受欢迎?](/upload/InfoBanner/zyjiaocheng/776/eb19f30e8bf74128a285769108f309b2.jpg)
从永远来看,强类型对象已经成为面向对象编程的基础.快进到5分钟前,当使用Entity Framework和MVC3时,我被迫将其添加到我的Web.config中:
<connectionStrings>
<add name="_MY_EXACT_CLASS_NAME_DbContext" connectionString="Data Source=blahblah.../>
</connectionStrings>
太棒了,我的整个应用程序依赖于XML属性中任意选择的名称.这真的是现代编程的样子吗?拼错一个类名是一个严重的冒犯,编译器直接引导我们修复,但在这种情况下,我只会得到一个运行时异常消息.如果上面提到的异常信息先生心情愉快,他会指着我走向Mordor,我会跋涉到另一个浪费调试时间的Mount Doom来摧毁看不见的One-Typo-To-Rule-Them-All.
控制器也是如此:
routes.MapRoute("BE_CAREFUL","{controller}/{action}/{id}",
new { controller = "ONE_FALSE_MOVE_AND",
action = "BUT_I_SWEAR_IT_SAID_BUILD_SUCCEEDED" }
);
似乎事情在波涛汹涌而来.强烈类型的物体在阳光下度过了一天,而现在我们都是隔着匿名“var”的女孩.我承认,对你的类型腼腆激起很多性感的场景 – 特别是你知道你不需要做任何设置工作 – 但这里是实际问题:
面向对象编程的先辈如何通过添加一堆任意的,无论是匿名的构造,同时创建对命名约定的脆弱依赖,来感受我们艺术的“进步”?
据我们所知,MVC4可能会突然要求所有名称前面都有4.7个空格,然后是lolcat ASCII art.为什么?因为是的,这就是原因.花一点时间,惊叹于你刚刚目睹命名大会诞生的事实.显然,这是一个非常坚实的基础材料,是一个旗舰框架.
所以,如果有一件事我希望我的整个代码库在功能和哲学上都依赖于,那么对于编程的数学逻辑而言,没有什么比……微软的英语命名约定更重要了!
</sarcasm>
</griping>
<!-- resume enjoying all of MVC's amazing features, after eating any humble pie served up in the comments -->
解决方法:
My entire application depends on an arbitrarily-chosen name in an XML attribute.
这被称为“按惯例编码”或“约定优于配置”……你选择了一些需要配置的东西,然后其他所有东西都“落到了位置”.就像在/ views / shared中使用razor和_layout.cshtml一样.或者像使用剃须刀和mySpecialController与ActionResult索引和/views/mySpecial/Index.cshtml …这些只是让约会适合你的一种方式.
Since forever, strongly-typed objects have been a foundation of object-oriented programming.
Strongly-typed objects had their day in the sun, and now we’re all girl-next-door over the anonymous “var”.
var变量只是使事情稍微更具可读性的简写,编译器仍然在编译时强烈地和静态地键入内容.考虑一下这里的区别:
foreach (var c in Customers) { /* do stuff */ }
foreach (CustomerDataItem customerDataItem in Customers) { /* do stuff */ }
正如你所看到的,第一个说“从客户那里获得一个项目c”,第二个说同样的东西,但是好主人我已经写了两行代码,而你还在输入长代码.当然,随着ReSharper的优势消失,然而……
For all we know, MVC4 might suddenly require that all names be preceded by exactly 4.7 spaces followed by lolcat ASCII art. Why? Because yes, that’s why.
哈日.
How do the forefathers of object-oriented programming feel about our “advancement” of their art by adding a bunch of wishy-washy, do-sorta-whatever anonymous constructs while at the same time creating fragile dependencies on naming conventions?
好的,所以这主要是挫折,但我会咬人.开始的人想要更简单的代码(BASIC,COBOL查找那些意味着什么),所以他们希望事情变得更容易和更多数学.事情正在发生变化(LINQ设置数学,高阶微积分;也见F#和Python)
所以他们会喜欢我们现在正在做的事情.远离程序代码(代数)并转向面向集合的逻辑(adv calculus).另见事件处理程序;-)
所以……说了这么多:我一直在你的鞋子里.我问过那些问题.我在大师的脚下学习.我喜欢语言的发展方向.
在你的下一生中,我希望你学习node.js.我希望你学习异步的偶数处理,我希望你能理解事物不再依赖ANSI-C了.我们在这个行业取得了很大的进步,而且情况正在好转.事情每天都在抬头.我爱我们所处的地方,我认为这对我们的行业来说是正确的.
干杯,和HTH.
内容总结
以上是互联网集市为您收集整理的c# – 在一个强类型的世界中,为什么ASP.NET MVC对命名约定的脆弱依赖不受欢迎?全部内容,希望文章能够帮你解决c# – 在一个强类型的世界中,为什么ASP.NET MVC对命名约定的脆弱依赖不受欢迎?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。