Il layout di una GUI dovrebbe essere considerato graficamente come "barare?"

18

Ho un amico che ha una quantità leggermente maggiore di esperienza di programmazione come me. Stavamo parlando di tutte le diverse tecnologie di programmazione che usiamo e Interface Builder è entrato in conversazione.

Essendo di nessun background di programmazione tranne quello che ho insegnato a me stesso, personalmente credo che IB e tutte le sue funzionalità ( IBOutlets , IBActions ) aiutino i programmatori del mio livello di abilità (e tutti i livelli di abilità, per questo ) completa i loro progetti in meno tempo.

La sua visione di IB è un po 'entusiasta. Crede che i programmatori che utilizzano Interface Builder stiano "tradendo" nel fatto che non devono disporre le interfacce a mano.

Domanda:

L'uso di un generatore GUI per disporre gli elementi dell'interfaccia può essere considerato "imbroglio" (dato che la maggior parte della programmazione richiedeva originariamente la creazione di interfacce a mano nel codice)? Perché?

    
posta esqew 24.07.2012 - 03:19
fonte

8 risposte

60

Non è un imbroglio. Programmi come IB sono strumenti. Usa quello giusto per il lavoro. Non c'è bisogno di essere dogmatici al riguardo.

Se sei più efficace usando un tale strumento, usalo. L'unica avvertenza è che dovresti imparare i compromessi quando prendi le tue decisioni. Fare i layout a mano ti dà un controllo preciso a scapito della facilità di drag-and-drop. Gli strumenti di trascinamento della selezione ti consentono di eseguire molte operazioni in modo facile e veloce, ma potrebbero rendere più difficile la manutenzione del codice nel tempo.

Personalmente, non ho mai avuto successo o tratto molto piacere dall'utilizzo di un tool di progettazione dell'interfaccia utente drag and drop, ma sono solo io. Trovo che la posa delle GUI a mano sia la per me più efficace e produce un codice base che è più facile da mantenere nel tempo. Altri hanno l'esperienza opposta.

    
risposta data 24.07.2012 - 03:31
fonte
17

Programmare come lavoro non è uno sport né un gioco. Quindi l'argomento del tradimento è molto sottile. Se gli strumenti visivi aumentano la tua produttività, sarebbe stupido non usarli. La mia esperienza è che questo mi porta a dedicare più tempo all'effettivo codice di risoluzione dei problemi senza dover ripetere l'interfaccia banale più e più volte.

Attenzione però, è facile per le impostazioni o i dati di insinuarsi nell'interfaccia. Sii radicale nel mantenere la presentazione e la logica separate.

    
risposta data 24.07.2012 - 09:05
fonte
10

È solo imbroglio se stai sacrificando qualcosa per arrivarci. La maggior parte dei layout della GUI genera solo codice che faresti comunque (e spesso devi modificare a mano poiché il layout non è sufficiente).

Quindi sostanzialmente no.

A parità di tutti gli altri, qualsiasi strumento che ti permetta di ottenere la stessa cosa più velocemente è buono.

    
risposta data 24.07.2012 - 03:27
fonte
4

Cheating è il nome del gioco. Dovresti sempre prendere la via più facile che puoi quando prendi qualsiasi decisione di sviluppo. Chiamalo barare, chiamalo "essere produttivo"; non fa differenza. Dovresti scegliere lo strumento che ti aiuta a portare a termine il lavoro con il minimo sforzo (ovviamente, non dimenticare la manutenzione e la scalabilità).

Ora, in particolare con IB, dovresti pesare il tempo risparmiato da IB rispetto al costo di dover mantenere il codice che è più scadente e con cui hai meno familiarità. Questo è davvero un tipo di decisione caso per caso e persona per persona. In molti casi, gli strumenti e le procedure guidate consentono di svolgere molto più lavoro con costi di manutenzione a basso costo aggiunto e, a volte, introducono il codice di slop e un'astrazione più fiacca di quanto si sappia fare. Sembra che tu abbia preso la decisione per te che IB vale ogni costo che aggiunge allo sviluppo, tuttavia, il tuo amico potrebbe facilmente scoprire che lo strumento lo ostacola più di quanto possa aiutare.

    
risposta data 24.07.2012 - 19:46
fonte
3

Inferno no. Farlo interamente a mano, tuttavia, è un chiaro caso di lavoro inutile per te stesso.

(Generalmente lo stenderei usando un builder e se fosse necessaria una messa a punto definitiva tende a - ma non sempre - a fare a mano).

    
risposta data 24.07.2012 - 04:40
fonte
3

Non è certo un inganno, anche se avrei un po 'meno rispetto per uno sviluppatore che non potrebbe disporre una GUI senza uno. IMO, l'utilizzo di uno non è diverso dall'utilizzo di un tipo di dati fornito dal sistema - perché implementare la propria lista collegata o la mappa hash se è possibile utilizzare uno della libreria di sistema?

FWIW Ho dovuto implementare un'interfaccia utente in Java Swing un paio di mesi fa. Non l'avevo mai usato, quindi l'ho scritto tutto a mano per capire meglio come funzionava. Ora che conosco l'API di base, non lo scriverò mai più a mano se posso aiutarlo!

    
risposta data 24.07.2012 - 16:52
fonte
1

Come afferma @Bryan Oakley , è solo uno strumento e non un "cheat". Dipende tutto da cosa stai esattamente stendendo. Se mano rende l'esercizio incredibilmente laborioso, dovresti cercare altre alternative che ti rendano più produttivo.

Ero nel campo della codifica a mano dell'interfaccia, ma più tardi, dopo aver esposto le interfacce, ho preso una freccia sul ginocchio e ho avuto un'opinione diversa. Se posso e mi rende più produttivo, utilizzerei uno strumento grafico per creare la GUI.

Ultimamente usando il pattern MVVM, con la distinzione di View e ViewModel, rende un po 'più chiaro quando si usano gli strumenti grafici. Phil Haack ne parla brevemente nell'episodio Github per Windows del podcast di Herding Code quando viene chiesto del passaggio dallo sviluppo web allo sviluppo di applicazioni. Ha più senso fare il ViewModel con la codifica "a mano", e lasciare che il designer costruisca la vista graficamente (e cablare i ViewModels di conseguenza).

    
risposta data 24.07.2012 - 10:15
fonte
1

Uno dei grandi vantaggi di strumenti come Interface Builder è che consentono di separare il lavoro di progettazione dell'interfaccia utente dall'implementazione del programma. Qualcuno con una minima abilità di codifica può facilmente modificare il layout dell'interfaccia utente, cambiare pulsante e sottotitoli di menu, tradurre l'interfaccia utente in un'altra lingua, ecc.

    
risposta data 24.07.2012 - 10:42
fonte

Leggi altre domande sui tag