Eu tenho um amigo que tem uma quantidade um pouco maior de experiência em programação como eu. Estávamos conversando sobre todas as diferentes tecnologias de programação que usamos e o Interface Builder surgiu na conversa.
Como não tenho experiência em programação, exceto pelo que aprendi, acredito que o IB e todos os seus recursos ( IBOutlets
, IBActions
) ajudam os programadores do meu nível de habilidade (e todos os níveis de habilidade) a concluir projetos deles em menos tempo.
Sua visão do IB é um pouco entusiasmada. Ele acredita que os codificadores que utilizam o Interface Builder estão "trapaceando" no fato de que não precisam criar interfaces manualmente.
Questão:
O uso de um construtor de GUI para exibir os elementos da interface deve ser considerado "trapaça" (uma vez que a maioria da programação originalmente exigia a criação manual de interfaces em código)? Por quê?
fonte
Respostas:
Não é trapaça. Programas como o IB são ferramentas. Use o caminho certo para o trabalho. Não há necessidade de ser dogmático sobre isso.
Se você for mais eficiente usando essa ferramenta, use-a. A única ressalva é que você deve aprender as vantagens e desvantagens ao tomar suas decisões. Fazer layouts manualmente oferece controle preciso às custas da facilidade de arrastar e soltar. As ferramentas de arrastar e soltar permitem fazer muitas coisas de maneira rápida e fácil, mas podem dificultar a manutenção do seu código ao longo do tempo.
Pessoalmente, nunca tive sucesso ou obtive muito prazer ao usar uma ferramenta de design de interface do usuário de arrastar e soltar, mas sou apenas eu. Acho que colocar as GUIs manualmente é o mais eficaz para mim e gera uma base de código que é mais fácil de manter ao longo do tempo. Outros têm a experiência oposta.
fonte
Programar como trabalho não é um esporte nem um jogo. Portanto, o argumento de trapaça é muito fino. Se as ferramentas visuais aumentarem sua produtividade, você seria estúpido em não usá-las. Minha experiência é que isso me leva a gastar mais tempo na resolução de problemas reais, sem fazer as coisas triviais da interface repetidamente.
Cuidado, porém, é fácil que configurações ou dados entrem na interface. Seja radical ao manter a apresentação e a lógica separadas.
fonte
É trapaça se você está sacrificando algo para chegar lá. A maioria dos layouts de GUI apenas gera código que você faria de qualquer maneira (e geralmente precisa editar manualmente, já que o layout não é suficiente).
Então basicamente não.
Tudo o resto é igual, qualquer ferramenta que permita fazer a mesma coisa mais rapidamente é boa.
fonte
Trapaça é o nome do jogo. Você deve sempre seguir o caminho mais fácil possível ao tomar qualquer tipo de decisão de desenvolvimento. Chame de trapaça, chame de "ser produtivo"; Não faz diferença. Você deve escolher a ferramenta que ajuda a realizar o trabalho com o mínimo de esforço (é claro, não se esqueça da manutenção e escalabilidade).
Agora, especificamente com o IB, você deve pesar o tempo economizado pelo IB e o custo de manter um código mais desleixado e com o qual você está menos familiarizado. Este é realmente um caso por caso e pessoa por pessoa, tipo de decisão. Em muitos casos, ferramentas e assistentes permitem que você faça muito mais trabalho com um baixo custo de manutenção adicionado ... e às vezes eles introduzem código slop e abstração com maior vazamento do que você sabe. Parece que você tomou a decisão de que o IB vale qualquer custo que isso agregue ao desenvolvimento; no entanto, seu amigo pode facilmente descobrir que a ferramenta o atrapalha mais do que ajuda.
fonte
De jeito nenhum. Fazer isso inteiramente à mão, no entanto, é um caso claro de fazer um trabalho desnecessário para si mesmo.
(Geralmente, eu o descrevia usando um construtor e, se algum ajuste fino fosse necessário, ele tende a - mas nem sempre - ser feito à mão).
fonte
Certamente não é trapaça, embora eu tenha um pouco menos de respeito por um desenvolvedor que não poderia criar uma GUI sem ela. Na IMO, usar um não é diferente de usar um tipo de dados fornecido pelo sistema - por que implementar sua própria lista vinculada ou mapa de hash se você pode usar um fora da biblioteca do sistema?
FWIW Eu tive que implementar uma interface do usuário no Java Swing alguns meses atrás. Eu nunca tinha usado, então escrevi tudo à mão para entender melhor como funcionava. Agora que conheço a API básica, nunca mais escreverei uma à mão se puder ajudá-la!
fonte
Como @Bryan Oakley afirma, é apenas uma ferramenta e não uma "fraude". Tudo depende do que exatamente você está planejando. Se à mão torna um exercício incrivelmente trabalhoso, você deve realmente procurar outras alternativas que o tornem mais produtivo.
Eu costumava estar no campo da mão codificando a interface, mas mais tarde, depois de um período de criação de interfaces, levei uma flecha no joelho e tive uma opinião diferente. Se eu puder e isso me tornar mais produtivo, eu usaria uma ferramenta gráfica para definir a GUI.
Ultimamente, usando o padrão MVVM, com a distinção de View e ViewModel, fica um pouco mais claro quando você usaria ferramentas gráficas. Phil Haack discute isso brevemente no episódio do podcast Herding Code do Github for Windows, quando perguntado sobre a transição da Web para o desenvolvimento de aplicativos. Faz mais sentido executar o ViewModel com a codificação "à mão" e permitir que o designer construa o View graficamente (e conecte os ViewModels de acordo).
fonte
Uma das grandes vantagens de ferramentas como o Interface Builder é que elas permitem separar o trabalho de design da interface do usuário da implementação do programa. Alguém com habilidades mínimas de codificação pode alterar facilmente o layout da interface do usuário, alterar as legendas do botão e do menu, traduzir a interface do usuário para um idioma diferente etc.
fonte