【发布时间】:2019-03-27 21:51:00
【问题描述】:
只是想知道您是否可以将方法标记为待处理以在 pharo 中实现,就像您可以在 java 中使用“todo”一样
如果没有类似的东西,我很难跟踪 pharo 上的完整内容
【问题讨论】:
只是想知道您是否可以将方法标记为待处理以在 pharo 中实现,就像您可以在 java 中使用“todo”一样
如果没有类似的东西,我很难跟踪 pharo 上的完整内容
【问题讨论】:
实现仍然挂起的方法应该像这样发送notYetImplemented消息:
methodImNotSureHowToImplement
^self notYetImplemented
如果无论如何发送了未实现的消息,它将发出NotYetImplemented 异常信号,该异常将知道有问题的选择器,在我的示例中为#methodImNotSureHowToImplement。
另请注意,这将使查找需要作为#notYetImplemented 的发送者实现的所有方法变得容易。
#notYetImplemented 的实现很简单,感谢NotYetImplemented 的存在。
notYetImplemented
"Announce that this message is not yet implemented"
NotYetImplemented signalFor: thisContext sender selector
还要注意NotYetImplemented 是SelectorException 的子类之一,它模拟了几种类似的情况:
SelectorException
NotYetImplemented
PrimitiveFailed
ShouldBeImplemented
ShouldNotImplement
SubclassResponsibility
【讨论】:
我在询问后 2 天自己找到了解决方案,几乎是偶然的,只是使用上下文菜单选项 jump to test method 而不是未经任何测试的方法。 Pharo 自动生成了一个空测试:
self flag: #toImplement.
self assert: false`
第一行,不仅可以用于测试,它给了我我期望的行为,因为它自动将包含它的方法归类为flags 类别,标记为"!" 允许轻松一目了然地检查哪个方法待定。
第二行强制测试失败并显示为黄色,这非常有用,因为如果它是空的,它将通过并显示为绿色,可能会导致认为它已经完成,但事实并非如此。只需使用self notYetImplemented就可以达到类似的效果
我可能会开始用我不完整的方法做这样的事情:
MyIncompleteMethod
self flag: #toImplement.
self notYetImplemented.`
【讨论】:
你也可以使用 pragma 来标记这些方法
【讨论】:
由于 Smalltalk 提供了敏捷开发的起源,让我提供一个不同的答案。在失败的单元测试中。由于您不应该拥有很多这些,它会自动提供限制正在进行的工作的压力(打开的#toDo 的数量)。
【讨论】: