La separazione tra logica di programmazione e livello di presentazione è eccessiva?

7

In una guida alla programmazione di Drupal , ho notato questa frase:

The theme hook receives the total number of votes and the number of votes for just that item, but the template wants to display a percentage. That kind of work shouldn't be done in a template; instead, the math is performed here.

La matematica necessaria per calcolare una percentuale da un totale e un numero è (number/total)*100 . Questa applicazione di due operatori aritmetici di base all'interno di uno strato di presentazione è già troppo? La manutenzione dell'intero sistema è gravemente compromessa da questa quantità di matematica?

Il WPF (Windows Presentation Framework) e il suo linguaggio di markup dell'interfaccia utente, XAML, sembrano andare a simili estremi. Se cerchi di aggiungere due numeri nella vista (il livello di presentazione), hai commesso un peccato capitale. Di conseguenza, XAML non ha operatori per alcun tipo di aritmetica.

Questa separazione ultra-rigorosa è davvero il santo graal della programmazione? Quali sono i guadagni significativi da ottenere dalla separazione a tali estremi?

    
posta Timwi 16.12.2012 - 14:07
fonte

1 risposta

5

Non vedo nulla di sbagliato nel fatto che la documentazione sia un po 'pedante, specialmente considerando il pubblico di destinazione tipico, ancor più quando si tratta di modelli come i template, dato che non è esattamente raro per i non sviluppatori (artisti grafici, ad esempio) per dilettarsi con loro. Prima della tua citazione, la formulazione suggerisce che, anche se un po 'sciocco, l'esempio è usato per illustrare il concetto, non penso che gli autori volessero davvero suggerire che dovresti seguire ciecamente il loro suggerimento, ma più per fare un punto.

Inoltre, quando si tratta di documentazione rivolta agli sviluppatori PHP (e ai non sviluppatori), è quasi necessaria la pedanteria estrema, PHP ha una barriera di accesso notoriamente bassa e di conseguenza l'ecosistema è pieno di codice di merda. Non ho guardato il codice base di Drupal da anni, ma l'ultima volta che ricordo di averlo fatto, era per lo più colla super e nastro adesivo, non per Wordpress, ma ero comunque stupito che funzionasse. Mi azzarderò a indovinare e dirò che la pedanteria nella documentazione è probabilmente una conseguenza diretta dello ... non stato ideale della base di codice del progetto.

Allo stesso tempo però, fai un buon punto e la citazione che hai isolato ti sembra un po 'dogmatica. Separare la logica dalla presentazione è un principio astratto, e quindi aperto all'interpretazione e influenzato da vari vincoli. Allo stesso modo, MVC, l'espressione principale del principio, almeno nello sviluppo web, è un modello architettonico, o forse più precisamente un modello architettonico a più livelli con tre componenti principali e senza un canonico, o "puro" , implementazione. Non ci sono "Sacri Graal" in questo, poiché non ci sono "Sacri Graal" in niente nello sviluppo del software, la nostra professione è uno dei compromessi.

È pressoché impossibile dire quanto l'applicazione di due operatori aritmetici di base all'interno di un livello di presentazione influenzi effettivamente la tua applicazione, a meno che non sappiamo esattamente cosa stai costruendo e cosa esattamente dipenderà da quella matematica. La matematica dovrà cambiare in un secondo momento, ad esempio? E se sì, ti ricorderai che questo piccolo, ma forse cruciale codice di codice non è dove dovrebbe essere, due anni dopo averlo scritto? Presumo qui che tu pratichi la separazione della logica del programma e della presentazione in generale , e per questo ti sei allenato, forse involontariamente, ad aspettarti che le cose si trovino in un determinato posto.

Se sei sicuro che stai solo facendo una semplice operazione, probabilmente non cambierà mai e niente di importante dipende da esso, direi sentitevi liberi di metterlo dove volete. Certo, i puristi abbaieranno, alcuni di loro probabilmente finiranno, ma a chi importa? L'ho già detto e lo ripeto, il perfezionismo non è un obiettivo in sé , mantienilo semplice, stupido!

    
risposta data 16.12.2012 - 14:42
fonte