Есть ли способ пометить метод как ожидающий реализации в Pharo? - PullRequest
6 голосов
/ 28 марта 2019

Просто интересно, можете ли вы пометить метод как ожидающий реализации в pharo, как вы можете сделать это в java, используя "todo"

Мне очень трудно отслеживать, что завершено в pharo безчто-то в этом роде

Ответы [ 4 ]

11 голосов
/ 28 марта 2019

Методы, реализация которых еще не завершена, должны отправлять сообщение 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
1 голос
/ 07 апреля 2019

Вы также можете использовать прагмы, чтобы пометить такие методы

1 голос
/ 30 марта 2019

Я сам нашел решение для этого через 2 дня после того, как почти случайно спросил об этом, просто используя опцию контекстного меню jump to test method поверх метода без какого-либо теста. Pharo автоматически сгенерировал пустой тест с этим:

self flag: #toImplement.
self assert: false`

первая строка, которую можно использовать не только в тестах, дает мне ожидаемое поведение, поскольку она автоматически классифицирует метод, содержащий ее, в категории flags, помеченной большой "!", что позволяет легко проверить, какой методы ожидающие решения.

Вторая строка вынуждает тест проваливаться и показываться желтым, что довольно полезно, потому что если оно пустое, оно пройдет и будет показано зеленым, вероятно, заставляя поверить, что оно уже сделано, когда это не так. Подобного эффекта можно добиться, просто используя self notYetImplemented

Вероятно, я бы начал делать что-то подобное с моими неполными методами:

MyIncompleteMethod

  self flag: #toImplement.  
  self notYetImplemented.`
0 голосов
/ 08 мая 2019

Поскольку Smalltalk обеспечивает источник гибкой разработки, позвольте мне дать другой ответ. В неуспешном юнит-тесте. Поскольку у вас их не должно быть много, он автоматически создает давление для ограничения незавершенной работы (количество открытых # toDo).

...