![]() |
Denkansätze (Algorithmik? richtiges Vorgehen?)
Hallo,
habe dieses Thema ![]()
Delphi-Quellcode:
- ich nehme das jetzt mal als Beispiel-Code, weil dieses Konstrukt am häufigsten "Angesprochen" wurde - würde ich gerne von den "Profis" wissen, wie man solche "Denkfehler" vermeiden kann? Vielleicht könnt Ihr eine Lösung posten und vielleicht einmal - für Anfänger und halb- bis wenigwissende wie mich - erklären, wie die vorgehensweise wäre, um so etwas zu lösen.
StrToDate(DateToStr(Now))
Ihr könnt auch ein anderes Beispiel nehmen, wenn es pädagogisch wertvoller ist - die Gedanken sind frei!!! Mich interessiert besonders, wie ich Programmierwissen richtig anwende und wie ich "denken" muss, um ein Problem zu lösen. Ich hoffe, Ihr versteht, worauf ich hinaus möchte :gruebel: An die Mods: Sollte hier etwas konstruktives bei heraus kommen, wäre es vielleicht gut, das Thema in eine andere Rubrik hinzuschieben, wo es dauerhaft erhalten bleibt. Das überlasse ich Eurem ermessen. Mit vielen Grüssen julchen [edit=Phoenix]Titel mal etwas verbessert und das ganze nach Programmieren allgemein geschoben. Mfg, Phoenix[/edit] |
Re: Denkansätze
Am Besten im Trockenen überlegen, wie man das Problem am Besten lösen kann ( z.B. auf einem Blatt Papier). Dort kann man auch einen Algorithmus auf richtige Funktion Testen ( Schreibtischtest)
|
Re: Denkansätze
|
Re: Denkansätze (Algorithmik? richtiges Vorgehen?)
Zitat:
Wer einen Datumswert in einen String konvertiert, nur um genau diesen String dann wieder in einen Datumswert zu konvertieren, der ist irgendwie merkbefreit. Natürlich funktioniert das. Nur ist 'StrToDate(DateToStr(now))' halt gleich 'now', und das kann man auch gleich hinschreiben. Genauso der ganze Quatsch wie mit
Delphi-Quellcode:
oder fast noch schlimmer
if boolscherAusdruck = true then
Delphi-Quellcode:
Was man ganz einfach mit
if boolscherAusdruck then
irgendwas := true else irgendwas := false;
Delphi-Quellcode:
machen kann.
irgendwas := boolscherAusdruck;
Man sollte bei jedem Code den man schreibt hinterher nochmal einen guten Meter bis zwei nach hinten gehen, sich das in seiner Gesamtheit angucken und bei jedem Ausdruck fragen: Macht das wirklich Sinn? Ist das wirklich notwendig? Oder noch besser: Solche Ausdrücke (seien es Konvertierungen, Vergleichsoperationen etc.) mal im Kopf (oder auf Papier) vollständig auswerten. Wenn man drüber nachdenkt was man macht, dann erkennt man solche unnötigen Operationen ziemlich schnell und kann sie vereinfacht darstellen. Das macht den Code übersichtlicher und damit später leichter Wartbar. |
Re: Denkansätze (Algorithmik? richtiges Vorgehen?)
Wenn ich vor einem Problem hocke und nicht weiter weiß, hilft es mir oftmals, jemand anders (der auch programmieren kann) das Problem zu erklären. Es passiert mir dann regelmäßig, dass ich am Ende der Problembeschreibung auch die Lösung weiß. Man bedankt sich dann höflich fürs zuhören, schmunzelt über das WTF-Gesicht des anderen und geht weiterprogrammieren.
Ich denke das liegt daran, dass ich mir Mühe gebe, dem anderen das Problem möglichst verständlich zu erklären. Das dürfte ähnlich zu dem "mal ein paar Meter zurückgehen" sein, was Phoenix vorgeschlagen hat. Gruß, SirTwist |
Re: Denkansätze (Algorithmik? richtiges Vorgehen?)
Das war ja auch mein Ansatz. Eine Lösung unabhängig vom Computer um zuerst einen allgemeinen Lösungsnsatz zu entwickeln.
|
Re: Denkansätze (Algorithmik? richtiges Vorgehen?)
Zitat:
In einer anderen Programmierumgebung verwende ich manchmal ein ähnliches Konstrukt: FloatToInt(IntToFloat(Zahl)) Auf den ersten Blick reichlich dämlich, ABER bei der Konvertierung IntToFloat werden Buchstaben/Zeichen ausgefiltert. Ich erhalte also IMMER mindesten 0 (null) als Rückgabe. Null führt bei der Berechnung zwar nicht zu einem Sinnvollen Ergebnis, verhindert aber den Absturz. Was in einer Programmierumgebung, in der es kein try except-Konstrukt gibt, schon Sinn macht. |
Re: Denkansätze (Algorithmik? richtiges Vorgehen?)
Now ist aber definitv ein korrekter DateTime-Wert
|
Re: Denkansätze (Algorithmik? richtiges Vorgehen?)
stimmt, aber dieser Vor-Zurück-Konvertiererei ist in diesem Thread doch nur ein Beispiel für (angeblich) unsinnigen Code.
|
Re: Denkansätze (Algorithmik? richtiges Vorgehen?)
Hi!
Zitat:
Ciao, Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz