Questa domanda si concentra principalmente su come gestire il codice mentre lo si sta sviluppando, rendendolo altamente adattabile ecc. Lasciatemi spiegare attraverso questo esempio e avrà più senso. 'Aggiungerò taglie, se ne avrò bisogno'.Ordinamento basato su più classi CSS e progettazione di codice con Jquery
Il nostro server è a corto di memoria, e stiamo spingendo un sacco di lavoro di smistamento sul lato client con Javascript/Jquery, per alleviare questi problemi. Ecco il violino se vuoi seguirlo. https://jsfiddle.net/ydc6ywuz/23/
Il problema si presenta con questo codice.
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]);
});
Ogni sito Home
avrà la classe AccessSitesLinks True [Num]
. Quindi tutti i suoi siti secondari avrebbero AccessSitesLinks False [Num]
. Capisco che sortSubSite e SubSite sono simili e potrebbero essere combinati per essere più estendibili, e questo è parte della domanda.
Un nuovo requisito aziendale è poter ordinare in ordine alfabetico lo SubSites
. Ed è qui che entra in gioco la domanda. Come posso prendere questo codice esistente e refactoring per soddisfare continuamente i requisiti aziendali? Posso rendere il codice molto simile a quello che ho fatto con Home Sites
, ma questo non sembra estensibile, ma solo creando un'altra funzione da chiamare subito dopo. Ho MOST delle variabili, matrici e funzioni per ordinare in ordine alfabetico già. C'è qualcosa che mi manca dal punto di vista del design? È solo l'inesperienza che lo sta rendendo così che non riesco a vedere come progettarlo correttamente?
EDIT
voglio chiarire la questione più. Sì, sto ottenendo l'oggetto $(o)
più volte e questo può essere inefficiente. Questa domanda è più su come ridisegnare mentre la codifica continua a non essere continuamente un codice pezzo-pasto.
Grazie per l'input. Lo farò sicuramente! Tuttavia, ciò non si riferisce alla capacità di progettare e refactoring, dopo aver già fatto un po 'di lavoro. Grazie. –
Ci sono un paio di cose da fare ... 1) usare i nomi di classi separate da trattino e lettere minuscole (opinioni basate e niente a che fare con le prestazioni) 2) Il markup per le voci dell'elenco è piatto nonostante i sottotemi che hanno chiaramente i genitori quando sono resi? Questa def ha bisogno di affrontare IMHO. Perché non sono in qualche lista/sottolista? 3) Non è necessario ottenere lo stesso oggetto ogni volta che vuoi agire su di esso ... prova '$ (o) .text ('+'). Attr ({'href': arr [i] .h, 'class': arr [i] .c}) 'invece per esempio – AdamJeffers
Ho capito che fare usando' $ (o) .etc.etc' può essere più efficiente Grazie ancora, questa domanda riguarda più il design, attorno alle funzioni di riutilizzo/vars/array, in un fabbisogno in continua evoluzione. E affronta la piattezza, il server è fatto risorsa saggio. Questo è ciò che verrà consegnato e sarà ordinato/costruito da qui. –