2012-04-30 10 views
6

Ho un'applicazione universale (per iPhone e iPad).C'è qualche vantaggio nel separare le classi iPhone e iPad su un'app Universale?

Ci sono dei vantaggi nel separare l'iPad dalle classi iPhone nella struttura delle cartelle?

Ecco un esempio di ciò che intendo:

- MyApp 
    - Resources 
    - Classes 
     - iPad 
      - SomeUniqueClassOnIPad.h 
      - SomeUniqueClassOnIPad.m 
     - iPhone 
      - SomeUniqueClassOnIPhone.h 
      - SomeUniqueClassOnIPhone.m 
    - SomeUniversalClass.h 
    - SomeUniversalClass.m 

è comune nei progetti di Objective-C?

+0

Se la tua classe non ha nulla a che fare con le viste (che potrebbero essere modificate), ma implementa una logica, allora non penso che sia necessario separare la classe. Ecco un link che potrebbe aiutare: http://stackoverflow.com/questions/7315551/iphone-vs-ipad-development-process-differences-and-similarities – superM

+0

Questo collegamento mi dà ancora più dubbi: http: // StackOverflow. com/a/7315777/807239. Dal momento che un'app per iPad è più utilizzata di un'app per iPhone, dovrei ripensare a tutto il processo che sta dietro l'interfaccia utente e come i controller li gestiscono ... È corretto? –

+0

In linea di principio, l'interfaccia utente da dispositivo a dispositivo cambia molto più della logica. Se la tua app non è "pesante" di quanto non re-design l'intera elaborazione. Ho pochissima esperienza nello sviluppo per iOS (più con Android), ma raramente ho visto che la logica è implementata separatamente per dispositivi diversi. Lo stesso è con Android)) – superM

risposta

9

Una delle regole all'interno della codifica non deve mai avere un codice duplicato, quindi se le tue viste stanno facendo cose diverse o se i dati dovrebbero essere gestiti in modo diverso a seconda che si tratti di un iPad o di un iPhone (es. Diverse fonti di dati?) Dovrebbe sicuramente essere in classi diverse, se non ... poi no. Usa uno e la stessa classe.

Una cosa che è comune e che potresti implementare in questo caso è una specie di helper, una classe delegata se vuoi, che gestisce tutti i metodi e le azioni comuni che avvengono nel tuo codice.

Regola d'oro: scrivi il meno codice possibile! Meno codice == più manutenibile e di qualità superiore. Quindi scrivi il minor numero possibile di codice senza incidere sui tuoi requisiti. Inoltre, suddividere il codice in modo che sia più facile da test (unità) e quindi più facile da riutilizzare.

Spero che abbia risposto alla tua domanda.

Aggiornamento
So che c'era una terminologia per questo, solo potrebbe pensare di esso. Avere un codice duplicato è chiamato "violazione DRY". DRY è l'acronimo di Do not Repeat Yourself, un principio di sviluppo del software volto a ridurre la ripetizione di informazioni di ogni tipo, particolarmente utile nelle architetture multi-livello.
Ulteriori informazioni: DRY on Wikipedia

1

Per me, dipende dalla comunanza tra le visualizzazioni iPhone e iPad. Se ci sono file xib separati ma entrambi contengono gli stessi elementi, è facile decidere di utilizzare la stessa classe.

Se i file xib di iPhone e iPad hanno elementi univoci, separare le classi potrebbe essere migliore.

Un'altra opzione è creare una classe base condivisa dalle classi iPhone e iPad per i casi che si desidera separare. La classe base conterrebbe il codice che è comune tra di loro, ad esempio, l'avvio di richieste di dati o una visualizzazione personalizzata comune.

Problemi correlati