只是想知道是否可以将方法标记为待在pharo中实现,就像您可以在Java中使用“ todo”一样
如果没有这样的东西,我真的很难跟踪到pharo的完成情况
Lea*_*lia 11
仍待执行的方法应发送如下notYetImplemented消息:
methodImNotSureHowToImplement
^self notYetImplemented
Run Code Online (Sandbox Code Playgroud)
如果仍然发送未实现的消息,它将发出一个NotYetImplemented异常,该异常将知道有问题的选择器,#methodImNotSureHowToImplement在我的示例中。
还要注意,这将使查找所有需要作为的发送者的方法变得容易#notYetImplemented。
#notYetImplemented由于存在,的实现非常简单NotYetImplemented。
notYetImplemented
"Announce that this message is not yet implemented"
NotYetImplemented signalFor: thisContext sender selector
Run Code Online (Sandbox Code Playgroud)
还要注意,这NotYetImplemented是其子类之一,可对SelectorException几种类似情况进行建模:
SelectorException
NotYetImplemented
PrimitiveFailed
ShouldBeImplemented
ShouldNotImplement
SubclassResponsibility
Run Code Online (Sandbox Code Playgroud)
在询问后两天,我自己找到了解决方案,几乎是偶然的,只是使用上下文菜单选项jump to test method而不是任何测试的方法。Pharo 自动生成一个空测试,如下所示:
self flag: #toImplement.
self assert: false`
Run Code Online (Sandbox Code Playgroud)
第一行不仅可以在测试中使用,它给了我预期的行为,因为它自动将包含它的方法分类在标有 flags大号的类别中"!",可以轻松地一目了然地检查哪些方法正在挂起。
第二行强制测试失败并显示为黄色,这非常有用,因为如果它为空,它将通过并显示为绿色,可能会导致相信它已经完成,但事实并非如此。只需使用即可实现类似的效果 self notYetImplemented
我可能会开始用我不完整的方法做这样的事情:
MyIncompleteMethod
self flag: #toImplement.
self notYetImplemented.`
Run Code Online (Sandbox Code Playgroud)