Isso pode ser um balde de água fria (principalmente considerando que esse é o nosso segundo post), mas creio que é algo que deva ser dito com antecedência.
Para explicar a ausência de uma ferramenta desse tipo, as palavras de Jeroen van der Zijp, o próprio idealizador do FOX:
Sem dúvida, desenho de interface WYSIWYG (What You See Is What You Get - O que você vê é o que você tem) é legal. Mas eu suspeito que há motivos para que nenhum projeto de construtor de interface tenha sido levado a cabo até agora:
1) A construção de componentes do FOX Toolkit é feita com C++ bem compacto.
Já que isso é feito dentro de seu ambiente de edição confortável, cortar e colar código é mais rápido que devanear pela tela.
Pelo menos é isso que eu faço. Todos os meus menus são copiados e modificados a partir do primeiro que eu digitei. Quero apostar que posso fazer isso mais rápido em meu editor que abrir um construtor de interface, carregar um arquivo que descreve a interface, sair clicando com o mouse e escrever o arquivo de volta.
2) Muitos usuários do FOX Toolkit vêm de ambientes onde colocação programática e gerenciadores de layout eram a norma.
Colocar componentes usando gerenciadores aninhados requer um pouco mais de planejamento que desenhar interativamente na tela; entretanto, eu arrisco dizer que também leva a interfaces melhores.
Diálogos redimensionáveis são bem fáceis quando se usam gerenciadores de layout, e um desenhista de interface competente determinará que controles podem tirar vantagem desta capacidade de desenhar e acordo.
Como contra-exemplo, pense na minúscula caixa de texto onde você é forçado a informar suas opções de compilador no Visual Studio.
Então há a habilidade de mudar tamanhos de fonte, conteúdo de rótulos (labels), e ícones. Gerenciadores de layout automaticamente se recalculam baseados em seu conteúdo, e então mudar fontes ou legendas nos botões não requer nenhum redesenho ou devaneio com um construtor de interface.
Este recurso também será muito útil quando programadores passarem para outra linguagens.
3) A interface é apenas uma pequena parte de um projeto de programação típico.
Se você puder construir um controle de interface em uma única linha de código, mas gasta dúzias de linhas tratando sua funcionalidade na aplicação, você não economizou trabalho algum só por eliminar essa única linha.
É melhor tentar eliminar essas dúzias de outras linhas.
E é exatamente isso o que fazemos no FOX Toolkit por meio do FXDataTarget e a capacidade de interconexão entre componentes para reduzir a quantidade de "cola" entre os componentes e aquilo que eles controlam.
4) As tentativas até agora não suportaram a evolução a longo prazo das interfaces.
Vamos encarar, nenhum programa começa com a interface toda em sua forma final. Se uma ferramenta de design não provê suporte para toda a duração do projeto, realmente não será extremamente útil.
Em particular, deve suportar a modificação de design de interfaces que já estão enganchadas a funcionalidades da aplicação.
5) Usar interfaces criadas programaticamente, junto com gerenciadores de layout, torna fácil criar blocos de controles de interface dirigidos por dados.
Misturar controles gerados por construtores de interface com controles programáticos pode ser difícil devido à rigidez das posições no código gerado pelo construtor de interface.
Esta não é uma desculpa para a falta de um designer de interface para o FOX Toolkit, mas uma análise justa dos fatos, pelo menos como eu os vejo.
Eu gosto do conceito de Construtores de Interface, mas eu provavelmente teria que admitir que eu mesmo preferiria não me importar em usá-los para meus próprios projetos mesmo se existissem, devido ao efeito bem marginal [e possivelmente até negativo!] em minha produtividade.
Eu já usei construtores de interface e o conhecimento adquirido dessa experiência é que eu fico muito feliz em fazer desenhos com essas ferramentas, mas não consigo muito no sentido de trabalho real.
---
Esta dúvida foi retirada da lista de e-mails de usuários do FOX Toolkit. Leia a conversa toda aqui (em inglês).
Nenhum comentário:
Postar um comentário