2010-10-01 11 views
27

Ho insegnato a me stesso Objective-C per circa 6 mesi e mi piace molto usare la lingua. Tuttavia non ho trovato nessun buon standard di codifica, quindi il codice che scrivo finisce sempre come un disordine inconsistente.Standard di codifica Objective-C?

Cose come le convenzioni di denominazione sono sufficienti, ma la spaziatura, il rientro e la larghezza della linea di 80 caratteri (impossibile?) Non stanno funzionando molto bene.

Quali convenzioni utilizzate con Objective-C?

Ecco un piccolo esempio di qualcosa che non funziona:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 

     self.navigationItem.leftBarButtonItem = 
     [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
                 target:self.parentViewController 
                 action:@selector(done:)] autorelease]; 

     NSString* units = [[NSString alloc] initWithFormat:@"%@", @"oz"]; 
     NSString* optionOne = [[NSString alloc] initWithFormat:@"[%d%@] Calculate", 100, units]; 

     self.options = [[NSMutableArray alloc] initWithObjects: 
         optionOne, 
         @"Configure Portions", 
         @"Configure Notifications", 
         @"Help", 
         nil]; 

     [units release]; 
     [optionOne release]; 
     [tableView reloadData]; 
    } 
    return self; 
} 
+0

https: // github.com/raywenderlich/obiettivo-c-style-guide # lingua – thesummersign

risposta

7

Grande domanda, grazie per averlo chiesto.

Alcuni dei miei standard di codifica personali:

  1. io non attenersi a 80 caratteri, ma cerco di stare sotto 120 o giù di lì. Obj-C è un linguaggio verboso con argomenti "named" e Cocoa è un framework ancora più elaborato. Raramente ho bisogno di modificare il codice su un VT220.
  2. Di solito non divido lunghe chiamate di metodo con il ":" allineato verticalmente come Xcode vuole che tu faccia. Io preferisco il tradizionale dritto, con le linee avvolte come necessario, rientrate di un punto di tabulazione.
  3. Quando questo diventa veramente poco pratico, scomodo la creazione e l'uso di oggetti su più linee. Per esempio. in quanto sopra, probabilmente creerò l'array di opzioni su una riga, e faccio [self setOptions:...] sul prossimo. Ciò semplifica comunque il debugging.
  4. Non uso la notazione dei punti per l'accesso alle proprietà, poiché trovo che nasconda il comportamento. Io uso la notazione tradizionale [object property].
  5. Non ho mai risolto in modo soddisfacente la denominazione di ivari contro i locali. Xcode li colora in modo diverso, che di solito è tutto ciò di cui ho bisogno, ma il ragazzo di MSFT nel profondo di me crede ancora che il prefisso dell'ambito dell'istanza sia utile, ad es. m_ o almeno _. Ma di solito non lo faccio, perché è brutto da guardare. E chissà che noi Apple la gente odia le cose brutte. :)

(per quello che vale, nel tuo esempio sopra, è possibile ottenere una stringa autoreleased direttamente utilizzando -[NSString stringWithFormat:...] al posto del alloc/init/release.)

+3

+1. Seguo più o meno le stesse linee guida, e non mi piace troppo anche la notazione [Christmas Polish Christmas Tree Notation] (http://www.kuro5hin.org/story/2004/6/1/43942/41236). – dreamlax

+1

@dreamlax: +1 per questo nome di notazione. –

+0

Oltre a questi eccellenti suggerimenti, utilizzo anche l'indentazione che ottengo quando lascio Xcode ri-indentare l'intero file. L'indentazione manuale è una perdita di tempo e, per fortuna, Xcode svolge un lavoro per lo più dignitoso. – bbum

1

Questa è un'altra buona fonte: (sono un modo che non mi permetteva di postare due anelli della stessa risposta) http://cocoadevcentral.com/articles/000082.php (cacao stile per Obj C parte 1 di 2)

parte 2 è lo stesso link ma termina con 000083.php

2

Questa è probabilmente l'opinione dissenziente qui intorno ma ... Non indentro le singole righe, accendo il word-wrap. Il vantaggio di questo è che puoi restringere/allungare le finestre e il codice sembra sempre buono, inoltre non devi perdere tempo a fare scherzi con le nuove righe e le schede/spazi che cercano di rendere il tuo codice un aspetto accettabile.

+0

Questo è esattamente ciò che faccio. –

Problemi correlati