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
4 Réponses :
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
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`
Et dans Pharo 8, nous intégrerons un nouvel outil pour parcourir les drapeaux;)
vous pouvez également utiliser des pragmas pour marquer de telles méthodes
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).