Was ist hardcodeing - hard coded - hardcode?
kurz gesagt, ist hardcodeing etwas,
das man als Progrmmierer tunlichst vermeiden sollte.
Es gibt wenige Ausnahmefälle, wo man Hardcodeing betreiden kann.
Aber letztendes ist das unprofessionell
und verursacht einen Code, der schlecht zu lesen, zu warten
und für andere Programmierer schlecht zu verstehen ist.
Hardcodeing in Programmen und Applikationen
kann die Suche, nach der Fehlerursache immens erschwerden.
Oder man benötigt viel Zeit, um alle Änderungen auf allen hard-coded-Seiten zu machen.
Im Grunde handelt es sich beim Hardcodeing,
um feste Parameterwerte die im Script deklariert werden.
Jedoch sollten die Parameter zur Laufzeit dynamisch initalisiert werden,
besonders dann, wenn die Parameterwerte mehrfach,
auf verschiedenen Seiten verwendet werden.
Hier ein Beispiel von Hardcoding - hard coded
Irgendwo auf einer dynmischen Webseite,
gibt es eine Abfrage,
wenn der Benutzer Deutsche Sprache gewählt hat,
dann nutze "Hallo Welt!"
wenn aber Englisch gewählt wurde,
dann nutze "Hello World"
String sBegruesung = ""
If(language.equals("DE"){
sBegruesung = "Hallo Welt!";
} else if(language.equals("EN")){
sBegruesung = "Hello World";
}
Wenn nun die gleiche Übersetzung auch auf anderen Seiten angewendet wird, initalisiere ich überall den Parameter mit dem gleichen Wert, als text-string (Hard coded).
Möchte ich aber aufeinmal für die Deutschsprachigen,
anstelle von "Hallo Welt" nun "Guten Tag" anzeigen,
muss ich diese Änderungen auf allen Seiten und Codefragmenten ändern.
Das ist mühselig und man kann leicht eine Seite übersehen.
Wie man Hardcodeing vermeiden kann
das ist nur ein Beispiel zur vermeidung von Hardcode,
(man könnte das auch noch eleganter lösen...)
String sBegruesung = ""
If(language.equals("DE"){
sBegruesung = getFromMainClass("DE");
} else If(language.equals("EN"){
sBegruesung = getFromMainClass("EN");
}
Die Parameter müssen dynamisch, also zur Laufzeit generiert werden.
Am besten verwendet man dazu eine Datenbank, Datenquelle oder eine andere globale Klasse.
Wo globale Parameter der Applikation deklariert und fest initalisiert wurden.
Die jeweiligen Unterseiten (Webseiten) greifen dann immer auf die gleiche Datenquelle zu,
so, dass ich den String-Wert nur einmal (zentral) ändern muss.
Softcodeing im Gegenzug, gibt es leider nicht
Die wörtliche Übersetzung von Hardcodeing oder Hardcode,
ist also eher "festgeschrieben" und nicht "hart geschrieben".
Hardcoded steht also für statische Programmierung,
anstelle von dynamischer Parameter initalisierung.
Anstelle des Wortes Softcodeing,
würde ich besser dynamic-codeing nutzen:
- Hardcodeing = static-codeing
- Softcodeing = dynamic-codeing
static variable oder static class
weiterführend sollte man dazu auch statische Variablen in einer statischen Klasse verwenden.
public static String sGreetDE = "Hallo Welt!";
Diese statisch deklarierten und initalisieren statischen Parameterkann man auch nicht direkt in einer Klasse deklarieren.
Die sind fest geschrieben (hardcoded) und sind Global verfügbar.
Und können auch nicht mehr überschrieben werden. Und das muss in diesem Falle auch so sein.
Ein sinnvoler Nutzen für solche static Variablen
ist zum Beispiel der Connection-String für die Datenbank.
Also alle Werte, die eindeutig sind
und sich niemals zur Laufzeit ändern.