Impostazione del progetto Clojure e dei progetti secondari

6

Questa è principalmente una domanda lein relativa alla creazione di un grande progetto e dei suoi sottoprogetti, e non è destinata a essere una domanda di discussione. Invece, sono interessato sia a un puntatore alla documentazione oa un link alle buone pratiche di Clojure / lein.

Ho un'applicazione di valutazione di proprietà comunali che divide due mosche principali in file di sottoinsieme diversi, a seconda che sia in corso un trasferimento di fatturazione o vogliamo aggiornare in gruppo nuovi account, piuttosto che fare in modo che il nostro reparto di valutazione inserisca nuovi account una volta nella loro sistema e poi di nuovo nel sistema di riscossione delle imposte.

La mia applicazione sarà abbastanza grande da poter vedere un progetto di lein di libreria comune con funzioni di supporto, come dividere i file e quindi singoli progetti di lein che usano la libreria comune.

I progetti lein devono essere configurati allo stesso livello e il supporto è incluso nei file project.clj / core.clj?

C'è un vantaggio nel creare lein new progetti sotto un progetto principale?

C'è un problema con la combinazione di tutte le funzioni in un progetto?

Probabilmente posso fare in modo che il mio un core.clj contenga tutti i sapori del programma, ma provengo da uno sfondo C / C ++ e Python, preferirei avere molti piccoli progetti.

    
posta octopusgrabbus 09.11.2012 - 16:27
fonte

2 risposte

3

Se ritieni ragionevolmente che parti del tuo progetto siano preziose come librerie condivise, creerei per loro progetti separati con lein new .

Allo stesso tempo, Clojure si basa sulla semplicità, quindi puoi sempre creare i componenti in spazi dei nomi separati ed estrarre i pezzi come librerie in base alle necessità (in realtà, dovresti farlo comunque, per mantenere i componenti il più disaccoppiati possibile.

Una volta che hai i tuoi pezzi separati, hai un paio di opzioni. Se vuoi renderli pubblici / open-source, puoi caricarli su Clojars . Se sono private, librerie interne, puoi configurare internamente un server di esperti, o mentre sei in fase di sviluppo, usa solo lein-localrepo per renderli accessibili al processo di creazione quando li includi in project.clj .

Questa è una di quelle volte per sviluppo basato su amaca ; pensa attentamente ai moduli che ritieni siano riutilizzabili prima di iniziare e creali come librerie separate. Ma per molti casi, quel livello di riusabilità è una caratteristica di YAGNI, quindi il mio approccio abituale è semplicemente mettere funzionalità comuni in uno spazio dei nomi comune ed estrarlo come libreria su una base ad hoc. È al contempo pragmatico ed evita il dolore di dover mantenere troppe entità software discrete inutilmente.

    
risposta data 31.12.2012 - 02:37
fonte
1

Hai mai pensato di adottare un approccio mono-repo ? Anche a livello di progetto, piuttosto che necessariamente a livello aziendale.

In tal caso, considera l'utilizzo di lein-sub e / o Lein-cascata

Dai un'occhiata al ring-clojure / ring progetto. clj per un esempio di base di utilizzo.

    
risposta data 13.11.2017 - 12:42
fonte

Leggi altre domande sui tag