Se existem duas maneiras de abordar uma tarefa, como escolher entre elas?

11

Eu tenho um caso de uso específico e encontrei três maneiras de fazer isso na Internet, definidas para casos de uso vago. Estou encarando esses três imaginando qual aplicar.

Costumo ficar lá sem saber o que fazer - depois não fazendo nada ... Existe uma boa maneira de escolher? Devo tentar todos eles?

Para ser mais específico em algum contexto, estou tentando criar um jogo de tabuleiro muito leve, no qual preciso de uma parte da tela para poder girar a grade do jogo de tabuleiro, aumentar o zoom na grade e mover peças nessa grade . Eu não tinha ideia de como fazer isso, mas encontrei coisas on-line como Core Animation, Core Graphics, Sprite Kit e vi argumentos a favor e contra eles - por exemplo, o kit Sprite é de alto nível, mas mantém a taxa de quadros em 60, o que é um desperdício de bateria quando nada está realmente se movendo na tela. A Core Animation era uma API de nível inferior, que se opõe às orientações da Apple de "obter o mais alto nível de abstração". Não quero aprender três coisas para usar 1. Existe uma maneira de escolher e me soltar?

Estou deixando isso como uma pergunta vaga, propositalmente, pois acho que se aplica a toda a área de software.

Skidushe
fonte

Respostas:

15

Você realiza uma análise de custo / benefício em cada uma das abordagens e escolhe a abordagem que tem a maior relação benefício / custo geral.

No caso de bibliotecas concorrentes que executam essencialmente a mesma função, a melhor, mais fácil e rápida maneira de executar essa análise é levantar pequenos protótipos usando cada biblioteca. Qual preferir deve então ficar abundantemente claro.

Possíveis considerações de custo / benefício para bibliotecas:

  • Manutenção
  • Fácil de usar
  • Documentação adequada
  • Curva de aprendizado
  • Desempenho geral
  • Comprar x Compilar

... etc. Observe que muitas dessas considerações podem ser um pouco subjetivas.

Se é um hobby ou uma carreira, não importa. Você (e deve) usar o mesmo processo se decidir continuar suas explorações em uma carreira real.

Estratégia alternativa de tomada de decisão: escolha a que você gosta.

Robert Harvey
fonte
4
Em caso de libs e implementações 3rd party, gostaria de acrescentar: o apoio da comunidade , versões estable (não betas, candidatos de lançamento ou instantâneos) , documentação sobre o saldo
LAIV
6
Obrigatório xkcd: xkcd.com/1445
Sebastian Redl
15

Como um adendo à excelente resposta de Robert Harvey, aqui estão meus 2 centavos:

Escolha a abordagem que parece ser o menor esforço para começar, mas certifique-se de manter a porta aberta para mudar para uma abordagem diferente quando a solução que você escolheu primeiro apresentar muitos problemas. E se você suspeitar de certos problemas em determinadas áreas do seu cenário de uso, certifique-se de implementá-las primeiro, para receber feedback antecipado, antes que seja tarde demais para reverter sua decisão inicial.

O quão bem isso funciona depende muito do caso. Por exemplo, se você precisar de uma biblioteca simples para acessar um dispositivo externo ou determinado formato de arquivo, certifique-se de encapsular todo o acesso à biblioteca em uma camada do seu aplicativo. No entanto, caso você não tenha certeza sobre qual estrutura escolher ou qual linguagem de programação escolher, provavelmente uma análise completa de custo / benefício é tudo o que você pode fazer.

Às vezes, é melhor tomar uma decisão, mesmo que seja apenas a segunda melhor, desde que você realmente a tome.

Doc Brown
fonte