有没有办法将方法标记为待在Pharo中实施?

时间:2019-03-27 21:51:01

标签: smalltalk pharo

只是想知道是否可以将方法标记为待在pharo中实现,就像您可以在Java中使用“ todo”来实现

我真的很难跟踪没有这样的东西在pharo上完成的事情

4 个答案:

答案 0 :(得分:11)

其实现仍待执行的方法应发送notYetImplemented消息,如下所示:

methodImNotSureHowToImplement
  ^self notYetImplemented

如果仍然发送未执行的消息,它将发出NotYetImplemented异常信号,该异常将知道有问题的选择器,在我的示例中为#methodImNotSureHowToImplement

还要注意,这将使查找所有需要作为#notYetImplemented的发送者的方法变得容易。

由于#notYetImplemented的存在,NotYetImplemented的实现非常简单。

notYetImplemented
  "Announce that this message is not yet implemented"
   NotYetImplemented signalFor: thisContext sender selector

还请注意,NotYetImplementedSelectorException的子类之一,它为几种类似情况建模:

SelectorException
  NotYetImplemented
  PrimitiveFailed
  ShouldBeImplemented
  ShouldNotImplement
  SubclassResponsibility

答案 1 :(得分:1)

问了两天后,我几乎是偶然地自己找到了解决方案,只是在没有任何测试的方法上使用上下文菜单选项jump to test method。 Pharo会自动生成一个空测试:

self flag: #toImplement.
self assert: false`

第一行不仅可以在测试中使用,它还为我带来了预期的行为,因为它会自动将包含该方法的方法归类到标记为flags的{​​{1}}类别上,从而轻松实现一目了然,检查哪些方法正在处理中。

第二行强制测试失败,并以黄色显示,这很有用,因为如果为空,它将通过并以绿色显示,可能导致认为如果不是这种情况,它已经完成了。只需使用"!"

即可达到类似的效果

我可能会使用不完整的方法开始做这样的事情:

self notYetImplemented

答案 2 :(得分:1)

您还可以使用编译指示标记此类方法

答案 3 :(得分:0)

由于Smalltalk提供了敏捷开发的起源,所以让我提供一个不同的答案。在失败的单元测试中。由于您不应该拥有太多这些,它会自动提供压力来限制进行中的工作(打开的#toDo的数量)。