Diese Frage konzentriert sich hauptsächlich darauf, wie Code während der Entwicklung verwaltet wird, wodurch er sehr anpassungsfähig ist. Lassen Sie mich dies anhand dieses Beispiels erklären. "Ich werde Kopfgeld hinzufügen, wenn ich muss".Sortieren basierend auf mehreren CSS-Klassen und Entwerfen von Code mit Jquery
Unser Server ist für Speicher reserviert und wir schieben eine Menge Sortierarbeit mit Javascript/Jquery auf die Client-Seite, um diese Probleme zu lindern. Hier ist die Geige, wenn Sie mitkommen möchten. https://jsfiddle.net/ydc6ywuz/23/
Das Problem kommt mit diesem Code.
var sortSubSite = $('.AccessSitesLinks.False');
var subArr = sortSubSite.map(function(_, o){
return {
t: $(o).text(),
h: $(o).attr('href'),
c: $(o).attr('class')
};
}).get();
sortSubSite.each(function(i, o) {
var classList = $(o).attr('class').split(/\s+/);
$('.ContainingBox.AccessSitesLinks.True.'+ classList[2]).append($(o));
$(o).wrap("<div class='ContainingBox2'></div>");
$(o).text(subArr[i].t);
$(o).attr('href', subArr[i].h);
$(o).attr('class', subArr[i].c + classList[2]);
});
Jede Home
Website wird AccessSitesLinks True [Num]
die Klasse haben. Alle Unterwebsites hätten also AccessSitesLinks False [Num]
. Ich verstehe, dass sortSubSite und SubSite ähnlich sind und kombiniert werden könnten, um erweiterbarer zu sein, und das ist ein Teil der Frage.
Eine neue Geschäftsanforderung besteht darin, die SubSites
alphabetisch sortieren zu können. Und hier kommt die Frage ins Spiel. Wie nehme ich diesen bestehenden Code und überarbeite ihn, um die Geschäftsanforderungen kontinuierlich zu erfüllen? Ich kann die Code-Sortierung so machen, wie ich es mit Home Sites
gemacht habe, aber das scheint nicht erweiterbar zu sein, sondern einfach eine andere Funktion zu erstellen, die direkt danach aufgerufen wird. Ich habe MOST der Variablen, Arrays und Funktionen bereits alphabetisch zu sortieren. Gibt es etwas, das mir aus Design-Perspektive fehlt? Ist es nur Unerfahrenheit, die es so macht, dass ich nicht sehen kann, wie man das richtig gestaltet?
EDIT
ich die Frage mehr klären wollen. Ja, ich erhalte das Objekt $(o)
mehrmals, und das kann ineffizient sein. Bei dieser Frage geht es mehr darum, wie das Redesign während des Codierens fortgesetzt wird, um nicht fortwährend Code zu sein.
Vielen Dank für die Eingabe. Das werde ich sicherlich tun! Das geht aber nicht um Design und Refactoring, nachdem ich schon etwas gearbeitet habe. Vielen Dank. –
Es gibt ein paar Dinge auf Anhieb ... 1) Verwenden Sie Kleinbuchstaben, Bindestrich getrennten Klassennamen (Meinungs-basierte und nichts mit der Leistung zu tun) 2) Das Markup für Ihre Listenelemente ist flach trotz Unterposten eindeutig Eltern haben, wenn gerendert? Dieses def braucht Adressierung IMHO. Warum sind sie nicht in einer Liste/Unterliste? 3) Sie müssen nicht jedes Mal das gleiche Objekt erhalten, wenn Sie darauf reagieren wollen ... versuchen Sie es mit $ (o) .text ('+'). Attr ({'href': arr [i] .h, 'Klasse': arr [i] .c}) 'statt zum Beispiel – AdamJeffers
Ich bekomme das mit' $ (o) .etc.etc 'kann effizienter sein Danke wieder, diese Frage ist mehr über Design, um Wiederverwendung von Funktionen/Vars/Arrays, in einer sich ständig ändernden Anforderungen. Und adressiere die Flachheit, der Server ist ressourcenmäßig erledigt. Dies wird geliefert und wird von hier aus sortiert. –