首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Smalltalk、TDD和不可变对象

Smalltalk、TDD和不可变对象
EN

Stack Overflow用户
提问于 2014-06-25 13:58:38
回答 2查看 800关注 0票数 1

和很多人一样,我也想真正地学习小对话和TDD。为了好玩,我一直在阅读优秀的俄罗斯方块TDD教程:https://github.com/orfjackal/tdd-tetris-tutorial/blob/tutorial/README.md

并将代码转换为Smalltalk。

我已经到了第三组测试(https://github.com/orfjackal/tdd-tetris-tutorial/blob/tutorial/src/test/java/tetris/RotatingTetrominoesTest.java),它希望表示碎片的对象是不可变的。

我不知道该怎么做。我的每一次尝试都打破了先前的测试。我确实创建了一个TetrisTetrominoe类作为TetrisPiece的子类。

使用法老3.0。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-25 14:28:40

你必须考虑到语言之间的巨大差异。不久前,我写了一个博客帖子,其中包含了关于不可变的思想。

我认为,如果您想要跟踪另一种语言的测试,应该尝试为python或ruby查找一些测试,因为它们也是动态语言。

如果您想要保持不可变性,我建议您采用函数式方式,其中每个有意修改对象的方法都会创建一个具有所需属性的新对象。我怀疑这是否能满足java测试,因为java的功能不如动态的。

票数 1
EN

Stack Overflow用户

发布于 2014-07-16 14:54:06

在smalltalk中,您通常会通过询问变异器的发件人,然后验证只有创建实例的类方法才会引用它,从而测试其不可变性。例如:

代码语言:javascript
复制
testOnlyOneMutatorOfPrivateColor
    self assert:
        (SystemNavigation default allSendersOf: #privateColor:) size = 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24410752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档