Cosa devo fare prima di iniziare un progetto? [chiuso]

-3

Questa è una domanda piuttosto sciocca, ma non so davvero cosa fare prima di iniziare un progetto.

Prendi questo progetto per esempio:

link

Questo progetto per me è abbastanza complesso. Ci sono un sacco di funzioni: semplici e funzioni di ordine superiore e interagiscono tra loro in un modo che, secondo me, è abbastanza difficile da capire. Non so come l'autore possa inventare quella struttura e tutte queste funzioni.

Ha qualcosa relativo al Software Design? Come scelgo la struttura del progetto? Cosa devo fare per decidere le funzioni, le classi che il progetto deve avere e il modo in cui interagiscono tra loro?

    
posta Trần Đình Trung 11.07.2018 - 19:35
fonte

2 risposte

3

Inizi con i requisiti.

Se si tratta di un'applicazione utente, decidere su Use Case o User Story. Questi ti guideranno quindi verso un'architettura di alto livello.

Se si tratta di una libreria, stabilisci cosa vogliono fare i chiamanti con la libreria e poi decidi da che cosa sono le funzioni di primo livello. Solo una volta che sei soddisfatto di ciò, lavori fino ai dettagli di implementazione di livello inferiore.

    
risposta data 12.07.2018 - 10:10
fonte
1

How do I choose a project's structure? What do I need to do to decide on the functions and classes that the project needs to have as well as the way that they interact with each other?

Penso che la struttura di un progetto debba essere selezionata in base a ciò che fa il progetto. Stai facendo una libreria o un'applicazione? Qual è il suo scopo? Come dovrebbe essere usato? Che tipo di funzionalità vorresti che l'utente avesse?

Nel caso di un'applicazione, la struttura più comune è l'architettura Model-View-Controller (MVC). Ci sono interi framework (come Rails) che sono dedicati a questa architettura, e funzionano perché le cose simili si attaccano a cose simili. Il codice che descrive un modello si trova insieme in una cartella o in un pacchetto chiamato model , mentre i controller siedono in controller e le viste siedono in view .

Facciamo un esempio di giocattolo: supponiamo che tu stia costruendo un'app mobile che consente a due utenti di inviare messaggi tra loro. Gli utenti dovrebbero essere in grado di avere un elenco di persone da contattare, avere un modo di guardare i messaggi e avere un modo per inviare messaggi a persone specifiche. Poiché si tratta di un'applicazione che deve contenere dati e consentire a un utente di modificare e interagire con tali dati, l'architettura MVC sarebbe una buona soluzione.

Per il componente del modello, avremo bisogno di classi che rappresentino i dati che stiamo archiviando e interagendo con. Ciò significa che probabilmente avremo bisogno di una classe Contact , una classe Message e forse una classe Conversation che contiene un elenco ordinato di Message s con un altro Contact , così come una classe Directory che contiene un elenco di Contact s. Quindi con la nostra directory src avremmo una directory model che contiene tutte quelle classi.

Il componente di visualizzazione dipende in gran parte da ciò su cui l'app viene costruita. Per Android, definiresti un insieme di View se ViewGroup s visualizzati sullo schermo con cui l'utente può interagire. Puoi raggruppare tutti questi elementi in un'unica directory view (o pacchetto se stai utilizzando Java.)

Ci deve essere un modo per l'utente di interagire con le viste e causare cambiamenti con i dati. Questo codice si posizionerebbe nella directory controller . Puoi avere controller separati per funzioni separate dell'app: modificare un elenco di contatti, inviare e ricevere messaggi, ecc.

A quel punto, metti semplicemente classi, funzioni e variabili in questi pezzi separati in base al bisogno che riempiono. Dovrai avere un modo per aggiungere e rimuovere contatti, quindi avere metodi come addContact e removeContact nella classe Directory che il controller può utilizzare per apportare tale modifica. La vista dovrebbe essere in grado di far sapere al controllore che un contatto deve essere cancellato, quindi progettarlo in modo da avere un pulsante di cancellazione, e poi fare in modo che il pulsante di cancellazione notifichi al controller che è necessario eliminare un contatto specifico.

Segui questo schema per ogni parte del tuo progetto e mantieni buone convenzioni di denominazione e pratiche di codifica, e prima che tu te ne accorga, avrai costruito qualcosa di prezioso e di facile manutenzione.

    
risposta data 11.07.2018 - 20:25
fonte

Leggi altre domande sui tag