【问题标题】:Is there a way to mark a method as pending to implement in Pharo?有没有办法将方法标记为待在 Pharo 中实现?
【发布时间】:2019-03-27 21:51:00
【问题描述】:

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

如果没有类似的东西,我很难跟踪 pharo 上的完整内容

【问题讨论】:

    标签: smalltalk pharo


    【解决方案1】:

    实现仍然挂起的方法应该像这样发送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
    

    【讨论】:

      【解决方案2】:

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

      self flag: #toImplement.
      self assert: false`
      

      第一行,不仅可以用于测试,它给了我我期望的行为,因为它自动将包含它的方法归类为flags 类别,标记为"!" 允许轻松一目了然地检查哪个方法待定。

      第二行强制测试失败并显示为黄色,这非常有用,因为如果它是空的,它将通过并显示为绿色,可能会导致认为它已经完成,但事实并非如此。只需使用self notYetImplemented就可以达到类似的效果

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

      MyIncompleteMethod
      
        self flag: #toImplement.  
        self notYetImplemented.`
      

      【讨论】:

      • 在 Pharo 8 中我们将集成一个新工具来浏览标志 ;)
      【解决方案3】:

      你也可以使用 pragma 来标记这些方法

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-31
          • 1970-01-01
          相关资源
          最近更新 更多