Re: Grundsatzfrage zum Klassen-Design

From: Immo Landwerth (mail_ignored_at_web.de)
Date: 07/30/04


Date: Fri, 30 Jul 2004 09:00:16 -0700

Carsten Posingies wrote:

> So, und jetzt mache ich eben 1:1-"Relations" zwischen Tabellen und
> Klassen daraus. 1 neues Feld = 1 neues Mitglied + 1 neuer Zugreifer
> (VS.NET-Makros bestellen schöne Grüße, sprich: "private <type> <name>"
> eingetippt, Makro aufgerufen, Zugreifer der Optik halber verschoben,
> fertig ist die Laube).

Jetzt stehe ich vielleicht auf dem Schlauch, aber was willst Du mir
damit sagen?

> > Just FMI: Was stört Dich an [Interfaces]?
>
> Ich komme, wenn ich überhaupt irgendwo her komme, dann aus der groben
> Richtung "einiges an C++" plus "reichlich viel PHP" plus "alles, was
> sonstwo nicht geht, geht in 'C'". Außerdem leide ich schon seit
> VB6-Zeiten unter Interfaces. Interfaces haben für mich dort einen
> (undebattierbaren) Sinn, wo es um Versionskontrolle geht. Aber dieses
> laufende "ich definiere mal ein Interface, damit der Compiler
> rumnörgelt, wenn ich irgendwas, entspannt und zugekifft, wie ich bin,
> implementiere, was eigentlich anders sein sollte..." geht mir tierisch
> auf den Zünder.
>
> Sagen wir es mal so: Wer nie in PERL programmiert hat, mag an
> Interfaces (d.h. dem Gequengele des Compilers) hängen. Wer es hat,
> sollte um den Segen von regulären Ausdrücken wissen -- und sollte
> über das Feature des Editors, reguläre Ausrücke zum Suchen von
> Quellcode-Zeilen zu benutzen, informiert sein. Zwar sind die
> regulären Ausdrücke vom VB.NET nicht gerade "Industrie-Standard"
> (weil das die von PERL sind, believe it or not), aber sie
> funktionieren. Mit ein wenig Geduld und Gelassenheit gegenüber dem
> M$'schen Charme kriegt man das in den Griff und baut eben so lange an
> den Regex-en rum, bis sie stimmen -- oder steigt parallel zu allen
> Segnugen vom VS.NET auf einen andere Editor um, der vernünftigte
> Regex-en versteht (TextPad z.B.).

Harter Tobak.

Also zum einen sind Interfaces für mehr als nur Versionierung bzw.
Validierung durch den Compiler gut. Ich hatte zwar in meinem letzten
Posting den Fokus stärker auf letztes gelegt, aber das ist nicht der
einzige "Gag" an Interfaces.

Natürlich arbeite auch ich mit Regulären Ausdrücken, schon lange bevor
ich zu VisualStudio oder .NET kam.

Aber Dein Posting erweckt den Eindruck, man brauche keine Interfaces,
sofern man mit regulären Ausdrücken umgehen kann. Und das ist einfach
nur großer Käse.

> > Für die meisten Projekte wäre das allein schon ein Fortschritt.
> > Die meisten befüllen die Tabellen schließlich direkt aus den
> > Event Handlern der GUI :)
>
> Aua. Wieder ein tolles Feature vom VS.NET: "DataBinding"! Wie sprach
> jener Song-Text von Kate Bush: "'What say you, good people?!' --
> 'Guilty! Guilty! Guilty!' - 'Yes... burn! Burn, which, burn!'"

Ja. :) Aber das haben viele Leute unter Delphi und VB lange Zeit zum
Volksport gemacht...

> > Exakt. Das Problem an solchen Änderungen ist ja oftmals gar
> > nicht, dass es sich durch alle Tiers ziehen, sondern dass man
> > nicht alle Stellen enstsprechend der Änderung anpasst. Das liegt
> > i.d.R. schlicht daran, dass irgendwo in den Untiefen der BL (oder
> > ehrlich gesagt dem Client) SQL Statements liegen, die nicht
> > angepasst wurden.
>
> Sorry, dazu fällt mir nur ein "Ätschibätsch!" ein....

Richtig, mit einer vernünftigen Architektur (wie z.B. bei meinem
Vorschlag) wäre das nicht passiert.

> > Bei Dir wären dass auch die Klassen, die mittels Reflection
> > automagisch auf Tabellen der DB gemapped werden.
>
> Das ist richtig, aber wenn ich irren Spaß daran hätte, würde ich mir
> das als Add-On ins VB basteln (Klick auf die Tabelle, fertig ist die
> Klasse). Da ich lieber Geld verdiene, pflege ich die Konsistenz mit
> der Hand, und zwar in genau einer einzigen Source-Datei, wo ich alle
> DAL-Entity-Klassen zusammenstelle.

Natürlich kannst Du das so machen, aber damit bist auf _einen_
bestimmten Datenprovider festgenagelt.

BTW, SP wirst Du so auch nicht in den Griff bekommen - aber das willst
Du ja auch gar nicht :)

> > Das Hauptproblem an solchen Abhängigkeiten liegt darin, dass man
> > sie nur durch gründliche Source Recherche oder per "Ups!"-Effekt
> > zur Laufzeit findet. Sie sind nicht durch den Compiler zu finden.
>
> Gut, das zu wissen. Mir ist der Compiler als Source-Debugging-Tool
> nämlich ausgesprochen suspekt...

Tatsächlich? Mir ist es lieber der Compiler sagt mir vorher das etwas
nicht funktionieren wird, als wenn ich es selbst zur Laufzeit finden
muss...

> > Zugegeben, der Code innerhalb der Manager, ist natürlich nicht
> > ohne weiteres durch den Compiler kontrollierbar (SQL im String),
> > weswegen ich auch stark auf SPs baue.
>
> Ich baue lieber auf die Akribie des Entwickels. Wer damit nicht leben
> kann, nunja...

Meiner einer baut lieber darauf, dass ich weiß, dass ich Fehler mache
und immer machen werde. Also versuche ich lieber die Fehlerquellen zu
minimieren statt darauf zu hoffen, dass ich akribisch genug sein werde.

-- 
Immo Landwerth - Visual Studio 2003 - C# - XanaNews 1.16.3.1


Relevant Pages

  • Re: Grundsatzfrage zum Klassen-Design
    ... Dass, wenn sich Tabellen ändern, sowohl Du als auch ich in den Code ... Sicherlich haben Interfaces ihren Zweck. ... den Compiler zum Generieren von Fehlermeldungen zu bewegen. ... weil mich SPs nun endgültig auf eine DBE festnageln. ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Apple IIGS ROM 1 or ROM 3, which is better?
    ... of the *simple* indirection cost can be amortized, but compiler ... and every methodology has a terrible dark side. ... code with firm interfaces allowing isolation and factorization. ... the most demanding design activities. ...
    (comp.sys.apple2)
  • Re: Grundsatzfrage zum Klassen-Design
    ... VB6-Zeiten unter Interfaces. ... >> darüberhinaus Deine Klasse MyEmailManager! ... > nicht alle Stellen enstsprechend der Änderung anpasst. ... Sie sind nicht durch den Compiler zu finden. ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: object system...
    ... for example, my C compiler, for x86-64, emits mangled names. ... we use interfaces against instances / objects, ... Each node participates in three lists. ... Anyway it is not a language popularity contest. ...
    (comp.object)
  • Re: Check a radio button
    ... building systems, which is that you have to keep the compiled code consistent with the ... Key here is that you are thinking that you can enhance interfaces without rebuilding the ... of bugs would simply be due to compiler changes. ...
    (microsoft.public.vc.mfc)