AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Merkwürdiger Source Code? Kann mir das jemand erklären?
Thema durchsuchen
Ansicht
Themen-Optionen

Merkwürdiger Source Code? Kann mir das jemand erklären?

Ein Thema von mandoki · begonnen am 18. Mär 2007 · letzter Beitrag vom 19. Mär 2007
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#21

Re: Merkwürdiger Source Code? Kann mir das jemand erklären?

  Alt 19. Mär 2007, 10:03
Das wird so sein

Aber betrachte es mal aus Sicht einer "Arbeitsorganisation" oder aus Sicht einer "Teamarbeit". Der Source soll nicht Selbstbefriedignung sein, also kein Selbstzweck sondern verfolgt eine klare Zielsetzung um ein Problem zu lösen. Jede zusätzliche und nicht notwendige Information in der Schnittstelle zum Source erhöht den Arbeitsaufand für diejenigen die diesen benutzen müssen. Also mehr an Dokumentation, mehr zum Lernen, weniger Zielorientierung, höhere Fehleranfälligkeit sprich Fehlbenutzungen weil die Schnittstelle verwaschen, also unklar ist. Das Geheimnis liegt in der Restriktion, man beschränkt sich auf notwendige Grundfunktionen, bekommt so eine Standardisierung hin und schwups wird die spätere Benutzung stark ökonomisiert. Das ist doch recht simpel einzusehen da wir als Menschen doch in allen Bereichen nach diesem Muster vorgehen, oder ?

PASCAL ist viel restriktiver als C zb. und exakt deshalb lieben wir es doch auch. Restriktiver heist eben nicht weniger Universalität sondern mehr, da eine sauber durchdachte Schnittstelle wie ein Baukastensystem viel variantenreicher sein wird.

Hm, sowas kann man eigentlich nur Auge in Auge diskutieren. Auf alle Fälle programmiere ich schon ziemlich lange professionell und meistens in Teams, ich kann nur aus meiner Erfahrung erzählen.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#22

Re: Merkwürdiger Source Code? Kann mir das jemand erklären?

  Alt 19. Mär 2007, 10:11
Zitat:
Und nun gibt der Architekt den Leuten die die Interfaces implementieren sollen die implementierung der Properties vor. Mindestens 3 von den Entwicklern werden fluchen.
Viel schlimmer ;(

Da der Architekt unantastbar ist werden diese 3 garnichts sagen, ja sie fluchen im Bestfall jeder für sich, im schlechtesten Falle bilden sie eine versteckte Front gegen den Architekten. Aber konstruktiv wird es meistens nie. Auf alle Fälle sinkt die innere Motivation im Team. Denn die Hauptursachen für verwaschene Interfaces, für ellenlange Source mit wenig Nutzen sind

- Profilierungssucht
- Egosimus
- Selbstüberschätzung

Dabei habe ich die Erfahrung gemacht das gut durchdachte und einfach gehalten Schnittstellen das Gegenteil bewirken. Hat also der Architekt seine Aufbae gut gemacht so werden die Leute zusätzlich motiviert, sie machen weniger Fehler, man arbeitet effizienter und auch effektiver.

Mal ehrlich, wir alle arbeiten doch lieber mit Komponneten etc.pp. die exakt das machen was wir benötigen und das auch noch effizent und korrekt. Grausig sind doch die Kompenenten die tausende Properties haben die versprechen alles zu können und dann im Detail doch immer nur die Hälte ermöglichen.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#23

Re: Merkwürdiger Source Code? Kann mir das jemand erklären?

  Alt 19. Mär 2007, 10:58


Die Propertys sind doch nur Show, die müssen doch im zu implementierenden Object gar nicht vorhanden sein...
Die sind nur fürs Interface...

Und dort werden sie eindeutig durch die Set-/Get-Funktionen festgelegt...
Nunja, jeder hat halt seine Meinung zu diesem Thema, wie dem auch sein, ich Egoist find sie praktisch

Bye Christian
Christian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#24

Re: Merkwürdiger Source Code? Kann mir das jemand erklären?

  Alt 19. Mär 2007, 11:09
Zitat von negaH:
Na ist doch ein ideales Beipsiel !!
Du hast Liebe als Variable erst NACH procedure Kind deklariert, ergo wolltest du auch das procedure Kind keinen Zugriff darauf bekommen darf. Denn du willst ja Fehler vermeiden oder ? Du kompilierst es und stellst fest geht nicht, ups, darf Kind Liebe benutzen, nein? gut eine Fehler, ja? machtnichts schreiben wirs um
joo, es war ja nur weil da vorne wer meinte man habe auf alle lokalen Variablen Zugriff ... und dem ist ja nicht so ^^
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von mandoki
mandoki

Registriert seit: 20. Feb 2006
Ort: Kiel
48 Beiträge
 
Delphi 7 Professional
 
#25

Re: Merkwürdiger Source Code? Kann mir das jemand erklären?

  Alt 19. Mär 2007, 15:16
Uff.. da hab ich ja ne heisse Diskussion losgetreten.

Vielleicht sollte man den Titel umbenennen in:
Diskussion zum Thema: Nested Functions/Procedures

Ist auf jeden Fall sehr interessant und lehrreich, die verschiedenen Meinungen zum Thema.

Gruß mandoki
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#26

Re: Merkwürdiger Source Code? Kann mir das jemand erklären?

  Alt 19. Mär 2007, 15:58
Zitat:
Die Propertys sind doch nur Show, die müssen doch im zu implementierenden Object gar nicht vorhanden sein...
Die sind nur fürs Interface...
Ja, und das ist ja gerade das Problem von dem ich rede. Die Getter/Setter Methode einer Property in einem Interface sind ebenso öffentlich sichtbar wie die Property selber. In einem Interface gelten 2 goldende Regeln

1.) alles ist öffentlich -> logisch ist ja ein abstraktes Modell so ein Interface
- keine differenzierte Sichtbarkeitsregeln, es gibt also kein private/protected/public etc.pp
- somit alles public

2.) ein Interface sollte niemals Aussagen über die reale Implementierung treffen -> also vollständig abstrakt
- ein Interface kann durch verschiedene impelementierende Klassen benutzt werden
- ein Interface kann sogar über mehrere Klassen implementiert werden, dh. gleich mehrere Klassen stellen die reale Impelementierung des Interfaces dar
- die reale Implementierung eines Interfaces kann durch den Implementor weiter delegiert werden
- die Lebenszeit der implementierenden Klassen eines Interfaces ist undefiniert, großer Unterschied zu Klassen
- ein Interfaces muß garnicht durch eine Klasse implementiert werden, es geht auch procedural oder sonstwie, eben weil das Interface keinerlei Aussagen trifft was, wann, wo, wie und womit real implementiert ist
- ein Interface kann nur eine Teilmenge der Funktionalität einer komplexen Klasse exportieren, also Reduktion der verfügbaren Funktionalität einer Klasse nach aussen und das sogar noch auf eine Art&Weise das man eben nicht wissen kann wie es impelmentiert wurde, also abstrakt. Das heist man kann über Interfaces quasi zu einer bestehenden Klassenhierarchie eine komplett umstrukturierte und unabhängige Parallel-Hierarchie aufbauen, einfach nur durch reine Deklarationen. So gesehen sind Interfaces sowas wie ein Translator von Denkmodellen, sie translieren von einem Denkmodell einer Klassenstruktur in Programmierspache A in ein komplett anderes Denkmodell in Sprache B. Und das war die Ursache dafür das es überhaupt Interfaces heutzutage gibt.

Das alles sind ja gerade die Vorteile der Interfaces.
Man kann sich diese verbauen wenn man dieses gute Konzept aufweicht, eben bei Properties in Interfaces.
Getter/Setter Methoden einer Property gehören zur Klasse der implementierenden Methoden, sie sind nicht abstrakt noch losgelösst sondern implementieren konkret die Funktionalität zu einer deklarierten Property, ergo sie exportieren Delphitypische Sprachkonstrukte. Damit widersprechen sie dem Konzept der vollkommenen Abstraktion die Interfaces erreichen sollen.

Klar soweit ?

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#27

Re: Merkwürdiger Source Code? Kann mir das jemand erklären?

  Alt 19. Mär 2007, 16:02
Zitat:
joo, es war ja nur weil da vorne wer meinte man habe auf alle lokalen Variablen Zugriff ... und dem ist ja nicht so ^^
Ich weis es ist aber ein gutes Beispiel an dem man zeigen kann was "Sichtbarkeit" bedeutet und wie man es als Instrument für besseren Sourcecode aktiv einsetzt. Man deklariert also nur diejenigen Variablen vor einer Funktion die diese auch nutzen darf. So verhindert man planmäßig Fehler.

Und um "Sichtbarkeit" als Instrument für guten Sourcecode gehts hier in der Diskussion:

Sichtbarkeit bei:

- Funktionen, sprich "nested Functions" als die am unsichtbarsten modularen Konsrukte der MP
- Interfaces und die Sichtbarkeit von nicht abstrakten Getter/Setter Methoden durch die Verwendung von Proprties in der OOP

Gruß hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#28

Re: Merkwürdiger Source Code? Kann mir das jemand erklären?

  Alt 19. Mär 2007, 16:11
Wenn ich die Properties bei Interfaces entwickeln sollte dann so:

Delphi-Quellcode:
type
  IMyInterface = interface
    function XYZ: HResult;

    property Name: INameProperty;
  end;

  INameProperty = interface(IAbstractProperty)
    function Getter: Variant; default;
    function Setter(Variant); default;
  end;
Dh. im IMyInterface wird keinerlei Aussage darüber getroffen wie die Property Name real zu implementieren ist. Es seht nur der Typ der Property drinnen und selbst dieser könnte abstrakt sein, sprich Variant.

Das implementieren Property Interface könnte nun separat impelemntiert werden oder auch gleich von der selben Klasse die auch IMyInterface impleentiert. Auf alle Fälle ist alles abstrakt deklariert im Interface und um Abstraktion geht ja dabei.

Es gibt aber schon andere Wege über TypeLibs, dispatchable Interfaces IDispatch und den ganzen Kram. Damit versucht man im Grunde exakt das zu machen. Dh. es gibt schon klare Standards wie man eine Property über dispid und TypeLibs in ein Interface deklariert. Das unterscheidet sich natürlich vom Delphi Property Konzept.

Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz