Dans le monde java, cela s'appelle Runnable
. Dans le monde C #, cela s'appelle Action
.
Mais, il existe un meilleur nom qui s’intègre parfaitement dans une vision plus large des choses.
La vue d'ensemble des choses vient plus tard, lorsque vous décidez qu'en plus de votre interface fonctionnelle void sans paramètre, vous devez également disposer d'interfaces fonctionnelles similaires acceptant un, deux ou plusieurs arguments, ou renvoyant une valeur. Lorsque cela se produira, vous voudrez que les noms de toutes ces entités soient isomorphes et correspondants les uns aux autres.
Donc, en Java, j’ai mon propre ensemble d’interfaces fonctionnelles que j’appelle Procedure
s, défini comme suit:
public interface Procedure
{
void invoke();
}
public interface Procedure1<T1>
{
void invoke( T1 argument1 );
}
... (vous avez l'image.)
Et j’ai aussi un ensemble similaire d’interfaces appelé Function
s, défini de la même façon, le premier paramètre générique étant le type de retour:
public interface Function<R>
{
R invoke();
}
public interface Function1<R,T1>
{
R invoke( T1 argument1 );
}
Donc, ce que je veux dire, c'est que Procedure
c'est un très bon nom, car cela correspond parfaitement à une vision plus large des choses. Si vous décidez ultérieurement de disposer d'interfaces fonctionnelles similaires avec des méthodes acceptant les arguments ou renvoyant une valeur, vous devrez le rencontrer.
NOTE: Je essentiellement suis d' accord avec l'affirmation de Karl Bielefeldt que «principes de nommage normaux doivent [pas] sortir par la fenêtre » et que « Interfaces doivent presque toujours être nomméesaprès ce qu'ils font, pas après une idée syntaxique générique. » Mais notez que même il permet "presque toujours". Parfois, des procédures et des fonctions (essentiellement anonymes) sont nécessaires, et c'est ce que demande le PO, et c'est ce à quoi je réponds.
Amendement 2017-11-10:
Vous pourriez demander, pourquoi Function1<R,T1>
au lieu de Function1<T1,R>
? Cela peut aller dans les deux sens, mais j'ai une préférence pour les valeurs de retour sur la gauche car j'aime bien suivre la convention de dénomination 'convertir à partir de (destination-de-source) par opposition à la conversion' à-convertir '(source à -destination) convention. (Ce qui est plus un accident qu'une convention, en réalité, en ce sens que probablement personne n’y a jamais pensé, parce que s’ils y avaient pensé du tout, ils seraient parvenus à la convention du "converti de". )
J'ai lu à ce sujet dans Joel Spolksy - Making Wrong Code Look Wrong , il s'agit d'un très long article, que je recommande de lire dans son intégralité, mais si vous souhaitez passer directement à l'affaire, recherchez 'TypeFromType', mais vous donne le TL; DR, l’idée est que myint = intFromStr( mystr )
c’est beaucoup mieux que myint = strToInt( mystr )
, parce que dans le premier cas, les noms des types sont proches des valeurs associées, de sorte que vous pouvez facilement voir que le 'int' correspond au 'int' et le 'str' correspond au 'str'.
Donc, par extension, j'ai tendance à ordonner les choses de la manière dont elles vont apparaître dans le code.