Pergunta

Eu ainda sou muito novo para programação e eu quero escrever o código mais limpo possível.

Isto pode soar como uma pergunta boba, mas que ordem devo colocar meus métodos em? Funcionalmente, claro, não importa, mas o layout faz uma enorme diferença. Então, dizer que temos o seguinte código em um classe:

-(void)testCreateProjectWithStartDate {
    [self setUpTestCreateProjectWithStartDate];
    ...
}

-(void)setUpTestCreateProjectWithStartDate {
    testMOC = [self setUpInMemoryStore];
    [self mockOutXMLStoreForInMemoryStore];
}

- (NSManagedObjectContext *)setUpInMemoryStore {
    ...
    NSPersistentStoreCoordinator *coordMock = [self pscMock];
    ...
}

- (NSPersistentStoreCoordinator *)pscMock {
    ...
}

-(void)mockOutXMLStoreForInMemoryStore {
    ...
}

Eu tenho os métodos ordenados na ordem em que eles são chamados? E se um método é chamado a partir de dois lugares dentro de uma classe?

Este trecho de código é uma bagunça completa para mim -. É muito confuso ter que pular tanto quanto isso apenas para descobrir o que é um fluxo muito simples

O fim de métodos faria mais sentido?

Foi útil?

Solução

Você tem várias opções para agrupar métodos:

  • pela funcionalidade (isto é, métodos que necessitam de cada outro são próximas umas das outras)
  • Ao visibilidade (métodos por exemplo públicas declarado na interface chegar primeiro)
  • Por nome (isto é, métodos são apenas classificadas pelo seu nome)

Pessoalmente eu prefiro métodos de grupo por sua funcionalidade, então eu não preciso de saltar muito longe se eu seguir o fluxo. Com o IDE modernos que fazem o salto para você isso não é um grande problema mais embora.

No seu exemplo específico, você pode querer reduzir o número de métodos para melhorar a legibilidade. Se os seus métodos são todos muito curto (2-3 linhas) e só são chamados de um lugar, você poderia inline código e omitir alguns métodos.

Outras dicas

Eu descobri que isso seja mais verdadeiro de métodos do que de aulas - mas eu acho que é porque eu não estou fazendo o suficiente:. Mantê-lo curto o suficiente, e perguntas como estes desaparecem

Assim, por métodos - não têm sido questões sobre se para inicializar todas as variáveis ??no topo, ou para inicializar-los perto de onde eles são usados ??(a resposta é perto de onde eles são usados, fwiw) - mas se você manter seus métodos curto o suficiente, ele simplesmente não importa. Perto de onde eles são usados ?? é no topo.

O mesmo vale, pelo menos em teoria, por classes: mantê-los curtos o suficiente, e a organização interna simplesmente não importa (limitação e caso impossível: apenas um método por classe, é automaticamente na ordem que declarar). Se suas classes têm tantos métodos que você está querendo saber como organizar - pense sobre como extrair alguns métodos que pertencem juntos em sua própria classe. Menor é melhor.

Há não parece-me ser uma resposta definitiva para isso, a menos que você tem um padrão a seguir para o seu projeto / trabalho. Pessoalmente, se eu não estou seguindo outro padrão, eu coloquei o construtor (s) primeiro, seguido pelo (s) o destruidor. Depois disso, eu apenas colocá-los em ordem alfabética pelo nome do método. Eu sou um pouco de um dinossauro (I tenho programado desde a administração Carter), então eu adoptado o método alfabética para funções antes de eu nunca ouvi falar de programação orientada a objetos e apenas levou-a quando comecei a fazer objetos.

Eu sempre para os meus métodos como este:

primeiro construtor / destruidor, assessores seguida, em seguida, os outros métodos ordenados por importância.

métodos importantes em primeiro lugar, então quando eu abrir um arquivo que eu tenho que rolar a menos para chegar aos métodos mais importantes.

Mesmo para público / protegido / privado:. Público em primeiro lugar, por isso, tudo o que pode ser usado a partir de outros arquivos é rapidamente visível ao abrir o arquivo

Eu tive esse problema também. Eu tentei métodos de grupo com base no papel da classe. Essa abordagem não funciona porque é folhas um monte de coisas não abordadas. Eu recentemente comecei a usar as seguintes convenções para Objective-C:

Os métodos são por ordem decrescente de tamanho da audiência com exceção de initialize, init, dealloc, awakeFromNib e conveniência métodos (ou seja, métodos de classe que retornam uma instância-lançado auto da classe).

//initialze, init, dealloc, awakeFromNib
//convenience methods
//properties
//IBActions
//General public methods
//Delegate methods (eg NSResponder, NSTableview etc)
//Binding and notification call back methods
//private methods

Eu ainda não estou 100% certo como ivars ordem no arquivo de cabeçalho. Por enquanto eu estou ordenando-lhes pela responsabilidade de gerenciamento de memória:

//IBOutlets
//other non-retained objects (eg delegates - these can most likely be labeled IBOutlet too)
//primative data types (no mm responsibilties)
//retained objects
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top