Se iOS ha seguito la convenzione di denominazione che proponi, le classi menzionate saranno denominate:
Ci sarebbero anche classi con nomi come:
-
UIObjectResponderView
-
UIObjectResponderViewControl
-
UIObjectResponderViewControlButton
-
UIObjectResponderViewScroll
-
UIObjectResponderViewScrollTable
Gli svantaggi di questa convenzione di denominazione diventano sempre più evidenti con il crescere di questa dimensione del framework:
-
Nomi di classi molto lunghe.
-
La maggior parte delle classi inizia con lo stesso prefisso lungo, come "UIObjectResponderView ..."
-
L'ordine ordinato dei file di origine corrisponde alla gerarchia di ereditarietà, che non è quasi tanto utile quanto avere gruppi in base alla funzionalità. Cioè, è più utile avere XYDetailView
e XYDetailViewController
finire vicini l'uno all'altro piuttosto che avere XYObjectResponderViewDetail
raggruppato con tutte le viste e XYObjectResponderViewcontrollerDetail
raggruppato con tutti i controller di visualizzazione.
-
Le classi di denominazione in base alla catena di ereditarietà violano il principio "Non ripetere te stesso" (DRY).
-
Rende il completamento dei nomi quasi inutile: devi digitare la maggior parte di un nome molto lungo prima che l'elenco di possibili completamenti sia utile. In Cocoa Touch, quasi tutte le classi derivano da NSObject e moltissime classi derivano da NSResponder e il numero di visualizzazioni è piuttosto ampio. Quindi, ogni volta che vuoi digitare il nome di una vista, devi digitare almeno "UIObjectResponderView" solo per ottenere l'elenco (lungo) delle classi di visualizzazione.
-
Non funziona con i prefissi. In Objective-C, i prefissi dei nomi come "NS", "UI", "CF" e "MK" vengono utilizzati per evitare conflitti di nome. Le classi UIKit iniziano tutte con "UI", ma tutte quelle classi sono in realtà derivate da NSObject.
-
Non funziona bene con nomi di classi composti da più parole. Un controller di visualizzazione è un controller che gestisce una vista; è non una vista. Usando la tua convenzione, l'utilizzo di entrambe le parole per rendere "UIObjectResponderViewController" sembra essere una sottoclasse di "UIObjectResponderView."
I vantaggi di schemi di denominazione più convenzionali sono praticamente l'inverso degli svantaggi sopra elencati:
-
Consente nomi molto più brevi, come "UIButton" anziché "UIObjectResponderViewControlButton."
-
Evita i prefissi comuni noiosamente lunghi. I nomi delle classi sono effettivamente leggibili: "UITextField", "UISlider", "NSManagedObjectContext" e così via.
-
I file di origine vengono ordinati in gruppi più utili.
-
Non viola DRY.
-
Puoi digitare solo alcuni caratteri di un nome e ottenere un utile elenco di completamento.
-
& 7. Funziona bene con diversi prefissi e con nomi di più parole.