Was bedeutet hardcodeing - hard coded - hardcode? ...und was ist Softcodeing? static variable oder static class

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 Parameter
kann 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.


Comments

No comments yet.

Add Comment

* Required information
(never displayed)
 
Bold Italic Underline Strike Superscript Subscript Code PHP Quote Line Bullet Numeric Link Email Image Video
 
Smile Sad Huh Laugh Mad Tongue Crying Grin Wink Scared Cool Sleep Blush Unsure Shocked
 
1000
Enter the last letter of the word satellite.
 
Enter answer:
Captcha
Refresh
 
Enter code:
 
Notify me of new comments via email.
 
Remember my form inputs on this computer.
 
I have read and understand the privacy policy. *
 
I have read and agree to the terms and conditions. *
 
 
Powered by Commentics