- 浏览: 455347 次
-
最新评论
-
carlos23:
我想知道用WriterLogger后,里面的writer在外面 ...
论面向组合子程序设计方法 之 燃烧的荆棘 -
marsyoung:
讲的什么。。没看懂。例子太抽象。。
论面向组合子程序设计方法 之 创世纪 -
wanghhao:
优雅的方式!
论面向组合子程序设计方法 之 微步毂纹生 -
ykdsg:
有源码吗?
论面向组合子程序设计方法 之 monad -
咱不怕:
如果在一个函数中多次使用到这个不变temp对象,按照Marti ...
关于 Replace Temp With Query
文章列表
那啥?刚才说到哪了?“如云朵般的呵护”?下面谁说的?给我拉出去好好“呵护呵护”!
人家没那么说啦!讨厌!是刚才广告里说的嘛!我说刚才我们“俺摸”系列说到哪了?
对了,说到我们可以这么用PorkMockTest:
public class LionHeadTest extends PorkMockTest {
public void testHuoHou() {
LionHead head = mock(LionHead.class);
head.bite();
replay();
cook(head);
// 忘记吧,忘记吧。忘记是 ...
猪肉炖粉:“那啥,猪哥啊,这两天你身价大涨,发了吧?忙啥呢?”
一只猪:“可不是!到哪儿都被采访,这名猪也有隐私权滴!最近特想过普通猪的生活。这不,洗尽铅华,老老实实地躲圈里整Java呢”
话说这Java的一级摸 ...
为了响应伟大的“抵制中英文夹杂的资本主义不良思潮”运动,本文将全部用中文书写(代码暂时例外)。
最近工作需要,发现要写代码扩展“蛛丝”来实现一个春天遗留系统的移植。基本上就是围绕着春天的“应用上下文”和蛛丝的绑匪/模块来上下其手。
在测试的的时候,习惯性地选择用“简单摹客”来测试行为。摹客春天的应用上下文和豆子工厂真是简单啊:
ListableBeanFactory beanFactory = mock(ListableBeanFactory.class);
expect(beanFactory.getBeanDefinitions()).andReturn(beanNames);
...
最近一些朋友纷纷给下一代开了blog,孩子她妈看着眼馋,急扯白脸地也给我家蓓蓓开了一个。博客刚开张,急需人捧场,孩子他爸只好风餐露宿,提心吊胆地满城找电线杆子,站牌儿贴小广告。
某一日再次被东城城管打得满头包,被撵得惶惶如得冠军的刘翔,气喘吁吁之余忽然想起家爱这儿似乎民主得很,小报不怕乱贴,标题党不怕乱做,挖坑只怕不深,盖楼不怕违章。虽然这样一来有可能暴露俺一只猪名花有主的身份,对以后和广大文学女青年的交流合作产生不必要的障碍和误解,但是考虑到家爱大概还有很多无聊的人可以拉来帮我贴小广告,还有老庄之流树大招风,大可以树下乘乘凉,当当挡箭牌,关键时刻大义灭亲,舍卒保车。嘿嘿嘿,于是,一个邪恶的计 ...
好象貌似有本书是用写一个JUnit作为例子来讲解TDD的。要说TDD绝对是个好东西,不过TDD本身并不能保证搞出好软件。这不,Junit就是个活生生的例子呀。
一直以来,我写Junit+Easymock测试都是这么来的:
public class SomeTest extends TestC ...
问题背景,定义三个概念先:
1。percent。就是百分比。
2。weight。如果percent是10,weight就是0.1,weight=percent/100.
3。amount。如果percent是10,总数是1000,那么amount就是100. amount=total*weight.
在程序中,我们很多时候需要在amount, weight, per ...
这个事例说起来相当简单。不过小中见大,它大致体现了我和pair在DRY vs. 简单性上的差别,和那个“这样代码重用”里面的例子体现了同样的分歧。
目标是重构下面的测试代码:
public void test1() {
Account acct = new Account();
acct.setName("test");
acct.setType(TypeEnum.Type1);
acct.setActive(true);
Result result = runSomeApi(acct);
assertEquals("tes ...
今天这个其实不是争论。
这是我接手的一个web系统的一个设计。我觉得很不爽,但是一时又没有好的解决方法。
情况是这样的。
我们的web app是一个传统的jsp+controller+dao的设计(Controller用的是我们元老自己设计的一个框架)。
这个app我们叫做product。
除此之外,我们还有一个定制版本的app。这个定制版本是给某个客户定制的。功能和product大同小异。但是有些小的地方的业务逻辑或者web页面会有些区别。(比如说某个提示信息不同,或者多出或者少一个text box之类的)
大家知道jsp的复用不是很容易的。而这个定制版本和product的区别完 ...
这个争论的背景有点复杂。我就尽量简化了说。
遗留系统有一个自制的service locator。是一个静态函数:
public static Object newObject(Class interfaceOrDefaultClass, Class[] parameterTypes, Object[] arguments);
使用起来是这样:
ImplFactory.newObject(MyInterface.class, new Class[]{int.class, String.class}, new Object[]{new Integer(1), "abc&quo ...
这是一个工作中遇到的背景比较简单的争论。
有这么一个persistent object,姑且叫它Plan吧。
有这么两个函数:
Plan getPlanByName(String userid, String planName);
Plan[] getPlans(String userid);
getPlanByName内部执行的是:
select * from Plan where us ...
公司的一个大系统的持久层一直是直接使用jdbc。在jdbc的基础上,又自制了一个简陋的cache。
每个持久功能的实现都比较类似,大致相当于这样:
MyProprietaryConnection conn = ConnectionManager.checkOut(Database.DB_NAME);
try {
PreparedStatement stmt = conn.getPreparedStatement("some statement id, identifying a sql statement in an xml file");
stmt.se ...
这个争执发生在测试的时候。
背景是这样的:
一个接口有很多乱七八糟的业务相关的方法,其中有这么四个方法:
interface TaxLawBuckets {
double getRemaining401k();
double getRemaining403g();
void apply401k(double amount);
void apply403g(double amount);
}
当然,这个设计有点不是很好。更好的也许是:
interface TaxLawBuckets {
TaxLawBucket get401k();
TaxLawB ...
这个I disagree系列里面我准备把所有在工作中技术上的争执记录下来。也有立此存照的意思。也许再过几年,回头一看,会自己bs自己一把呢。
今天要记录的,是一个关于martin的refactoring那本书里提到的"Replace Temp With Query" ...
问题是这样的。
一个MyService类里面,有一个MyResponse runService()函数。这个runService函数会调用一个web service来得到MyResponse对象。这个MyResponse对象在runService()函数中被缓存,然后返回。
现在的目标是,在runService返回以前,先把MyRe ...
这里讲述的是一个非常让人尴尬的故事
我们有一个简单的java类:
class Details {
double getBalance();
double getFixed();
double getVariable();
double getSpendDown();
...
//各种getter以及其他相关的逻辑
}
现在业务逻辑需要对一些property做求和操作,求overallBalance, overallFixed之类的。
没什么了不起的,一个for循环分分钟搞定:
static double getOverallBalance(D ...