Mescolando JavaScript e scripting lato server

3

A volte vedo un codice come questo (in questo caso PHP e JS misti, ma potrebbe essere qualsiasi lingua lato server):

<script>
  var data = <?php echo $bigDataStructure ?>;
  // then lots more pure js with no php mixed in which can access the data variable
</script>

Che sembra un modo appropriato per passare i dati da un linguaggio di scripting lato server al JS che verrà eseguito sul client ( ignorando il fatto che una variabile globale denominata data è di per sé una nozione strabiliante ).

Ma a volte vedo anche un codice come questo (misto JS e ColdFusion in questo caso):

<script>
  if ($('#firstName').val() === <cfoutput>#query.firstName != "" ? query.firstName : query.nickName#</cfoutput>) {
    <cfif userHasPermission>
      $('#userForm').validate();
    <cfelse>
      $('#readOnlyNotice').show();
      disableForm();
      <cfif settings.auditEnabled>
        recordAccessAjax();
      </cfif>
    </cfif>
  }
</script>

dove la versione finale effettiva della logica JS è dinamica. Questo, per me, sembra che ci stiamo avvicinando allo scroscio dell'eterna puzza. Bandiere rosse a bizzeffe. Ho potuto vedere (e aver visto) questo mescolamento volgare o nullo sfuggire di mano e creare problemi di manutenzione e debug di mal di testa.

Quello che mi chiedo è se c'è un modello di design specifico che viola? O ci sono argomenti specifici che potrebbero essere fatti contro questo codice dinamico che potrei presentare come motivo per allontanarmi dalla pratica?

Nota: un'altra domanda chiede se è una cattiva pratica. Qui, presumo che sia una cattiva pratica e sto cercando ragioni specifiche per cui. Le risposte sull'altra domanda si concentrano principalmente sulla risposta "è male?" e ha aggiunto suggerimenti di altri modi per codificare l'esempio dell'OP.

    
posta jinglesthula 03.07.2017 - 20:02
fonte

2 risposte

3

La domanda qui è "perché" è una cattiva pratica.

La ragione numero uno è l'osservazione empirica per molti anni che conduce a un software che è difficile da comprendere, mantenere e cambiare. Questi sistemi chiamano colloquialmente grandi palle di fango .

Come risultato di queste esperienze, sono stati sviluppati alcuni principi per garantire che venga evitato.

risposta data 04.07.2017 - 02:36
fonte
0

Questo è un problema che non ho mai compreso fino a quando non ho iniziato a lavorare con il framework C # MVC. Non è necessariamente una "cattiva pratica", ma l'utilizzo del modello MVC rende la programmazione molto più semplice, non solo per leggere ma per scrivere.

Maggiori informazioni sul framework MVC con PHP qui.

    
risposta data 03.07.2017 - 23:58
fonte