仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 807|回复: 11
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之C#的SOLID准绳理论仓酷云

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具)BrannonB.King是供职于AutonomousSolutionInc.的一位软件工程师,他在MSDN杂志2014年05月刊宣布了一篇题为《违反C#中SOLID准绳的伤害》的文章。作者指出了研发职员在C#编码中大概呈现的一些罕见毛病,违反SOLID准绳将招致代码不容易扩大、难以保护。
King供应了计数器的示例代码,并针对SOLID每条准绳给出了倡议,但为了简便起见我们只节选了开闭准绳(OCP)相干的一些内容。开闭准绳(OCP)划定“软件实体(类、模块、函数等)应当对扩大开放,对修正封闭”。依据King的说法,上面这段代码违反了开闭准绳
  1. voidDrawNerd(Nerdnerd){if(nerd.IsSelected)DrawEllipseAroundNerd(nerd.Position,nerd.Radius);if(nerd.Image!=null)DrawImageOfNerd(nerd.Image,nerd.Position,nerd.Heading);if(nerdisIHasBelt)//arareoccurrenceDrawBelt(((IHasBelt)nerd).Belt);//Etc.}
复制代码
由于你必要在客户每次必要显现新增内容时修正此办法,并且,客户一直必要显现新增内容。倡议将绘制交换成通用程序:
  1. readonlyIList<IRenderer>_renderers=newList<IRenderer>();voidDraw(Nerdnerd){foreach(varrendererin_renderers)renderer.DrawIfPossible(_context,nerd);}
复制代码
思绪是如许的:
…编写完成已知接口的绘制类(或有关绘制类的类)。出现器必需可以决意其是不是能够或应当基于输出内容绘制任何内容。比方,带式绘制代码能够挪动到其本身的“带式出现器”,用于反省接口并视必要持续实行。
基类援用承继类是违反开闭准绳的另外一个例子
  1. classNerd{publicvoidDanceTheDisco(){if(thisisChildOfNerd)thrownewCoordinationException("Cant");...}}classChildOfNerd:Nerd{...}
复制代码
作者倡议“基类毫不能间接援用其承继类。”。
对等类中也大概存在该成绩:
  1. classNerdsInAnArc{publicboolIntersects(NerdsInAnLineline){...}...}
复制代码
King注释道:
一般情形下,对象条理布局中的弧线和直线是对等的。它们不该该晓得相互之间的非承继的细致细节,由于这些细节一般是最优交织算法所需的。随时修正个中一个,而无需变动另外一个。这再一次违反了单一义务。存储弧线,仍是剖析这些弧线?将剖析操纵置于其本人的有用程序类中。
只管关于小型项目来讲大概不是很需要,但为了不发生面条式代码,代码范围越年夜,严厉实行SOLID准绳的主要性就越分明。
前天傍晚我发表了《net网页编程的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。
山那边是海 该用户已被删除
沙发
发表于 2015-1-19 23:26:19 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
小魔女 该用户已被删除
板凳
发表于 2015-1-25 08:37:29 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
飘灵儿 该用户已被删除
地板
发表于 2015-1-25 11:08:42 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
深爱那片海 该用户已被删除
5#
发表于 2015-1-25 23:22:01 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
admin 该用户已被删除
6#
发表于 2015-1-31 13:19:25 来自手机 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
精灵巫婆 该用户已被删除
7#
发表于 2015-2-8 00:27:36 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
活着的死人 该用户已被删除
8#
发表于 2015-2-23 18:55:30 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-2-28 14:18:08 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
若相依 该用户已被删除
10#
发表于 2015-3-7 02:49:58 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
因胸联盟 该用户已被删除
11#
发表于 2015-3-14 05:24:52 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
只想知道 该用户已被删除
12#
发表于 2015-3-21 00:37:47 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-28 04:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表