7
votes

Les méthodes anonymes sont-elles orientées objet?

Je viens de vérifier les méthodes anonymes (en C #) - une partie de moi aime la flexibilité et la courte main, mais je suis également préoccupé par le fait qu'il puisse rendre le code plus difficile à lire.

Cela m'a également eu lieu que cette construction semble aller contre une partie du paradigme O / O. Envisagez-vous des méthodes anonymes pour être en ligne avec les principes orientés d'objets?


1 commentaires

Pour ce que cela vaut, même si vous décidez que les méthodes anonymes ou les Lambdas ne sont pas orientées objet, rappelez-vous que OO n'est pas un objectif en soi. Comme la plupart des aspects du commerce, OO est un outil dans la boîte à outils pour vous aider à accomplir davantage, mieux et plus rapidement. :) Il y a peu de valeur dans la stricte conformité avec une technique unique pour le bien de la technique (à moins que vous n'ayez juste essayé d'apprendre, par exemple). Au lieu de cela, utilisez ce qui est disponible, que ce soit OO ou fonctionnel, pour atteindre votre objectif avec une efficacité maximale. :)


4 Réponses :


19
votes

lambda (méthodes anonymes) provient du paradigme fonctionnel. Cela ne signifie pas que c'est bon ou mauvais! Si cela correspond au problème, utilisez-le s'il ne le fait pas. Oop n'est pas un objectif, le bon code est l'objectif. Je déteste quand les gens essaient de forcer un paradigme simple dans la gorge, comme en Java par exemple. C # va dans la bonne direction (IMHO), de sorte qu'il devient une langue multiparadigm.


0 commentaires

4
votes

Si vous souhaitez y penser en ce qui concerne la conception orientée objet, ils sont simplement syntaxiques de sucre syntaxique pour une classe anonyme contenant une méthode qui est invoquée. En fait, Java le fait avec la classe finale plus longue. C # a choisi la méthode plus courte. Les deux sont valides et bien dans les limites de la conception orientée objet.

Les expressions Lambda ne sont également pas moins orientées objet que des délégués. IMHO, les expressions de Lambda tombent dans une étude presque entièrement orthogonale de la programmation de OOP: fonctionnel par rapport à la procédure.

Ainsi, utilisez le bon outil pour le travail, que ce soit Lambdas, des délégués, des cours anonymes, des objets, des monades, etc. Ad Nauseam. Votre objectif devrait être d'avoir le bon code pour résoudre le bon problème.


2 commentaires

Je pense que Java plie le concept de Lambda. Il n'y a aucune raison pour que Lambda soit considérée comme une bonne.


Je vais +1 Arak pour souligner le point que la programmation ne concerne pas un seul paradigme.



0
votes

Fait intéressant, la mise en œuvre de méthodes anonymes nécessite parfois la création d'objets en raison de «fermetures». Lisez ici ici: http://blogs.msdn.com /oldnewthing/archive/2006/08/02/686456.aspx


0 commentaires

1
votes

Cela n'a aucun sens pour moi de parler de fonctions anonymes "orientées objet" ou non "orientées objet". Les variables sont-elles orientées objet? Que diriez-vous des boucles? Exceptions sont-elles orientées objet?

L'étiquette n'est pas une chose utile à appliquer dans ce cas.

Si vous pensez que dans un cas particulier, l'utilisation d'une fonction anonyme pour accomplir quelque chose rend plus difficile à lire, alors n'utilisez-vous pas un.


1 commentaires

+1 L'accent est mis sur le fait que la programmation fonctionnelle et orientée objet est orthogonale en ce qui concerne l'autre.