Desenvolvendo para diferentes plataformas individualmente, alguém recomendá-lo? [fechadas]
-
02-07-2019 - |
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.
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.