Sono un programmatore hobbista che lavora sui miei progetti. Io uso Java.
Fino a poco tempo fa il mio progetto medio era solo 1000 LoC. Il mio ultimo progetto tuttavia è più grande e sta iniziando a superare 1500 LoC. Stimo che raggiungerà circa 2000.
Non ho mai organizzato le mie lezioni in pacchetti. Tutti erano sempre nel pacchetto predefinito e funzionava perfettamente.
Tuttavia, man mano che i miei progetti crescono e la quantità di lezioni aumenta, sto iniziando a sentirmi disorganizzato.
La mia domanda è: in che modo si divide le sue lezioni in pacchetti? Ciò che intendo è, in base a quali criteri dividi le classi?
La classe 'parte' dell'app? Aka GUI in un pacchetto, la logica di business nell'altro, il networking, ecc.? O forse classi di alto livello rispetto a classi di livello inferiore? classi Aka che eseguono lavori concreti e specifici in pacchetti propri e classi "architettoniche" che li legano tutti insieme nei propri pacchetti? O forse semplicemente dividi in base ai criteri di "cosa ti sembra giusto e organizzato" specificamente per te?
Ad esempio, sto lavorando a un'app che crea musica. È fondamentalmente diviso in due sistemi principali: il sistema che crea la musica e il sistema che visualizza la GUI e controlla l'altro sistema (cioè un pulsante che preme in quel sistema che attiva l'altro sistema).
Il sistema di creazione musicale è anche diviso in due sistemi: per creare melodie e creare progressioni di accordi. E la parte della generazione di progressione di accordi, tra le altre cose contiene un gruppo di classi che fungono da algoritmi intercambiabili per un modello di strategia coinvolto (cioè classi utilizzate per uno specifico dettaglio di implementazione).
Naturalmente ci sono classi di livello superiore e di livello inferiore coinvolte in ogni sistema. Ad esempio il sistema di generazione progressione contiene una classe ProgressionGenerator
, che è di alto livello e lega l'intero sistema. Ha anche una classe Chord
che è molto più di basso livello (ad esempio, si occupa di riprodurre note specifiche).
Il modo in cui organizzerei questo in classi è così:
Il sistema di creazione musicale in un unico pacchetto, il sistema GUI che controlla l'altro sistema in un altro pacchetto.
Rispetto alla creazione della melodia in un sotto-pacchetto del pakage della creazione musicale e alla creazione della progressione in un sotto-pacchetto differente.
E all'interno del sotto pacchetto di creazione della progressione, un altro sottopackage che contata le classi utilizzate per quel modello di strategia coinvolto da qualche parte in quel sistema.
Questo suona come un buon approccio per organizzare le cose in pacchetti? Con quali criteri dividi le classi in pacchetti? Con "cosa sembra giusto" o con termini più tecnici?