Tecniche / procedure di programmazione standardizzate

2

Non so se questa è una domanda, o un inizio di una conversazione o anche un argomento completamente irrilevante.

Perché la programmazione non è più standardizzata?

Sono davvero nuovo in questo e trovo estremamente difficile trovare la risposta anche alle domande di base. Cose come -

  • Come faccio ad aggiungere la convalida a più texbox in asp.net c # senza utilizzare singoli controlli di convalida?
  • Come faccio ad aggiungere l'input di una texbox a un array in corso?

Sto parlando di cose fondamentali che si usano sempre. Mi aspetterei risposte come "oh sì, vedi metodo di convalida jones (link) o petbox 'textbox alla funzione array (link).

Ho solo pensato che ci sarebbero state tecniche standard, come negli scacchi, per fare cose simili.

Spero che questo abbia senso e qualcuno può indicarmi la direzione giusta se ci sono le directory delle tecniche di programmazione standard.

    
posta Dylan Jackson 28.04.2011 - 21:58
fonte

4 risposte

9

Ci sono modi "standard" di fare le cose in programmazione, così come ci sono "standard" in es. jazz.

Tuttavia, così come nessuno standard jazz verrà mai riprodotto due volte allo stesso modo, nessuna soluzione di programmazione standard verrà mai applicata due volte allo stesso modo. Il contesto, i giocatori, lo stato d'animo ha sempre un effetto su come viene improvvisato un pezzo di melodia. Allo stesso modo in cui il contesto, la piattaforma, il linguaggio di programmazione e una miriade di dettagli concreti influenzano il modo in cui una soluzione di programmazione verrà applicata questa volta.

Alcuni degli "standard" in programmazione sono chiamati modelli di progettazione , per esempio Adattatore . Altri stanno programmando idiomi , come iterando su una collezione; best practice , come Test Driven Development ; o metodologie , come Scrum . Tuttavia, ognuno di questi può essere implementato in un milione di modi diversi. La forma concreta di iterazione su una raccolta differisce in C ++ e Java. Il modo in cui Scrum viene applicato è molto diverso per un team composto da una sola persona che lavora con il codice incorporato precedente rispetto a un team di 20 persone che sviluppa un'app web aziendale greenfield. E così via.

Secondo la famosa citazione, "non c'è un proiettile d'argento" nello sviluppo del software. Tutto quanto sopra è come strumenti specifici nella propria cassetta degli attrezzi: utile quando usato il momento giusto nel modo giusto e nella giusta misura, inutile (o addirittura dannoso) altrimenti. Quindi è necessario il buon senso, il giudizio personale / di squadra e l'esperienza per utilizzare uno di questi per l'effetto migliore. Copiare alla cieca e applicarli senza la dovuta considerazione probabilmente fa più male che bene.

    
risposta data 28.04.2011 - 22:07
fonte
4

Molte cose non sono standardizzate perché ci sono tanti modi per fare la stessa cosa che potrebbe essere giusta in circostanze diverse.

Prendi il tuo innocuo esempio di validazione di più caselle di testo. Lo facciamo tutti, dovrebbe essere semplice, vero?

Bene, ti segnalo link che è un classico documento che descrive come risolvere quel tipo esatto di problema in Smalltalk usando il paradigma MVC. Gestisce una generalizzazione difficile del problema, ma presuppone che si stia lavorando in un'applicazione autonoma. Ci vorrebbe un serio pensiero per applicarlo a un ambiente web. (Quella particolare soluzione è la radice originale del paradigma Model-View-Presenter di Microsoft, che viene utilizzato per risolvere un problema molto diverso dalla convalida.)

OK, vogliamo lavorare in un ambiente web. Ci sono un sacco di stack tecnologici in un ambiente web. Piaccia o no, la convalida è strettamente legata al modo in cui organizziamo la generazione di pagine web. Il che significa che se sto usando un diverso stack tecnologico rispetto a te (in realtà, non utilizzo affatto alcuna tecnologia Microsoft), quindi un pattern di progettazione che funziona per me è probabilmente diverso da quello che funzionerà per te.

OK, diciamo che stiamo lavorando nello stesso stack tecnologico. Possiamo convalidare sul lato server. Opzionalmente convalida in JavaScript. (È ancora necessario convalidare sul lato server perché non si vuole mai e poi mai fidarsi del client.) Supponiamo che io abbia una tecnica di convalida standard che mi è venuta in mente che mi consente di convalidare che i numeri stanno entrando in cose numeriche alcune caselle di testo sono inserite, ma non troppo, ecc. È semplice, veloce, facile e molto buona. Per ogni casella di testo devi solo specificare un tipo e i parametri e voilà, hai la convalida.

Supponiamo ora di avere due campi di testo che dovrebbero essere un intervallo. Quindi il valido in uno deve essere inferiore o uguale al valore nell'altro. Il mio piccolo meccanismo di validazione guarda solo una casella di testo alla volta. Non ha modo di vederne due contemporaneamente e confrontarle. Inizi a tuffarti e cerca di aggiustarlo, e renditi conto che dovrai riscriverne una grossa parte. Quello che ho scritto non era male. Ma non funziona per il tuo caso d'uso. Indovina un po? Avrai bisogno di un approccio molto diverso da quello che ho fatto. E quando hai risolto il problema, se me lo fai vedere, mi farà male perché impone una maggiore complessità a quella che per me è una banale operazione.

Fortunatamente non è una causa persa. Ogni base di codice sviluppa i propri standard per come gestire molti diversi tipi di problemi. Molti di questi standard sono condivisi con una comunità più ampia. Molti altri sono privati di quell'organizzazione e della base di codice.

Ma ora supponiamo che lavori per un'azienda che ha risolto questo problema. Allora sei su un sito come questo, e qualcuno dice: "Ho bisogno di convalidare un sacco di caselle di testo, come faccio?" Sai come farlo, lo fai ogni giorno. Ma per ragioni legali non puoi semplicemente tagliare e incollare le tue credenziali. E il tuo materiale di convalida è legato al mapper relazionale oggetto che stai usando, quindi anche se tu fossi disposto a condividere, non possono facilmente usarlo senza tirare fuori molta più della tua infrastruttura. Il risultato è che, anche se sei seduto lì con una risposta funzionante al problema del questionario, non puoi semplicemente dire loro: "Fallo."

(Nota che se stai usando il popolare codice open source, le probabilità di poter condividere aumentano, così come aumentano le probabilità che l'altra persona abbia già le giuste dipendenze. Questo è uno dei open source.)

    
risposta data 29.04.2011 - 00:57
fonte
0

Questa domanda è più filosofica che tecnica quindi risponderò in questo modo ...

Probabilmente perché la programmazione di per sé è in qualche modo simile all'arte.

Ogni programmatore trova il proprio modo di fare qualcosa che si adatti alla sua immaginazione e ai suoi bisogni in quel momento.

La standardizzazione è OK, ma non troppo, perché sottrae all'immaginazione dei programmatori e porta i programmatori a non essere artisti in alcun modo, ma i programmatori.

Un buon punto intermedio va bene perché porta a innovazioni da un pubblico molto più vasto di programmatori (leggi non solo quelli che scrivono gli standard) pur mantenendo la compatibilità tra i "generi di programmazione".

A volte le innovazioni del "piccolo programmatore" diventano standard se vengono trovate abbastanza valide.

    
risposta data 28.04.2011 - 22:03
fonte
0

Ci sono così tanti casi d'uso nella programmazione che non c'è proprio modo che qualcuno che crea la documentazione su un argomento possa menzionarli tutti. Ad esempio il tuo

"How do I add the input of a texbox to an ongoing array?"

domanda. Invece di fare una domanda così specifica, chiedi invece:

"How do I add an element to an aray?"

Questa è una domanda a risposta semplice che puoi trovare ovunque. Ma poi di nuovo dipende: quale lingua? Che tipo di array? Dinamica o statica? Quanti elementi può contenere?

Ci vuole solo esperienza e tempo per imparare a muoverti, ma alla fine trovi che molti problemi hanno una semplice domanda generica alla radice. Identifica questa domanda e molto probabilmente troverai una risposta.

    
risposta data 28.04.2011 - 22:05
fonte

Leggi altre domande sui tag