|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具)BrannonB.King是供职于AutonomousSolutionInc.的一位软件工程师,他在MSDN杂志2014年05月刊宣布了一篇题为《违反C#中SOLID准绳的伤害》的文章。作者指出了研发职员在C#编码中大概呈现的一些罕见毛病,违反SOLID准绳将招致代码不容易扩大、难以保护。
King供应了计数器的示例代码,并针对SOLID每条准绳给出了倡议,但为了简便起见我们只节选了开闭准绳(OCP)相干的一些内容。开闭准绳(OCP)划定“软件实体(类、模块、函数等)应当对扩大开放,对修正封闭”。依据King的说法,上面这段代码违反了开闭准绳- 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.}
复制代码 由于你必要在客户每次必要显现新增内容时修正此办法,并且,客户一直必要显现新增内容。倡议将绘制交换成通用程序:- readonlyIList<IRenderer>_renderers=newList<IRenderer>();voidDraw(Nerdnerd){foreach(varrendererin_renderers)renderer.DrawIfPossible(_context,nerd);}
复制代码 思绪是如许的:…编写完成已知接口的绘制类(或有关绘制类的类)。出现器必需可以决意其是不是能够或应当基于输出内容绘制任何内容。比方,带式绘制代码能够挪动到其本身的“带式出现器”,用于反省接口并视必要持续实行。 基类援用承继类是违反开闭准绳的另外一个例子- classNerd{publicvoidDanceTheDisco(){if(thisisChildOfNerd)thrownewCoordinationException("Cant");...}}classChildOfNerd:Nerd{...}
复制代码 作者倡议“基类毫不能间接援用其承继类。”。
对等类中也大概存在该成绩:- classNerdsInAnArc{publicboolIntersects(NerdsInAnLineline){...}...}
复制代码 King注释道:一般情形下,对象条理布局中的弧线和直线是对等的。它们不该该晓得相互之间的非承继的细致细节,由于这些细节一般是最优交织算法所需的。随时修正个中一个,而无需变动另外一个。这再一次违反了单一义务。存储弧线,仍是剖析这些弧线?将剖析操纵置于其本人的有用程序类中。 只管关于小型项目来讲大概不是很需要,但为了不发生面条式代码,代码范围越年夜,严厉实行SOLID准绳的主要性就越分明。
前天傍晚我发表了《net网页编程的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。 |
|