English 中文(简体)
(Mis)理解Smalltalk和TDD
原标题:
  • 时间:2009-03-22 00:46:09
  •  标签:

Smalltalk通过我努力学习,所以我要控制语法和风格建筑的一个简单的“矩阵”类。

首先,我感激如果与一个好的Smalltak教程(虽然这是完全可选的),最好是一个不涉及使用gui(我宁愿类型<代码>。圣> < /代码层次explorer将周围的年代比鱼的方法)。

然后,在TDD:对于这个项目我叫<代码> gst-sunit - f矩阵。圣- f matrix-test。圣BaseMatrixTests > < /代码,和年代一定会有更好的方式。<强> ? < /强>

最后,在断言:我想写一个方法,把断言,如:

Matrix>>multiplyBy: anotherMatrix [
    [ self isNotEmpty ] assert.
    "Do Multiplication"
    [ result dimensions = (self height)@(anotherMatrix width) ] assert.
]

<强>我怎么能做这种断言? < /强>

编辑:标志明确的问题。

最佳回答

好的,几块。

首先,我同意markusQ,虽然我完全同情:我宁愿可以直接写我的代码在EMACS。Bt Smalltalk的事情之一是,它真的很无情的人别想Smalltalk的方式做事情。在这种情况下,Smalltalk方式是使用浏览器。

第二,部分原因,这是Smalltalk Smalltalk的方法是,在很多方面,而不是< em >和< / em >其他语言。实际上,真的是没有办法做一个“独立”Smalltalk可执行:你所能做的就是做一个形象的Smalltalk和一些相对较小的片段中添加自己的代码。当你使用外部编辑器编写代码时,你与语法告诉,你只是手打字一个导入/导出格式,有点容易手比XML类型。但只有一些。

道德是Smalltalk的方式,与浏览器。

有一些相当不错的教程Smalltalk。我通常用吱吱声,所以我已经见过的使用的吱吱声,像< a href = " http://wiki.squeak.org/squeak/792 " rel = " nofollow noreferrer " > < / >。

在TDD,你运气好,因为xUnit Smalltalk是第一位。Smalltalk,年代称为SUnit,有一个好的教程< a href = " http://wiki.squeak.org/squeak/1547 " rel = " nofollow noreferrer " > < / >。

使用断言你基本上在什么似乎是一个“契约式设计”的方法。已经有工作添加契约式设计Smalltalk,像< a href = " http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.24.1768 " rel = " nofollow noreferrer " > < / >。对于简单的断言,您可以添加代码在< a href = " https://stackoverflow.com/questions/665455/smalltalk-and-assertions " > < / >这样的问题。

assert: aBlock 
    "Throw an assertion error if aBlock does not evaluates to true."
    aBlock value
        ifFalse: [AssertionFailure signal:  Assertion failed ]
问题回答

我讨厌这样说(因为你注明你别想听到它),但进入IDE。试图让你的头在smalltalk不使用IDE是喜欢去巴黎和在麦当劳吃饭。当然,你在巴黎,但你真的不暴露自己是什么年代。

smalltalk的关键之处是< em > < / em >所有对象。一路(整数和字符对象)和一路(类、方法、浏览器、IDE本身)是< em > < / em >所有对象。如果你坚持战斗,你有尽可能多的运气,有人想要学习如何编写C通过拖放东西。

如果你下载了诸如Cincom Smalltalk非商业,网上有很多教程。从这里开始:

< a href = " http://www.cincomsmalltalk.com/userblogs/cincom/blogView?教程内容= " rel = " http://www.cincomsmalltalk.com/userblogs/cincom/blogView?content=tutorials nofollow noreferrer " > < / >

如果你下载的吱吱声,从这里开始:

< a href = " http://wiki.squeak.org/squeak/792 " rel = " nofollow noreferrer " > http://wiki.squeak.org/squeak/792 < / >

是的,你确实需要使用IDE和Smalltalk有效工作。

测试、负载SUnit。在诸如Cincom Smalltalk,年代可加载的组件;我已经覆盖加载和使用它在上面的视频教程链接。我不知道如何加载它吱吱声,还是年代基地的一部分,但它当然可以。

除了请求一个教程,我不要看到一个问题。你能澄清这是什么你想知道吗?

好一个初学者的资源列表中可以找到这个问题:https://stackoverflow.com/questions/481976/is-there-a-dive-into-smalltalk-book < A href = " https://stackoverflow.com/questions/481976/is-there-a-dive-into-smalltalk-book " > < / >

So, about asserts, Squeak Smalltalk already brings Object>>assert: So, I suppose you can do:

self assert: self isNotEmpty.
self assert: result dimensions equal: (self height)@(anotherMatrix width)

如果您正在使用GNU smalltalk,这可能回答如何做断言:< a href = " https://stackoverflow.com/questions/665455/smalltalk-and-assertions " > < / > smalltalk和断言

妮可

关于断言,请看看最近发布的另一个问题。

对于TDD,是的,调用<代码> gst-sunit - f矩阵。圣- f matrix-test。圣BaseMatrixTests > < /代码是最好的方法。举例来说,一切只是建立在这些你可以选择:

  • make all TestCase subclasses for your package inherit from a phony subclass so that you can say AllMatrixTests* on gst-sunit s command line (when you add more tests).
  • file in matrix.st from matrix-test.st, thus eliminating one -f option.
  • create a Makefile and package.xml file to create a .star file for your package, as described here. Then you can do just gst-sunit -pMatrix.

有人建议上面添加<代码> #断言:< /代码> <代码>对象> < /代码,而是我d添加<代码> #断言< /代码> <代码> BlockClosure > < /代码(或其他<代码>[]在GNU Smalltalk类> < /代码)。

assert
    this value ifFalse: [AssertionFailure signal:  Assertion failed ]

因此在使用

[ value notNil ] assert.
[ value > 0 ] assert.
[ list isEmpty not ] assert.

等等。

< a href = " http://stores.lulu.com/store.php?fAcctID = 2748699 nofollow noreferrer“rel = > http://stores.lulu.com/store.php?fAcctID = 2748699 < / >(同时你会发现链接下载pdf)

我宁愿类型比鱼.sts层次explorer将方法取而代之)。

你现在这样说,我也有同感,直到我投资一些时间学习如何使用这些工具。

我说这是一个Vim、前Emacs用户的当前用户。我真的已经变得相当生产使用类浏览器和其他工具发逻现在我已经学会了的绳子。

也就是说,如果你真的想走自己的路,GNU Smalltalk是正确的选择。

但我想指出这一点,至少发逻有灵感的矩阵类,您可以使用。Squeak也应该这么做。也许你将学习有用的类浏览器检查矩阵。,)

< a href = " http://www.smalltalk-resources.com/Smalltalk-Getting-the-Message.html " rel = " nofollow noreferrer " > Smalltalk底漆< / >是< em >简介面向消息的编程的要点与Smalltalk < / em >





相关问题
热门标签