Zitat:
Ich halte es einfach für fraglich ob dem
OOP Konzept damit genüge getan wird...
Wer redet hier von Object Orientierter Programmierung ??
Nested Funktionen sind ein reines Hilfsmittel der prozeduralen Programierung, und
OOP nutz eine spezielle Form der prozeduralen Programmierung um zusätzlich neue Möglichkeiten zu erreichen.
Zitat:
Thema Copy & Paste Code: Das ist doch eigentlich gerade der Nachteil dieser "nested" Rutine!
Eine Nested Funktion wird erstmal primär IMMER mit deren übergeordneter Funktion zusammen kopiert. Beides, die übergeordnete Funktion UND die nested Funktionen bilden EINE Einheit. Aus konzeptioneller macht es also keinen Sinn die nested Funktion separat zu kopieren, da sie logisch gesehen OHNE die übergeordnete Funktion keinen Sinn macht. Sogesehen macht es gerade beim Copy&Paste sinn mit nested Funktionen zu arbeiten, da man durch das Kopieren des äußersten Scopes die notwendigen nested Funktionen MIT-Kopiert, statt sie zu vergessen.
Zitat:
Wenn ich nun nämlich feststelle dass diese genestete Funktion auch an anderen Stellen prima einsetzbar ist, dann fängt das copy & gepaste doch an!!
Eben exakt in diesem Moment hast du den Sinn der nested Funktionen NICHT verstanden, und die nested Funktion statt der günstigeren normalen Funktion benutzt. Erstmal bestreitet ja keinr hier das man bei Mehrfachbenutzung der gleichen Funktionalität eben KEINE nested Funktion nehmen sollte. Aber gerade für Erstentwicklungen bei denen man NICHT abschätzen kann ob eine hochspezielisierte Funktion tatsächlich mehrmalig benutzt wird, machen nested Funktion Sinn. Denn im späteren Verlauf ist es ein Leichtes aus der nested Funktion eine globale zu machen, OHNE das man am wichtigen Source was ändern müsste.
Somit, verkehrt sich deine Argumentation in das exakte Gegenteil, und alles spricht FÜR nested Funktionen.
Zitat:
Ich würde in so einem Fall eher eine eigene private Funktion innerhalb der Klasse schreiben. Die kann ich innerhalb der Klasse auch innerhalb von anderen Prozeduren und Funktionen nutzen.
Wer sagt denn hier was darüber das man überhaupt mit Objekten arbeitet ?
Wie soll einer eine nested Funktion in ein Objekt als private Methode deklarieren wenn er garkein Objekt dafür hat ?
Davon abgesehen: wenn in einer Objectmethode eine nested Funktion benutzt wird dann hat das eben den Grund die Sichtbarkeit der nested Funktion noch viel stärker einzuschränken als dies mit einer privaten Methode möglich wäre !
Zitat:
Ich sage nichts gegen die zerstückelung des Codes in Möglichst kleine Einheiten! Ich glaube anders kann man größere Projekte gar nicht bewältigen. Aber das da oben halte ich für ungünstig...
Worin besteht für dich der Unterschied zwischen kleinen und großen Projekten, in Bezug auf die Regeln der Modularisierung der Sourcen ??
Es gibt da keinen Unterschied in diesem Punkt. Der einzigste Unterschied bestünde in der Anzahl der Module/Schnittstellen und deren Komplexität, ABER NICHT in der Art und Weise wie man den Source schreibt. Die Nested Funktion ist also ein Hilfsmittel der Programmiersprache und dient nicht im speziellen der Lösung eines Programmierzieles im allgemeinen !!
Gruß hagen