当前位置: 首页 > news >正文

网站开发的计划书做自媒体有哪些网站

网站开发的计划书,做自媒体有哪些网站,做网站维护承包合同,夜狼seo第1篇: 讲述了如何创造缝. 缝(seam)是需要知道的概念. 第2篇, 避免在构建对象时写出不易测试的代码. 第3篇, 依赖项和迪米特法则. 本文是第4篇, 将介绍全局状态引起的问题. 全局状态 全局状态, 也可以叫做应用程序状态, 它是一组变量, 这些变量维护着…第1篇: 讲述了如何创造缝.  缝(seam)是需要知道的概念. 第2篇, 避免在构建对象时写出不易测试的代码. 第3篇, 依赖项和迪米特法则. 本文是第4篇, 将介绍全局状态引起的问题.   全局状态 全局状态, 也可以叫做应用程序状态, 它是一组变量, 这些变量维护着应用程序的高级状态. 在程序里, 全局状态可能都存放在一个全局状态对象里, 例如ASP.NET里面的HttpContext; 或者它们可能是全局的变量, 这些全局变量在程序的任何地方都可以访问. 不管是如何实现的全局状态, 每个全局状态变量在内存里只有一个实例. 所以如果一个类里更新了全局变量的值, 那么另一个类访问该变量的时候它的值就是刚才被更新的值. 有些情况下, 使用全局状态确实有用; 但是如果使用不当, 则会对测试造成很大的影响.   全局状态对测试引起的问题 使用静态方法或全局变量访问全局状态的时候, 就引起了对全局状态的直接耦合. 这很不好.这种耦合就导致很难对测试进行设置. 针对每个测试, 我们必须创建和设置好存储全局状态的对象. 或者把全局变量设定为所需的值.因为每个全局状态变量在内存里只有一个实例, 那么我们就无法进行并行单元测试了. 如果我们为A测试设定了全局变量的值, 然后在测试A结束前开始测试B, 这时测试B修改了全局变量的值, 这时测试A就可能会失败, 因为它所期待的全局变量不是这个值.上面的这种现象就叫做鬼魅般的超距作用(Spooky Action at a Distance). 而实际项目中确实经常发生这样的情况, 并行跑单元测试的时候偶尔会失败, 而单独去跑失败的测试时却一直成功. 这种耦合到全局状态的测试就不能再称为隔离测试了.  危险信号 全局变量调用静态字段或调用拥有静态字段的类的静态方法. 但也仅限于该类的静态方法使用了该类的静态字段. 单例模式 (Singleton Pattern)单元测试会随机的失败, 但是又没发现明确的原因.  解决办法 尽量使用本地(局部, 越窄越好)状态变量如果第三方库使用了静态方法, 那么应该使用一个包装类来对该方法进行包装. 这个包装类还是要实现一个接口. 用它的时候注入该接口即可. 这样测试的时候就可以为包装类创建测试替身了, 并把全局状态解耦.使用可依赖注入(IoC/DI)的单例体, 这种单例体是由IoC容器创建的.  例子 就举一个例子吧. 有这样一个获取当前登录用户权限的类, 它使用的是单例模式: 这个是典型的单例模式, 它会保证在程序中只返回一个实例, 这里就不多介绍了.   下面这个Service会调用上面这个Auth类: Auth是单例模式的, 而且还调用了静态方法. 现在的状态是, OfficeService和Auth所包含的全局状态紧密的耦合到了一起.    如何解决问题 首先应该把单例模式去掉, Auth类只保留两个属性和一个方法:   然后在service里面应该注入IAuth接口并使用:   那么接下来就需要保证这个IAuth无论在程序中注入了多少次, 都是同一个实例. 这时就需要使用依赖注入(DI) 库了. 现在的DI库通常允许指定IoC容器中每对绑定服务的作用范围(Scope), 或叫做生命周期管理. 例如ASP.NET Core内置的IoC容器就内置了这种功能. 在ASP.NET Core 项目的Startup类里, 这样写就可以保证每次请求IAuth的时候只会得到同一个对象实例: 现在这个单例的工作是由IoC容器来负责了. 在其它地方正常的注入IAuth使用即可.   先写到这, 本文的概念性内容和更多的例子请参考Angular创始的人这篇文章: http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/
http://www.huolong8.cn/news/87581/

相关文章:

  • 做网站先做首页采购平台官网
  • 网站报价单wordpress评论函数
  • wordpress分享跳转插件南宁排名seo公司
  • 好一点网站建设公司河南建筑市场一体化平台
  • 北京西站电话安丘网站制作
  • 网站服务器安装教程视频重庆模板网站建站
  • 学校网站在建设方面的的优势域名权重查询
  • 编写html的软件seo外链增加
  • wordpress直接上传视频网站网站空间数据库上传
  • 网页游戏网站开发前端做网站需要学什么软件
  • 湖北联诺建设网站注册个公司需要什么条件
  • 网站基础风格创建速购单微信小程序怎么做
  • 大兴网站设计营销活动有哪些内容
  • 创建网站得花多少钱seo网站推广与优化方案
  • 推荐做问卷的网站建设网站赚钱猛兽领主
  • 重庆网站建设网站建设桃花岛网站是什么
  • 东莞高端建站公司网站开发现状都用php
  • 苏州网站建设制作设计跨境电商一件代发货源平台
  • 一般电商网站做集群如何查看网站的服务器位置
  • 设置网站解析网站开发asp.net和sql数据库
  • 上海网站建设服务是什么设计制作小车一教学反思
  • 热度网络网站建设石家庄网站建设优化
  • 郑州付费系统网站开发建设加查网站建设
  • 建立一个网站大约要多少钱seo网站推广seo
  • 一个域名怎么做两个网站建站服务的网络公司有哪些
  • 深圳市网站备案杭州网站设计建立企业网站
  • 做分析图的地图网站微信网页版本
  • 怎么在网站后台挂马网站logo位置
  • 廊坊做网站公司长沙网站排名优化费用
  • 国外做meta分析的网站西安做网站那家公司好