Pergunta

Eu sei que é fácil de recomendar várias bibliotecas de plataforma cruzada.

No entanto, existem benefícios para o tratamento de cada plataforma individualmente para o seu produto?

Sim, haverá algumas bibliotecas de base utilizados em todas as plataformas, mas UI e algumas outras coisas seria diferente em cada plataforma.

Eu não tenho nenhuma restrição de que o produto deve ser 100% iguais em cada plataforma.

Mac, Linux e Windows são as plataformas de destino.

Pesada win32 API, MFC é já utilizado para a versão do Windows.

A razão que eu não estou totalmente para bibliotecas de plataforma cruzada é porque eu sinto que o produto final vai sofrer um pouco na tentativa de generalizar para todas as plataformas.

Foi útil?

Solução

Eu diria que os benefícios do desenvolvimento individual para cada plataforma são:

- look and feel nativo

- conhecimento plataforma adquirido por seus desenvolvedores

-... eu estou fora de ideias

A sério, o custo de desenvolvimento e manutenção de 3 cópias separadas de seu aplicativo pode ser enorme se você não tiver cuidado.

Se é apenas o código GUI você está preocupado em seguida, por todos os meios separar a parte GUI em um esforço de desenvolvimento per-plataforma, mas você vai se arrepender de não manter o núcleo "lógica de negócios" comum tipo de código.

E dado que manter seu GUI de sua lógica separada é geralmente considerada uma boa idéia, isso iria forçar os desenvolvedores a manter essa separação quando a tentação de colocar 'um pouco' de lógica de negócios na camada de apresentação surge inevitavelmente.

Outras dicas

Eu vejo os benefícios como

  • ser capaz de obter um comportamento totalmente nativa em todas as suas plataformas, que é uma coisa boa para os usuários finais

Os riscos sendo que

  • Você pode acabar codificação três aplicativos em vez de um com algumas diferenças (ou seja, é mais fácil cair nas Deixe-nos fazer X diferente também!)
  • Você vai criar pequenas incompatibilidades entre as diferentes versões do sistema operacional sem perceber.
  • O custo de manutenção sofrerá proporcionalmente à quantidade de código diferente você tem

Assim, tomando os riscos em consideração, você pode desenvolver bons aplicativos comportando nativas, com o maior núcleo comum possível (resistindo à tentação de risco 1), um grande conjunto de testes integrados para todas as plataformas (minimizando riscos 2) e concepção para reduzir a quantidade de código necessário para obter o comportamento nativo (tendo o cuidado de risco 3)

Sim, as bibliotecas de interface do usuário de plataforma cruzada são sempre vai fazer seu olhar programa e / ou agir um pouco "estranho" em pelo menos uma plataforma.

Se você tem uma boa separação entre o código de interface do usuário e os internos, não é muito difícil de re-utilizar o código não-UI, e criar uma interface de usuário otimizada para cada plataforma. Um grande número de aplicações multi-plataforma de alta orçamento são feitas apenas desta forma.

Também depende quão diferentes suas plataformas são, e se todas as funcionalidades em uma única plataforma está disponível em outro. Eu desenvolver ferramentas que têm versões para plataformas Win32, Windows CE e móvel, e várias plataformas embarcadas. Alguns aspectos do produto simplesmente não são pertinentes para plataformas que não têm o hardware correspondente. Por exemplo, eu estou trabalhando atualmente em [texto link] um produto levantamento fundiário campo com base 1 que trabalha com uma variedade de dispositivos de medição, como estações GPS e totais, usando uma variedade de meios de comunicação, tais como Bluetooth, RS232 e modems de rádio, em uma ampla gama de plataformas. A versão específica Eu estou trabalhando atualmente em será realizado a bordo de um dispositivo de medição com uma tela relativamente pequena e teclado, e memória muito limitada e armazenamento. Não há nenhum ponto incluindo a funcionalidade relacionada com outros dispositivos, e é altamente benéfica para o usuário a manter a interface tão simples e flexíveis quanto possível.

Interfaces aerodinâmico, pequenas executáveis, e uma Tolerância zero a bloatware ainda são de extrema importância em alguns domínios. A abundância de fonte comum, com certeza, mas também abundância de fonte específica alvo e compilação condicional.

Eu não posso negar que este é atraente, mas certamente levanta a questão de um meio termo. Obviamente, você vai compartilhar algum código backend, mas o quanto você pode compartilhar eo que você vai compartilhar no lado da interface do usuário, tanto em termos de design e código?

Eu penso que este é um problema caso individual. Normalmente, ele provavelmente não vale a pena, mas algumas aplicações específicas em algumas plataformas específicas devem ser direcionados para as indicações de que o sistema operacional.

Para os programas cliente (ou seja, não programas de servidor web) é muito difícil de encontrar para encontrar bons desenvolvedores Mac e Linux, e realmente não é fácil de encontrar desenvolvedores bons Windows.

O código independente de plataforma mais você tem, mais fácil e mais rápido será para completar para o seu projeto em todas as três plataformas.

Vai ser caro e arriscado para manter três bases de código. Seu concorrente que usa ferramentas de plataforma cruzada vai vencê-lo para o mercado de cada vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top