6
votes

Existe-t-il un moyen de marquer une méthode comme en attente de mise en œuvre dans Pharo?

Je me demande simplement si vous pouvez marquer une méthode comme étant en attente d'implémentation en pharo, comme vous pouvez le faire en java en utilisant "todo"

Il m'est vraiment difficile de garder une trace de ce qui est complet sur pharo sans quelque chose comme ça


0 commentaires

4 Réponses :


11
votes

Les méthodes dont l'implémentation est toujours en attente doivent envoyer le message notYetImplemented comme ceci:

SelectorException
  NotYetImplemented
  PrimitiveFailed
  ShouldBeImplemented
  ShouldNotImplement
  SubclassResponsibility

si le message non implémenté est quand même envoyé, il signalera un NotYetImplemented qui connaîtra le sélecteur incriminé, #methodImNotSureHowToImplement dans mon exemple.

Notez également que cela facilitera la recherche de toutes les méthodes qui doivent être implémentées comme expéditeurs de #notYetImplemented.

La mise en œuvre de #notYetImplemented est simple, grâce à l'existence de NotYetImplemented . p>

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

Notez également que NotYetImplemented est l'une des sous-classes de SelectorException qui modélisent plusieurs situations de nature similaire:

methodImNotSureHowToImplement
  ^self notYetImplemented


0 commentaires

1
votes

J'ai trouvé la solution par moi-même 2 jours après avoir posé des questions à ce sujet, presque accidentellement, en utilisant simplement l'option du menu contextuel sauter à la méthode de test sur une méthode sans aucun test. Pharo a généré automatiquement un test vide avec ceci:

MyIncompleteMethod

  self flag: #toImplement.  
  self notYetImplemented.`

la première ligne, qui peut être utilisée non seulement sur les tests, me donne le comportement attendu car elle catégorise automatiquement la méthode la contenant sur un flags catégorie marquée d'un gros "!" permettant de vérifier facilement en un coup d'œil quelles méthodes sont en attente.

La deuxième ligne force le test à échouer et à s'afficher sur le jaune, ce qui est assez utile car s'il est vide, il passera et s'affichera en vert, ce qui laisse probablement penser que c'est déjà fait alors que ce n'est pas le cas. Un effet similaire peut être obtenu simplement en utilisant self notYetImplemented

Je commencerais probablement à faire quelque chose comme ça avec mes méthodes incomplètes:

self flag: #toImplement.
self assert: false`


1 commentaires

Et dans Pharo 8, nous intégrerons un nouvel outil pour parcourir les drapeaux;)



1
votes

vous pouvez également utiliser des pragmas pour marquer de telles méthodes


0 commentaires

0
votes

Comme Smalltalk fournit l'origine du développement agile, permettez-moi de fournir une réponse différente. Lors d'un test unitaire échoué. Comme vous n'êtes pas censé en avoir beaucoup, cela fournit automatiquement la pression pour limiter le travail en cours (le nombre de # toDo's ouverts).


0 commentaires