Was soll das?

Enumerator

Mitglied Kamel
Moin!

Bisher von einiger Zeit dachte ich, ich würde mit Profis zusammen arbeiten. Dann hab ich den Fehler gemacht, mal die Sources aus anderen Bereichen unserer Firma anzusehen...
Ich habe nur eine Frage zu dem unten stehenden Code: WTF?
Code:
function ReqParameters(){
  this.result = new Array();

  this.addParameter = function (key, value) {
    var i = this.result.length;
    for(var k = 0; k < i; k++) {
      if(this.result[k].key == key){
        this.result[k].value = value;
        return;
      }
    }

    this.result[i] = new Object();
    this.result[i].key = key;
    this.result[i].value = value;
  }

  this.readParameter = function(key){
    for(var k=0; k < this.result.length; k++) {
      if(this.result[k].key == key)
        return this.result[k].value;
    }
  }
}
Wäre echt nett, wenn mir jemand den Sinn erklären könnte - dann wüsste ich wenigstens, dass ich nicht träume sondern anscheinend selbst nicht qualifiziert genug bin...

Greetz
Enum

EDIT: Es wird noch besser!
Im folgenden ist CurrentPageProperties.getparameters eine Instanz des oben definierten Typs:
Code:
function initOptionBoxArrays(){

    var cpp = CurrentPageProperties.getparameters;
    for(var k=0; k < cpp.result.length; k++) {

        try{
        var node_var = $( cpp.result[k].key );

        var splitedkey = cpp.result[k].key.split("_");

        if(cpp.result[k].key=="f_1") {

            $("f_1_" + cpp.result[k].value).checked = true;


        } else if ((splitedkey[0] == "f") && (node_var)) {

            if(splitedkey[1] == "1") {

                node_var.value = cpp.result[k].value;

            } else {

                node_var.checked = cpp.result[k].value==1?true:false;

            }

        } else if (cpp.result[k].key=="q") {

            document.forms['hotellist_q']['q'].value = cpp.result[k].value;

        } else if (splitedkey[0] == "distanceLimit") {

            node_var.value = cpp.result[k].value;

        } else if (cpp.result[k].key=="use_distance") {

            node_var.checked = cpp.result[k].value==1?true:false;

        } else if (cpp.result[k].key=="includeAll") {

            node_var.checked = cpp.result[k].value==1?false:true;

        } else if (cpp.result[k].key == "category") {

            setStar(cpp.result[k].value, false);
        }
        }catch(e){}
    }

    // update attraction selected-option
    var o;
    if(o = $('attraction')) {
        for(var i=0; i<o.length; ++i){

            if(
                (parseFloat(o.options[i].getAttribute("longitude")) == cpp.readParameter("longitude")) &&
                (parseFloat(o.options[i].getAttribute("latitude")) == cpp.readParameter("latitude"))
              ) {
                o.selectedIndex = i;
                break;
            }
        }
    }
}
Da muss doch ein Sinn sein, der sich mir einfach nicht erschließt - sonst kann es einfach keine rationale Erklärung dafür geben... oder?
 
Zuletzt bearbeitet:
Hi.

In dem Objekt werden Key/Value Paare verwaltet - was man zwar auch anders machen könnte, aber wo ist jetzt das Problem?

Gruß
 
Soweit schon klar. Nur welchen Sinn soll das haben? Ich habe noch nie gesehen, dass man ein Objekt mit so etwas ähnlichem wie getter- und setter-Methoden schreibt, um damit einen Hash zu verwalten... Mal ganz davon abgesehen, dass es sich hier um Javascript handelt, und man üblicherweise versucht so wenig Source wie möglich auszuliefern (selbst mit Obfuscator ist das ziemlicher Overhead da oben, zumal die ganzen JS-Sources hier so quirky aussehen): Aus welchem Grunde sollte man anstelle eines Hashes ein Array aus Objekten verwenden? Und dann auch noch die Rechenzeit zum Durchlaufen in Kauf nehmen? Und warum weren ebendiese setter und getter nur in Ausnahmefällen angewandt?
Da ich für gewöhnlich kein JS schreibe, hatte ich gehofft es gäbe wenigstens eine tolle Erklärung nach dem Motto "der IE ist sonst zu blöd für dies und das" - aber das scheint ja nicht der Fall zu sein...
 
der IE ist sonst zu blöd für dies und das

Naja, vielleicht nicht der IE, aber wer weiss schon, von wann dieser Code ist und welche Browser dort berücksichtigt wurden.

zum Bsp. das erste Bsp. ...da würde man schneller direkt auf den passenden Key zugreifen und eventuelle Fehler per try/catch abfangen....try/catch kannte aber Netscape4 nicht, und so lange ist das noch nicht her, dass der berücksichtigt wurde.

OK, man könnte dann immer noch typeof nutzen, aber frag doch am Besten mal in der Abteilung nach, was es damit auf sich hat (natürlich mit Fingerspitzengefühl :))
 
Das habe ich vor, nur ist das am Wochenende schwierig. Da ich mich kenne und weiß, wie wenig Taktgefühl zu erwarten ist, hatte ich gehofft ich finde die Erklärung bevor ich die Damen und Herren der ServerKillerAbteilung befrage - auf meine Art... ;-]
Da ich allerdings die Richtlinien verfasse, mit welchen Browsern wir uns überhaupt noch befassen (mit einem Anteil von knapp unter 1.5% - in der Zeit als Netscape uns noch ineteressierte - lässt sich der Aufwand einfach nicht rechtfertigen...) und unser CTO nur blind abzeichnet, kann ich Deinen Ansatz leider nicht gelten lassen. Schlimmer noch, wenn dem so wäre würde das bedeuten das da wer nicht spurt! :mad:

Greetz
Enum
 
Naja...vielleicht noch ein anderer Gesichtspunkt: Sie haben es einfach nicht besser hinbekommen, JS ist ja nicht gerade etwas, was man auf der UNI studiert :suspekt:
 
Meine Güte, Du ergreifst ja richtig Partei! :p
Aber mal ehrlich, ich bin mir schon der Tatsache bewusst dass JS bei Frontend-Entwicklern meist ein ungeliebtes Stiefkind ist. Zumindest bei denen die ich kenne. Umso schlimmer ist es doch, wenn man sich zuviel Arbeit macht und sinnlose(?) Typen konstruiert...

Naja, vielleicht kommen Sie diesmal um meine beliebte wenn auch unnütze Ansprache herum. Ich geb' jedem stattdessen den Auftrag, sich hier anzumelden und sich bei Dir zu bedanken. Das hast du jetzt davon.

Schönes Wochenende!
 
Naja....ist doch bald Weihnachten :)

Es ist halt so, dass ich nicht weiss, was eigentlich die Zuständigkeit der Leute ist, die das gemacht haben.

Ich habe einen Kumpel, der ist Systemelektroniker, und sein Chef wollte von ihm ein Logfile-Analysetool geschrieben haben....hat nun irgendwie nicht wirklich etwas mit seinem Beruf/Ausbildung zu Tun.
 
DAS kenne ich. Ich weiss auch nicht wie ich zum Admin geworden bin. Alles was ich konnte - nein, alles was ich wollte - war Coden...
 
Zurück