Sind c # anonyme Methoden objektorientiert?

7

Ich prüfe nur anonyme Methoden (in c #) - ein Teil von mir mag die Flexibilität und Kurzhand, aber ich bin auch besorgt, dass es den Code schwieriger zu lesen macht.

Es kam mir auch in den Sinn, dass dieses Konstrukt gegen das O / O-Paradigma zu gehen scheint. Halten Sie anonyme Methoden für in Einklang mit objektorientierten Prinzipien?

    
alchemical 17.08.2009, 17:25
quelle

4 Antworten

19

lambda (anonyme Methoden) stammt aus dem funktionalen Paradigma. Das bedeutet nicht, dass es gut oder schlecht ist! Wenn es zum Problem passt, dann benutze es, wenn es nicht funktioniert. OOP ist kein Ziel, guter Code ist das Ziel. Ich hasse es, wenn Leute versuchen, ein single Paradigma in den Hals zu zwingen, wie zum Beispiel in Java. C # geht in die richtige Richtung (IMHO), so dass es zu einer multiparadigmen Sprache wird.

    
AraK 17.08.2009, 17:27
quelle
4

Wenn Sie in Bezug auf objektorientiertes Design an sie denken möchten, sind sie nur syntaktischer Zucker für eine anonyme Klasse, die eine Methode enthält, die aufgerufen wird. In der Tat macht Java es mit der länger gehenden finalen Klasse. C # wählte die kürzere Methode. Beide sind gültig und innerhalb der Grenzen des objektorientierten Designs.

Lambda-Ausdrücke sind auch nicht weniger objektorientiert als Delegierte. IMHO, Lambda-Ausdrücke fallen in eine fast vollständig orthogonale Studie der Programmierung von OOP: funktionale versus prozedurale.

Also, verwenden Sie das richtige Werkzeug für den Job, sei es Lambdas, Delegaten, anonyme Klassen, Objekte, Monaden usw. ad nauseam. Ihr Ziel sollte es sein, den richtigen Code zu haben, um das richtige Problem zu lösen.

    
user7116 17.08.2009 17:27
quelle
1

Es macht für mich keinen Sinn, von anonymen Funktionen zu sprechen, die "objektorientiert" oder nicht "objektorientiert" sind. Sind Variablen objektorientiert? Wie wäre es mit Schleifen? Sind Ausnahmen objektorientiert?

Das Label ist in diesem Fall nicht sinnvoll.

Wenn Sie denken, dass es in einem bestimmten Fall schwieriger ist, eine anonyme Funktion zu verwenden, um etwas zu erreichen, dann verwenden Sie keine.

    
mquander 17.08.2009 17:38
quelle
0

Interessanterweise erfordert die C # -Implementierung von anonymen Methoden manchmal die Erzeugung von Objekten aufgrund von "Schließungen". Lesen Sie hier darüber nach: Ссылка

    
John Fisher 17.08.2009 17:32
quelle

Tags und Links