Perché Apple ha scelto di progettare il suo linguaggio di programmazione con i nomi dei metodi del passato e del passato passati?

3

Ci sono molti metodi come questo in iOS / Objective C:

- viewDidLoad
- viewWillAppear:
- applicationDidFinishLaunching

Ho appena avuto una discussione con alcuni colleghi su questa scelta di design e sul perché avrebbero scelto di essere così prolissi a preferenza dei modi più "standard" di propagazione degli eventi, per esempio:

- onViewLoad
- onViewAboutToAppear
- onApplicationFinishLaunching

Non ho avuto una risposta e piuttosto ho preferito le preferenze personali del team che progettava la lingua. Tuttavia, mi chiedo se c'è dell'altro - se questa è l'opzione preferita. O se la squadra volesse semplicemente differenziarsi da altre lingue o dalla norma.

Se qualcuno ha qualche idea che sarebbe molto interessante.

Grazie

    
posta Thomas Clayson 22.04.2013 - 16:44
fonte

3 risposte

5

Penso che la logica sia che in Objective-C i selettori dovrebbero essere inviati agli oggetti. L'invio di [viewController onViewAppear:] fa sembrare che stai per passare un lambda dicendogli cosa fare, mentre [viewController viewWillAppear:] è meglio nel paradigma "Sto inviando questo messaggio a quell'oggetto". (Trovo strano che il flag animated non sia in questo caso in questo caso.)

Da lì ha senso ridurre la lunghezza e le particelle estranee preferendo il tempo futuro -viewWillAppear: a -viewAboutToAppear: .

    
risposta data 22.04.2013 - 20:10
fonte
4

Or whether the team just wanted to differentiate themselves from other languages, or from the norm.

In primo luogo, farò notare che i nomi in questione provengono da framework, non dal linguaggio di programmazione (Objective-C) stesso.

È impossibile dire cosa stava pensando la squadra a meno che tu non ne facessi parte, ma immagino che i nomi derivino dal fatto che i metodi sono chiamati prima o dopo che un determinato evento è successo. Ad esempio, -viewWillAppear viene chiamato solo prima la vista viene mostrata sullo schermo e -viewDidAppear viene chiamato subito dopo la visualizzazione della vista. Insieme, questi metodi ti permettono di prepararti a qualcosa che sta per accadere e di rispondere a qualcosa che è appena successo. Non penso che questi nomi siano stati scelti solo per essere diversi dagli altri framework (anzi, i framework di NextStep che sono diventati Cocoa precedenti a molti degli attuali framework di oggetti), ma più probabilmente volevano essere descrittivi.

Nota che i metodi ... Did ... e ... Will ... non sono gli unici modi in cui gli eventi vengono comunicati al tuo codice. Ad esempio, i tocchi hanno un ciclo di vita più complesso, quindi hai metodi come -touchesBegan:... , -touchesMoved:... , -touchesEnded:... e -touchesCancelled:... .

    
risposta data 22.04.2013 - 17:25
fonte
0

L'unico paragone con cui ho esperienza è il pattern di eventi di Microsoft.

I framework Microsoft utilizzano due stili per questi eventi, uno in Windows Form e ASP.NET Web Form, l'altro in WPF / Silverlight / WinRT.

Nelle applicazioni basate su moduli, il framework usa il tempo imperfetto per (qualcosa sta accadendo) e perfetto per (qualcosa è accaduto). Un esempio è la coppia di interfacce INotifyPropertyChanging / INotifyPropertyChanged (che forniscono rispettivamente gli eventi PropertyChanging e PropertyChanged).

Per WPF e al, il framework usa Preview [EventName] e EventName. Ad esempio, qui non viene utilizzato il passato, ad esempio PreviewMouseClick e MouseClick sono la coppia di eventi per un evento clic del mouse.

Penso che la scelta tra i tre metodi di denominazione sia soggettiva a patto che siano coerentemente utilizzati all'interno di un dato framework.

    
risposta data 22.04.2013 - 18:59
fonte

Leggi altre domande sui tag