Progetto di struttura basato su piattaforma o progetto?

3

Ho un progetto di medie dimensioni (~ 10.000 linee) che funziona su Windows e Linux. Tuttavia, sono solo componenti specifici del programma che dipendono dalla piattaforma e si trovano in una cartella denominata event_producers .

Ora la mia preoccupazione principale è come organizzare l'organizzazione di questa cartella poiché il progetto inizia a complicarsi e vorrei mantenere l'organizzazione a un livello ottimale.

Organizzazione basata sulla piattaforma:

'-- event_producers
          |-- Linux
          |      '--- monitoring.py
          '-- Windows
                 '--- monitoring.py

Questo sembra più indipendente dall'implementazione, il che è un vantaggio dato che qualcuno può cambiare le cose in futuro senza creare nuovi file. Il problema principale è che nessuno può garantire che ogni programmatore segua lo schema di avere un file con lo stesso nome in ciascuna cartella di piattaforma.

Organizzazione basata sulla progettazione:

'-- event_producers
          '-- Monitoring
                 |-- linux.py
                 '-- windows.py

Questo non lascia molto spazio al programmatore per organizzare le cose nel modo sbagliato. Ciò che mi dà fastidio è che ho un modulo chiamato linux.py e windows.py , qualcosa che non ho mai incontrato in nessun altro progetto. Inoltre, se in futuro deve essere creata una nuova cartella (diciamo Activator ), nessuno può garantire che il programmatore segua lo schema di denominazione dei file in base alla piattaforma.

Domande

  • Come organizzeresti il progetto e perché?
  • Ci sono altri vantaggi / svantaggi con ogni modo che mi è mancato?
posta Pithikos 26.03.2015 - 17:02
fonte

1 risposta

4

Buono per te per aver considerato i bit specifici della piattaforma dalla maggior parte del codice. Scommetto che questo aiuta a mantenere il progetto complessivo gestibile. Penso che la tua organizzazione basata sulla piattaforma sia la strada da percorrere. I file specifici della piattaforma vanno nelle directory specifiche della piattaforma e i file stessi possono avere nomi corrispondenti a quello che fanno. Ciò mantiene le cose molto chiare, che è una caratteristica di un buon design, IMO.

Sì, c'è il rischio che qualcuno ometta il supporto della piattaforma quando viene aggiunto un nuovo file / funzione / produttore di eventi. È possibile attenuarlo aggiungendo un controllo di coerenza alla suite di test che conferma che ciascuna piattaforma ha un set di file corrispondente. Questo potrebbe essere aggiunto al tuo processo di compilazione in modo che i problemi possano essere rilevati e visualizzati in anticipo.

In alternativa, potresti avere uno script di supporto che genera file stub per ciascuna piattaforma (nota) che vengono poi modificati per fornire funzionalità reali. Dovrai anche replicare tutti i file quando viene aggiunta una nuova piattaforma, ma è un grosso problema, indipendentemente dal modo in cui ci si avvicina.

Penso che tu sia sulla strada giusta.

    
risposta data 26.03.2015 - 17:13
fonte