您的位置:首页 > 其它

Clean Code反案例:什么是不好的API

2010-08-11 18:47 274 查看
先来看两段代码:

CI.cs:

public BoundBlock3d meshOrthoBoundBlock(Matrix3d localToBound)
{
Matrix3d xfrm = localToBound * this.ChildToParentTransform;
return this.Child.meshOrthoBoundBlock(xfrm);
}

CD.cs
重构后的CI

public BoundBlock3d MeshOrthoBoundBlock()
{
return MeshOrthoBoundBlock(Matrix3d.Identity);
}

private BoundBlock3d MeshOrthoBoundBlock(Matrix3d localToBound)
{
BoundBlock3d bounds = new BoundBlock3d();
Matrix3d mtx = localToBound * this.Child.ScalingTransform;

foreach (CI childCI in this.Child.ReferencedCIs)
bounds.orthoExtend(MeshOrthoBoundBlock(mtx * childCI.ChildToParentTransform));

// Calculate self bounds
bounds.orthoExtend(activeBody.GetOrthoBoundingBlock(mtx));

return bounds;
}

CD.cs:
移去meshOrthoBoundBlock方法

大家可以看到为了避免Client传不必要的Matrix3d.Identity, 我在外面多包装了一层。现在对于外面来说会清净很多,没有混乱的API, Client应该不用头大了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: