摘要: 数据双向绑定并不是Angular最出彩的地方。大部分对AngularJs的介绍都偏重于使用,使用的学习只是学了AngularJs的API,而那只能AngularJs的很小一部分。随着使用越来越深,系统越来越大,我们也越来越迷失,是时候深入AngularJs的实现来学习。因为AngularJs 2.0就要来了,由于2.0而1不兼容,基于API的学习不再有用,而内部实现的精华才能延续。其实,软件的很多技术也大都如此,冲走的是实现,留下的是思想。 阅读全文
posted @ 2015-03-31 12:04 予沁安 阅读(5004) 评论(2) 推荐(3) 编辑
摘要: 在我前面一篇博文《逃脱Asp.Net MVC框架的枷锁,使用Razor视图引擎》发表之后,很多人关心,脱离了之后怎么办?那么这可以说是它的续篇了。 同时,这也是eLiteWeb开源软件的一部分。MVC + Front Controller我 们常常提到的MVC中作为Controller的C。其实有两项任务,一个是处理Http请求,另一个是对请求中的用户数据进行的处理。前者,有:安全认 证,Url映射等。Front Controller 模式就是把这个C进一步分离。两个责任两个类(单一责任原则)。因此,这里给我的MVC模式,赋予新的内涵C => Command,以诠释两个模式的融合。非我族 阅读全文
posted @ 2013-08-01 07:19 予沁安 阅读(3215) 评论(4) 推荐(4) 编辑
摘要: Net中有一个DateTime结构类,涉及时间和日期,这个类大量使用。可是,他的名称已经显著的表明他是表达某个具体的时刻。当我们不需要每天的具体时间时,如:我的程序逻辑仅仅需要年月(发工资的周期?),这个DateTime显得有些累赘,甚至不合用。 一般人们解决的方式,仍然使用DateTime而从数据上,设置hour,mintue等等为0。 然而,这与DDD的理念相背,名称有与含义有偏差,另外,数据一致性的维护,散布在各个角落,如,保证日期始终为1,小时,分钟为0。另外,与月份相关的功能,如:得到下一个月份,要么用DateTime本身的功能(AddMonths),要么提炼出一个Utitlies. 阅读全文
posted @ 2013-05-16 11:47 予沁安 阅读(2317) 评论(3) 推荐(3) 编辑
摘要: 曾经沧海难为水信息如水 压力如潮功能实现阶段,我们对得要处理的信息分析得很细致,很透彻,所谓细如丝,透如水。然而,到了产品的阶段,要处理的信息却如同潮洪而至,原本的假设预想,通通被击成了碎片。这时候产生的错误和问题,很难在开发机上重现。如果说用户验收测试是对功能实现的检查,需要滴水不漏;压力测试则是容量的考验,迎接浪的洗礼。(本文版权属于© 2012 - 2013 予沁安 )环肥燕瘦压力测试的工具颇多,尤其是HP的LoadRunner甚至成为了行业标准。可是,在研究和考察的过程中,心里却慢慢有了质疑,我是否非得用这些工具吗? 一则,它们是商业软件,价格不菲;二则,还是因为是商业软件, 阅读全文
posted @ 2013-05-04 13:04 予沁安 阅读(4621) 评论(13) 推荐(2) 编辑
摘要: 寻找重构的案例 重构的案例不好选取,我们自己实际的项目当然有不少重构的情况,却不适合作为文章阐述出来。并不是因为保密的考量,而是业务本身的内容太复杂。当然,这个复杂是相对的,对短短一篇文章来说,那怕是最小一部分的业务逻辑拿出来,也显容量不够。而且,过多的阐述业务逻辑,导致喧宾夺主,掩盖了重构的注意力 阅读全文
posted @ 2013-04-22 11:35 予沁安 阅读(738) 评论(0) 推荐(0) 编辑
摘要: 可以说,到了今天,我才真正能开始做我想要的重构/改进。之前,只是补充测试,调整了一下结构。 是的,非常的缓慢,这居然被称为“敏捷”!? 你说奇怪不奇怪? 还好,这种节奏适合我这种大龄青年,合用就好,关它是风花还是雪月。==》 测试覆盖上一次漏掉了最重要的异步,测试覆盖:本以为会秀一个漂亮的100%覆盖率的测试出来,人算不如天算,居然有一个方法是75%! (本文版权属于© 2012 - 2013 予沁安) 恩,无效的生日没有测试。很简单,就增加一个测试而已,就不在这罗嗦了。直接贴覆盖率,显摆一下。再显摆一下代码质量参数:复杂度 最大的就是构造器了。可维护指标还是不错的 76分。==&g 阅读全文
posted @ 2013-04-18 01:56 予沁安 阅读(1432) 评论(3) 推荐(3) 编辑
摘要: 前两天的进度似乎有些慢,今天加快了一点, 不把每一步说的那么详细了. ==》地区信息的提取 继性别和生日之后,最后一个信息块,只是列出测试如下.==》有效性 这是一个比较大的问题. 前面,我临时性的把不同地方的验证去掉了. 代码原作者也过来, 畅叙了他关于验证的看法. 他是对的, 这种完全验证的方式,根本上说是 DDD的设计思想。不过,想我所说,我知识临时性的去掉,保证测试的单元性。验证的功能,由验证的测试来驱动。而第二点考虑,我的验证打算放在构造器中,也就是说,如果,有任何错误的输入,连第一道门都进不来。这里,测试和实现都很简单,看起来很多,只是一些罗列,不同的错误场景而已。 1 [Subj 阅读全文
posted @ 2013-01-05 10:40 予沁安 阅读(1994) 评论(2) 推荐(4) 编辑
摘要: 又是一个清新的早晨, 开始我们新的测试之旅.2 - 第二个测试, 从身份号取到正确的性别信息. ==>很简单,依葫芦画瓢, 容易的写出第二个测试. ==>很惊奇,居然没有过? 却不知, 测试的旅途中,Failed是常态. ==>好吧, 看看错误在哪? 在取性别代码时,作了验证,而且是全套. 为什么取地址时却不验证呢? 这个不一致性来源于---不是测试驱动,赫赫. ==>解决方案,把验证去掉, 呵呵. 一是解耦, 二是敏捷,还没有测试到的东西,不花过多的时间. ==>搞定. ==>可是,回过头来看测试的两个断言,一个生日,一个性别,毫无相关嘛? 于是,就有了下 阅读全文
posted @ 2012-12-21 09:23 予沁安 阅读(1626) 评论(8) 推荐(2) 编辑
摘要: 首先感谢原作者的代码: 《 面向对象的15位、18位中国大陆身份证号码解析、验证工具》. 如果有版权问题,敬请告知。 原代码给了我很好的起点,是的,这些代码都是玉,我在这只是再琢磨琢磨。 即使如此,重构的过程依然很繁琐,文章也许会很长,每一次的重构都需要把全部代码显示一遍。 知易行难, 重构是个动态过程, 不那么容易呈现出来,需要点耐心,慢慢看啊。 1 - 转化为C#代码,增加第一个测试是的,这不是必须的,可以说是我自己的原因,不会Java。但是,你也可以看作是一种重构的场景,不是吗?更改的代码就不再放了,比较简单,与C#和Java的区别有关,留个连接 SocialID.cs。可是,我的测试. 阅读全文
posted @ 2012-12-18 09:02 予沁安 阅读(2424) 评论(10) 推荐(4) 编辑
摘要: 没有太多的罗嗦,代码本身已经足够。如果,要添几个标签的话就是: 中文化,流畅性接口(Fluent Interface),API.只有几点补充说明:1。 这都是真实可运行的代码,请看测试状态: 点击Login as guest2。 测试使用Machine Specification, 重点是Establish部分。 3。仅仅使用于集成测试(用户故事);不建议业务领域和单元测试使用。4。这里只列出最终使用代码(测试说明一切);避免细节/实现的干扰。实现请看: Examples.cs "一个“语法的实现 ”要“语法实现文章发布后,很多的评论,特作出以下解释:这一段代码的技术重点,首先是行为 阅读全文
posted @ 2012-07-19 11:36 予沁安 阅读(7331) 评论(79) 推荐(10) 编辑