Entwurfsprinzip [1]

Beim erstellen von CFCs sollten alle Funktionen (Methoden) die gleich bleiben in der Haupt-CFC abgelegt werden und alle Funktionen die sich ändern könnten in entsprechende CFCs ausgelagert werden.

Grundlegende Funktionen einer Loginroutine sollten so zb. in einer login.cfc liegen und erweiterte Funktionen wie zb. eine evtl. Mandatenauswahl innerhalb der Loginmaske in eine login_mandant.cfc ausgelagert (gekapselt).

Somit ist gewährleistet das die Grundfunktionen von verschiedenen Applikationen genutzt und so unter anderem nach und nach optimiert werden können.

,

Entwurfsmuster: sperr Dich nicht ein

Nach mehreren gefrusteten Anläufen in Form von Büchern, Internetforen und Tipps von Profis habe ich festgestellt das Entwurfsmuster (DesignPattern) durchaus Sinn machen 😉 Genau erklären kann es aber dann doch keiner so richtig.
Entwurfsmuster sind ist auch komplett unabhängig von der Art der Programmiersprache, was die Sache (meiner bescheidenen Meinung nach) nicht gerade einfacher macht.

Hier nun der Versuch einer Erklärung von Entwurfsmuster :

Stellen wir uns einmal vor wir wären ein Handwerker der einen Zimmerboden verlegen will.
Hierbei ist es völlig gleich, ob mit verlegen nun das verlegen des Bodens mit Teppich, Fliesen, Holz, Kork, Granit oder einfach nur mit Farbe bestreichen gemeint ist.
In jedem Fall könnten wir ein von mir frei erfundenes Entwurfsmuster anwenden (*hm*, vielleicht gibt es das sogar schon?), nämlich das "sperr Dich nicht ein"-Muster.

Das Entwurfsmuster "sperr Dich nicht ein" bedeutet folgendes:
Wenn man einen beliebigen Raum mit beliebigem Material verlegt, sollte man immer an der Ecke des Raumes mit dem verlegen beginnen, die gegenüber einer Zimmertür liegt. Denn wenn man fertig ist mit dem Verlegen sollte man den Raum ja auch wieder verlassen können, ohne über den frisch gestrichenen Fussboden laufen zu müssen. Logisch, oder?
OK, beim Teppichboden könnte man unter Umständen ‘drüber laufen, wenn er nicht gerade weiss ist und man zuerst die Schuhe auszieht.

Jetzt werden ein paar Jungs wieder sagten: "Mann, das ist ja wohl loooogisch?!".
Nein, das ist es eben nicht, sondern das ich Fachwissen das man sich entweder unter Handwerkern weiter erzählt bekommt, oder man hat sich selbst schon mind. einmal in diese blöde Situation gebracht und daraus gelernt.
Beim verlegen eines Fussbodens könnte man auch durch etwas Nachdenken darauf kommen, weil man den Raum vor sich sieht und sich das ganze verlegen etwas vom Ablauf her vorstellen kann.

Wenn es aber um komplexe technische Zusammenhänge geht, dann wird das ziemlich schwierig bzw. sehr anstrengend, weil man sich eben nicht so einfach komplexe Vorgänge vorstellen kann.

In der Regel ist es ja auch so, dass man erst einmal das Problem an sich verstehen muss um ein Entwurfsmuster anwenden zu können. Also in unserem Fall das verlegen eines Fussbodens. Das Problem oder die Problematik einer komplexen Geschäftslogik erst einmal zu verstehen ist schon recht schwierig und erst wenn man das verstanden hat kann man überlegen ob es für diesen Fall evtl. ein Entwurfsmuster gibt, nachdem man vorgehen kann, um sich eben "nicht aus bzw. einzusperren".

Wenn man in einem Team arbeitet, hat ein Entwurfsmuster noch weitere Vorteile:
1. kennt ein Kollege bereits das Problem und evtl. auch ein dazu passendes Entwurfsmuster, dann kann man das Problem wesentlich besser verstehen, weil man ja das unter Umständen das Entwurfsmuster dazu bereits kennt oder bekannt gibt
2. Wenn alle im Team ein paar Entwurfsmuster kennen, dann spricht man sie gleiche Sprache und kann evtl. weitere Lösungsvorschläge viel besser besprechen

Auch ist es oft so das man nicht nur ein Entwurfsmuster anwenden kann, sondern gleich ein paar Entwurfsmuster auf einmal, je nach Problemstellung.

Abschliessend ein paar Bücherlinks und einen auf Wikipedia über Entwurfsmuster :
Patterns kompakt. Entwurfsmuster für effektive Software-Entwicklung.
Entwurfsmuster von Kopf bis Fuß
Design Patterns. Elements of Reusable Object-Oriented Software.

Eines darf hierbei auch nicht fehlen! Anti Patterns

,

Dr. Web: Die Welt ist ein Dorf

ColdFusion setzt sich mittlerweile auch in deutschen Firmen immer mehr, als echter JAVA-Applicationserver, für dynamische Web-Seiten durch.
Mehrsprachigkeit in ColdFusion wird zwar serverseitig sehr gut unterstützt, ist aber im täglichen Umgang doch recht umfangreich.
Es geht aber auch einfacher.

Hier der Link zu meinem Artikel auf Dr. Web

,

Tragik des Lebens

Ein männlicher Briefmark erlebte was Schönes, bevor er klebte.
Er war von einer Prinzessin beleckt.
Da war die Liebe in ihm geweckt.

Er wollte sie wiederküssen, da hat er verreisen müssen.
So liebte er sie vergebens.
Das ist die Tragik des Lebens!
(J. Ringelnatz)

Nichts ist tückisch…

…wenn man einfach davon ausgeht.

Der Umgang mit NULL-Zuständen in Datensätzen ist zwar sehr erstebenswert, da Speicherplatz gespart wird und die Datenbank ordentlich aufgeräumt bleibt. Birgt aber im Gegenzug auch logische, hinterhältig tückische und teilweise sogar komplett falsche Ergebnisse.

NULL Werte in Datenbanken bzw. Felder sind undefinierte Werte bzw. Zustände. Bei Fragen die mit Ja oder Nein, also 0 oder 1, bzw. true oder false beantwortet werden sollten, könnte auch eine legitime Antwort vielleicht sein. Also ganz einfach unentschlossen. Das heißt, dass der Inhalt eines Feldes kein Fisch und kein Fleisch sein muss. Bei einfachen Fragen und in diesem Beispiel nur max. 3 möglichen Antworten ist es noch recht übersichtlich und logisch. Besteht eine Frage aber aus mehreren Antwortmöglichkeiten die zur Auswahl stehen und zusätzlich noch eine Antwort “sonstiges”. Kann eine korrekte Auswertung schon einiges schwieriger werden. Besonders wenn es sich um ein Datum oder um einen Betrag als Antwort handelt. Hier nun das Beispiel in Bezug auf einen gewünschten Termin:

Wenn Sie einen Termin an einem bestimmten Tag haben, sagen wir an einem 06.11.2002, und 14 Tage später ein Termin zur Wiedervorlage haben möchten, dann wäre dieser Wiedervorlagetermin der 20.11.2002. Ist aber ein Termin noch nicht genau festgelegt bzw. definiert also NULL, so können sie keine 14 Tage hinzurechnen, denn dann wäre der Termin der Wiedervorlage nach wie vor undefiniert.

Daher ist es nur bedingt möglich, automatisiert zb. einen Weidervorlagetermin zu errechnen.

[br/] in cfEclipse

Die Tastaturbelegung für ColdFusion in Eclipse ist eine nervige Sache, wenn man nicht genau weiss, was man wo einstellen muss.
Ich möchte kurz zeigen wie man das [br] auf die Taste [ctrl+enter] legt:

Im Hauptmenu unter /Window/Preferences/ erscheint die Baumstruktur in der man folgendes auswählen muss /General/Keys/ .
Danach aktiviert man das Reiterchen: /Modify/ und dort sollte unter [Scheme]="default" bereits ausgewählt sein. Ebenso sollte im Bereich /command/ unter [category]="CFML Editor" der CFML Editor als Editor bereits ausgewählt sein und andernfalls eben so ausgewählt werden.
Anschliessen wird dann im Feld [name]="Insert br tag" ausgewählt.
In den beiden Listen /assignment/ sollten dann alle bereits zugeordente Einträge gelöscht werden, in dem man den oder die Einträge einzeln selectiert und dann durch den Button [remove] entfernt.
Im Bereich [Key Sequence] auf dem dem Eintrag [Name] klicken und dort den bestehenden Eintrag (akt. ShortCut) leeren und die gewünschte Tastenkombination (in diesem Fall zb.) [Ctrl+Enter] drücken.
Im Feld [When] auf der Ebene von [Scheme] darauf achten das [When]="Editing Text" ausgewählt ist und danach auf den Button [ADD] klicken um die nun definierte Tastenkombination hinzuzufügen und die Maske mit [OK] verlassen.

Die gleiche Vorgehensweise dann zb. mit [name]="Insert nbsp Entity Refrerence" und der Tastenkombination [Ctrl+Space] zuweisen.

Bei Bedarf zb. auch gleich [name]="Insert Comment" der Tastenkombination [Ctrl+M] zuweisen.

Wo die eigentlichen Codes abgelegt werden die dann beim ShortCut ausgeführt werden, weiss ich leider auch noch nicht, denn mich stört das immer ein [Leerzeichen] an das BR und an das NBSP autom. angehägt werden.