您现在的位置:首页
--> IDEAL Garden
• 为什么TDD?
1. 反映真实需求 这里存在先写测试和后写测试的区别。 先说后写测试。根据很多经验,在直接写产品实现代码时,需要考虑需求,同时需要兼顾实现的细节,用什么算法和语法。在对需求和考虑和实现细节间来回,很容易让人产生对其中一方的疏忽,遗漏掉一些需求方面,甚至在实现上存在缺陷。 有人会说我可以通过后写测试来保证。第一经验是,很多人都不会在实现完成后,补充测试,因为还有更多的工作和需求需要实现。第二是开发人员很容易在后补的测试中,只是试图去测试他已有的实现,而不是需求本身,很容易遗漏掉一些边界检查之类,在测试时,已有的实现细节会在脑子里面先入为主,即使实现存在问题或有漏洞,也很难在后补的测试中测出来。我阅读过很多面试者的测试代码,很明显都是后补的,因为一些很明显的问题没有测出来,甚至已经实现的逻辑也是只测试了一部分。而这些面试者都承认。
Impedance Mismatch(阻抗失配)经常被用来比喻服务器端面向对象代码和关系型数据库存储模型之间的关系,先有ORM技术,后有NoSQL(Document based,Key-value store),都是解决这个阻抗失配的方案。 最近在做的一个项目,具有丰富的前端UI,简单的后台逻辑。应客户的要求,采用ExtJS4作为前端技术,利用它极具交互性的UI和号称优雅的MVC框架,来构造应用的所有页面。 不落俗套,在应用最初搭建阶段,是和ExtJS相处的蜜月期,“优雅”的MVC框架和清晰的封装让人眼前一亮。但是随着项目的进展,在功能需求没有显著增加的同时,客户对于前端交互友好性的需求却与日俱增,不可避免地让前端构造UI及交互的代码日益复杂。
别看用起SVN很熟,每天commit、revert很欢,真要自己在Mac上搭起来个SVN server,本地可以checkout,创建branch,merge,就没那么熟悉了。 查了查资料,过程如下: 1. 创建本地repo localhost:~ twer$ cd localhost:~ twer$ svnadmin create SVNRepo 2. 修改两个conf文件,打开访问权限,并添加授权用户 localhost:~ twer$ cd SVNRepo/ localhost:SVNRepo twer$ edit conf/svnserve.conf localhost:SVNRepo twer$ edit conf/passwd...
以下内容摘自myThoughtWorks中对于结对编程(Pair Programming)的讨论。 结对编程与非结对编程相比那个效率会更高? 这个问题没有一个明确的答案,没有人可以很肯定的说结对编程就是会比非结对编程更有效率。效率不单单是时间,还包含效果。 如果对于一个技术难度不高,一个人几天就可以搞定,后期不需要维护的一个小项目来说可能结对编程在效率上会低于非结对编程。但是我们twer是关注代码质量 的,面临的项目一般都是需要持续发展...
客户原来有个Web App系统A,我们要基于A开发一个系统B,但不希望B对A依赖太重,所以B被实现为一个独立的Web App(war)。A和B部署在同一个Weblogic server上,在A中可以导航到B,两个系统看起来像是一个系统。 有个小需求是,在B中希望显示一个页面,根据参数能展示出不同的信息。这个页面在A中已经存在,所以自然而然最快的方法就是在B中创建一个iframe来指向那个A中的页面,配以不同的参数,多快好省! 问题很快出来了,QA发现那...
Puppet在一款自动化系统配置管理的工具,它可以让你在很短的时间内对大量硬件和系统基本类似的系统,进行统一的系统配置管理。 说的简单点,就像开网吧,你需要对网吧的每一台机器安装操作系统,配置完全一样的软件,比如QQ和360,供网友上网,在系统和软件有损坏时,很简单的一个恢复操作就可以让机器回到刚刚安装好操作系统和软件的状态。 Puppet就是可以干这个事儿的,不同在于,Puppet是给网络管理员用的,而针对的系统多是*ni...
需求总是奇怪的,但好在有这么一个还算顺手的工具。 我有一份code base的两个不同版本库,这两个版本库所在的server是不一样的,然后对应本地有两个不同的Working Copy。我需要把一个版本库里面做的部分变化,merge到另外一个版本库。一开始想过用SVN命令行diff,但似乎那是服务于同一个版本库的不同branch的,也就是要host在一个server上的。 幸好在小乌龟里面发现了Merge revisions to…这个功能,具体做法是: show log版...
有时是需要动态创建<script>元素的,比如从第三方动态(在主页面已经加载完毕后)引入js;或者需要从某个地址引入一段document,其中包含script和dom,这里的script需要被动态执行。
状态模式(state pattern)和策略模式(strategy pattern) 的实现方法非常类似,都是利用多态把一些操作分配到一组相关的简单的类中,因此很多人认为这两种模式实际上是相同的。 然而在现实世界中,策略(如促销一种商品的策略)和状态(如同一个按钮来控制一个电梯的状态,又如手机界面中一个按钮来控制手机)是两种完全不同的思想。当我们对状态和策略进行建模时,这种差异会导致完全不同的问题。例如,对状态进行建模时,状态迁移...
• 自动化测试之惑
自动化测试,就像是一块大馅饼,每个人都想上来啃一口,但是进嘴了,却发现味道各不同,然后心里就会有了各式各样的迷惑。 1、自动化测试脚本谁来写?这在过去似乎不是问题,在现在一些公司内也许也不是问题:理应由测试工程师来负责实现代码测试并维护,因为他们更理解产品,更需要从客户端角度来测试,更熟悉测试案例。但问题是种种现实决定了让测试工程师对自动化测试起来显得困难重重。 项目产品复杂度增高,分工很细。老板...
[ 共10篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [56] Oracle MTS模式下 进程地址与会话信
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [55] 如何拿下简短的域名
- [54] 图书馆的世界纪录
- [53] Go Reflect 性能
- [53] android 开发入门
- [50] 读书笔记-壹百度:百度十年千倍的29条法则
- [49] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑
赞助商广告