Michael Schröpl: | MySQL Seiteninterne Suchmaschine - aber wie?

Beitrag lesen

Hi Mathias,

Erst _nachdem_ Du das festgelegt hast, kannst Du
damit _anfangen_, eine entsprechende Lösung zu
realisieren

IMHO denkt man nach einiger Zeit genug strukturiert,
dass man bei kleinen Programmen (wie in diesem Fall)
die Vorüberlegungen schon in einem Arbeitsgang mit
dem Schreiben des Codes erledigt.

Das glaube ich nicht. Dir wird die Spezifikation vielleicht nicht mehr als separater Schritt bewußt - aber sie muß abgeschlossen sein, bevor Du das Ergebnis der Spezifikation implementierst.

Man hat meist schon automatisch ein Flussdiagramm
im Kopf, man stellt sich die verschiedenen Eingaben
und die Reaktionen des Programms darauf vor

Letzteres _wäre_ diese Spezifikation. Genau die fehlte aber.

Mit dem Markup für das Eingabeformular, welches eine
Suche nach zwei Kriterien zulässt (zusätzlich kann
der Benutzer UND oder ODER wählen),

Genau. Du hast (implizit) spezifiziert, daß Du die
Beschreibung, wie die Terme zu interpretieren sind,
 1. dem Benutzer überläßt und
 2. dies in einem separaten GUI-Element durchführst,
also _nicht_ durch eine spezielle Syntax _innerhalb_ des Eingabefeldes für die Suchbegriffe.
Genau das ist die Design-Entscheidung, die _vor_ der Umsetzung in HTML-Code gefallen ist.

Hättest du mir geraten, mir erst einmal großartig
auszudenken und auf Papier zu notieren, was ich
überhaupt vorhabe, bevor ich auch nur die erste
Codezeile schreibe, hätte ich deinen Rat wohl nicht
befolgt, da es mir zuviel Aufwand für ein solch
kleines Programm ist,

Dem kann ich mich nicht anschließen.

Der vorherige Absatz _ist_ diese Spezifikation.
(Der Design-Prozeß dauert vielleicht eine Minute.)
Aber es ist einfach arbeitsmethodisch wichtig, sich der Abgängigkeit der einzelnen Schritte bewußt zu sein.

Vielleicht ist es einfach so, dass man bei einem
vergleichsweise unkomplizierten Programm sofort in
Anweisungen und Kontrollstrukturen denken kann.

Davor kann ich nur warnen.

Eine "einklagbare" Aufgabenstellung ist für jeden Implementierungsvorgang eine lohnende Investition.

Für ein Programm, das nur Du selbst verwenden willst, hast Du diese Aufgabenstellung im Kopf - aber jeder andere Anwender, der jammert, daß Dein Programm "nicht funktioniert", dem wirst Du Deine Aufgabenstellung unter die Nase halten können und sagen: "Es funktio-
niert innerhalb der definierten Parameter".

Im Falle von Phil ist der Hinweis es gerechtfertigt
(es weiß anscheind wirklich nicht, was er will bzw.
denkt nicht in Kategorien der technischen
Machbarkeit), es klingt nur ein wenig
oberlehrerhaft, auch wenn du vollkommen recht hast.

Der letzte Teilsatz sagt mir zu. ;-)
Wenn ich dafür die "Cheatah-Krankheit" auf mich nehmen
muß, dann soll es wohl so sein.

(Das gilt natürlich nicht, wenn man für andere
lesbaren Code schreiben muss

Es reicht schon, wenn andere (Kunden!) Dein Programm
auch nur _benutzen_ wollen.
Der Begriff "funktioniert" muß dann eine definierte
Bedeutung haben - andernfalls ändert der Kunde diese
Bedeutung so lange, bis Deine Firma pleite ist.

Die von dir genannte Vorgehensweise gehört m.E. zu
den Grundlagen beim Erlernen von dem Erstellen von
Programmen bzw. generell automatisierten Abläufen.

Eben - und dies zu vermitteln ist mein Beitrag zur
"Energie des Verstehens" in diesem Portal.

Ich wollte nur anmerken, dass man als
Fortgeschrittener viele Arbeitsschritte kombiniert.
Vorüberlegungen sind toll, aber damit ein Programm
läuft, bedarf es so oder so einer Umsetzung. ;)

Aber für die Entscheidung, ob man ein Programm über-
haupt zu realisieren _versucht_, bedarf es einer
Vorüberlegung. Diese verhindert, daß man sich an
Projekten versucht, die bei genauer Betrachtung von
vorn herein zum Scheitern verurteilt sind.

Klassisches Beispiel: "Wie schütze ich meine Bilder
davor, kopiert zu werden?" Möchtest Du das erst aus-
probieren, oder möchtest Du lieber vorher nachdenken?

Vor allem wenn diese Umsetzung keine Herausforderung
darstellt, wie es hier der Fall ist,

Jetzt tust Du dem Fragesteller aber Unrecht.

Ob etwas eine Herausforderung darstellt oder nicht,
das hängt immer von dem aktuellen Kenntnisstand des
Ausführenden ab. Gerade weil ich ihm in dieser Hin-
sicht etwas weniger zutraue als Dir, bin ich bei ihm
detaillierter darauf eingegangen, wo er seinen Arbeits-
prozeß verbessern sollte - und das betrifft _nicht_
den Programmier-Skill.

Ich denke einmal, wenn man professionell Software
schreibt, treffen meine Überlegungen nicht zu, aber
hey, Phil will "nur" ein kleines Suchskript für
seine Seite basteln, das muss nicht perfekt sein,

Aber er muß seinen Anwendern vermitteln, wie diese es
bedienen sollen! Wie kann er das tun, wenn er selbst
sich darüber noch gar nicht im Klaren ist?

Viele Grüße
      Michael