objective c - Convenzioni di denominazione per le proprietà BOOL Obj-C 2?




objective-c cocoa (4)

L'esempio di CalStore sembra violare la convenzione. Mi attenerei a dove il nome della proprietà, al contrario del nome del metodo, non ha un "è" in esso.

Ho una proprietà BOOL a sola lettura. Qual è lo schema di denominazione dominante qui?

Sfondo: per semplici dichiarazioni del metodo vecchio, il modello accettato

- (BOOL)isEditable;
- (void)setEditable:(BOOL)flag;

In un mondo @property, quello sarebbe tipicamente espresso come

@property(getter=isEditable) BOOL editable;

Tuttavia, ci sono esempi in contrario. Ad esempio in CalStore / CalCalendar.h

@property(readonly) BOOL isEditable;

(CalCalendar è sbagliato qui o è anche un modello di denominazione accettabile per le proprietà BOOL di sola lettura?)

Ho un controller che gestisce una vista, che può essere o non essere ridimensionabile. La proprietà è di sola lettura.

@property(readonly) BOOL viewIsResizable;
@property(readonly) BOOL isViewResizable;
@property(readonly, getter=isViewResizable) BOOL viewResizable;

Quale modello è più naturale o simile al cacao?


La convenzione è sicuramente da fare is... per i getter di BOOL. La ragione per cui si vede la proprietà impostata in CalStore è molto probabile perché è di sola lettura e scritta in questo modo per la leggibilità di base del file di intestazione, poiché:

@property(readonly) isEditable;

è generalmente più facile da leggere rispetto a:

@property(readonly, getter=isEditable) editable;

Per il primo tipo di proprietà, nella tua implementazione potresti fare una delle seguenti cose:

@synthesize isEditable = editable;

o semplicemente definire l'accessorio:

- (BOOL)isEditable(void) { return editable; }

Questo lascia il file di interfaccia (l'intestazione) più facilmente leggibile da un potenziale utente.


Vorresti usare quello che funziona con KVO, KVC e binding ecc.

Ricordo di aver letto nei documenti che KVO et al. cercherò is <key> , set <key> così come get <key> e molti altri come countOf< key>

La checklist di conformità KVC lo spiega molto meglio di quanto potrei mai fare.


citato da ADC

Se l'attributo è espresso come aggettivo, il formato è:

- (void)setAdjective:(BOOL)flag;
- (BOOL)isAdjective;

Per esempio:

- (void)setEditable:(BOOL)flag;
- (BOOL)isEditable; 

Se l'attributo è espresso come un verbo, il formato è:

- (void)setVerbObject:(BOOL)flag; 
- (BOOL)verbObject;

Per esempio:

- (void)setShowsAlpha:(BOOL)flag;
- (BOOL)showsAlpha; 

Il verbo dovrebbe essere nel semplice tempo presente.

| K <







cocoa