Prima i dati o prima il codice?

2

Ho visto molte domande sull'opportunità di progettare i dati prima o prima del codice quando si progetta una nuova applicazione. Mi chiedo se alcuni hanno le stesse conclusioni / idee come me. Vengo dalla pittura / design digitale / sfondo dell'interfaccia utente e naturalmente sono andato in Front-End. Attualmente posso codificare e compilare rapidamente le interfacce utente in HTML5, JS, jQuery e AngularJS. Ho anche toccato PHP e gli stack popolari (LAMP, WAMP, XAMP ecc.) E WordPress. Ho anche lavorato con Oracle SQL e TSQL su MS Server su diversi lavori.

Per l'ultimo anno ho lavorato con C # e ASPX e poi per gli ultimi 6 mesi MVC5, le API JSON con SOAP.

Recentemente ho anche scelto AngularFire per Firebase.

9-5 Lavoro per grandi aziende quindi lo stack è di solito .NET, ma al di fuori di questo costruisco siti per client in lingue open source di solito e front-end.

Da questo possiamo vedere che ho toccato molti linguaggi diversi (alcuni non nominati) e la progettazione e la costruzione di applicazioni / software Web, ma a volte devo ancora sapere se progettare prima i miei dati o prima il codice? Nelle applicazioni MVC (2-5 applicazioni) che ho creato e lavorato, il database era già stato creato, quindi sto iniziando a essere un po 'abituato (e mi diverto) a seguire il primo approccio dei dati e in VS a generare automaticamente il mio modello (+ T4), quindi progetta i Controller e infine Visualizza o torna a Controller o API.

Con AngularFire che ci mostra PUOI solo codice prima e il database può essere costruito al 100% automaticamente per te (creazione dell'oggetto DB e colonne).

Da questo mi chiedo se molti altri sono in questa modalità quasi "limbo" a causa di molte diverse pratiche di progettazione e se qualcuno può offrire consigli su come non essere troppo confusi e forse offrire un modo per seguire solide pratiche di software / ingegneria delle applicazioni / codifica / progettazione.

Pro e contro: Tuttavia, ciò che ho visto finora è che AngularJS e Firebase offrono applicazioni in rapida evoluzione in quanto è veloce definire i controller in JS e controllare le modifiche dei dati in tempo reale in Firebase, questo mi ha permesso di concentrarmi maggiormente sulle funzionalità Voglio piuttosto che cercare costantemente le librerie, aggiungere JSON e l'applicazione inizia a diventare potente e continua ad essere veloce.

Con .NET (MVC5, C #, EF5, JSON) è più veloce di uno stack LAMP per le operazioni CRUD in quanto vi sono molte opzioni disponibili immediatamente, così come un pull e push di dati complessi con JSON, quindi continua a preferirlo L'ASPX produce quindi anche rapidamente potenti applicazioni web, anche se quando il progetto cresce, l'esecuzione può essere rallentata localmente e una volta implementata.

    
posta Shucoder 11.10.2016 - 12:49
fonte

4 risposte

4

Il tuo obiettivo dovrebbe essere quello che conta di più per l'applicazione. Basta iniziare con righe e colonne, indipendentemente da cosa sia cresciuta un'intera generazione e il danno è ancora visibile in molte applicazioni aziendali. Dovresti iniziare con il tuo modello e se la tua applicazione è pesante in termini di dati, il tuo modello potrebbe essere un modello di dati come un ERD. Se la tua applicazione ha un grande comportamento (usando un algoritmo per trovare una soluzione) il tuo modello può descrivere un flusso di controllo o essere un diagramma di sequenza. Una volta che hai un modello e hai le tue entità e la terminologia corrette, puoi iniziare a pensare a dove iniziare l'implementazione.

    
risposta data 11.10.2016 - 13:46
fonte
2

Il codice dovrebbe sempre servire i dati. Ciò non significa che non ci siano dati che servono ovviamente il codice, cose come tabelle di elenchi di valori per elenchi a discesa, ma i dati aziendali sono più importanti di qualsiasi codice che agisca su di esso.
Se stai costruendo un sistema per gestire l'elaborazione degli ordini, non è nulla senza i dati dell'ordine ... E probabilmente i dati esistono già in un formato specifico che non puoi cambiare, quindi il tuo codice dovrà essere progettato per funzionare con qualsiasi formato sia fornito da un sistema o un partner esterno.

    
risposta data 11.10.2016 - 13:31
fonte
2

Dati prima perché i dati sono "cosa vuoi fare" e il codice è "come farlo". Se provi a fare prima il codice, sarai pienamente consapevole di come ottenere da A a B, ma non saprai cosa sono A e B.

E la prima definizione delle strutture dati renderà più semplice l'uso di più operazioni sugli stessi dati. A e B hanno forme, se non predefinite le forme le diverse operazioni vorrebbero utilizzare forme diverse per gli stessi dati.

È anche una delle pratiche raccomandate da The Art of Unix Programming link

    
risposta data 11.10.2016 - 14:16
fonte
0

Quasi tutte le applicazioni, dai giochi semplici alle grandi applicazioni aziendali, hanno almeno una funzione complicata che è meglio che tu abbia ragione. Questi algoritmi guideranno la progettazione dei dati o avrai un disastro.

Trovare 9 posti per mettere le tue x e o in un gioco di tris non è poi così difficile. Determinare i vincitori e un giocatore di computer è un po 'più difficile.

I sistemi di fatturazione possono essere piuttosto semplici fino a quando non è necessario iniziare a calcolare diversi lotti e assegnare e tracciare il pagamento in cicli mensili.

Ottieni questa logica e almeno copri i test automatici perché quando inizi a costruire tutte le altre strutture dati e CRUD, quei calc a continuare a funzionare meglio. Le persone vengono licenziate per aver incasinato i soldi degli altri.

    
risposta data 11.10.2016 - 22:58
fonte