O que você consideraria ferramentas de fluxo de trabalho de melhores práticas para o desenvolvimento de aplicativos Web (PHP)? [fechadas]


18

Eu realmente espero que alguém com mais experiência possa editar a pergunta de acordo com meus exemplos de respostas:

  • usando controle de versão
  • desenvolvimento orientado a testes
  • código de depuração (xdebug para php)
  • uso de diagramas UML
  • uso de OOP para código reutilizável e sustentável
  • uso de frameworks (como Zend Framework para php) para desenvolvimento rápido de aplicativos

Mais alguma coisa ou uma elaboração do que mencionei acima?

Basicamente, estou no meio da formação de uma equipe de desenvolvedores (eu também sou desenvolvedor) e gostaria de alguns conselhos sobre como programadores / designers profissionais etc. devem trabalhar juntos e quais padrões / paradigmas eles devem usar.

Além disso, se alguém tiver algum livro ou link sobre o assunto, eu agradeceria!

Achei isso que acho que satisfaz o que estou procurando, ou pelo menos parte dele:

http://www.ibm.com/developerworks/websphere/library/techarticles/0306_perks/perks2.html

Respostas:


9

usando controle de versão

O SVN é muito comum, mas o mercurial é mais bonito, poderoso e tem um sólido suporte de GUI.

desenvolvimento orientado a testes

bem, se você fizer testes de unidade, já estará do lado vencedor. para ferramentas, é uma questão de escolha. O teste deve ser o mais fácil possível, essa é a razão pela qual eu deixei o PHPUnit para o SimpleTest.

código de depuração

com testes de unidade, você dificilmente precisará do xdebug. Eu uso o xdebug normalmente apenas para criação de perfil. (consulte o KCachegrind)

uso de diagramas UML

o maior problema de tudo o que reflete a lógica do código é que é muito trabalho manual manter-se sincronizado. você pode automatizar algumas tarefas, mas não é tão útil, porque geralmente você deseja usar uml antes de ter qualquer coisa. o outro problema é que as ferramentas de diagrama são muito mais difíceis de usar do que caneta e papel ou um quadro branco. use uml se precisar comunicar um problema com vários desenvolvedores ou se precisar de uma abstração para si mesmo. ("dia" é uma boa ferramenta gratuita. também as ferramentas de mapeamento mental são muito úteis para o brainstorming, algumas podem realmente competir com papel e caneta.)

uso de OOP para código reutilizável e sustentável

bem, oop funciona até certo ponto. :) um bom conselho: composição> herança. A herança é uma ferramenta poderosa para reutilizar à primeira vista, mas a manutenção e o acoplamento frouxo sofrerão por isso. segundo bom conselho: manutenção> reutilização. um sistema abstrato pode ser muito poderoso, mas também difícil de manter.

uso de frameworks (como Zend Framework para php) para desenvolvimento rápido de aplicativos

O RAD é uma boa coisa para lançar seu aplicativo mais cedo. mas alguns componentes - especialmente o ORM - disparam nos pés, pelo menos no que diz respeito à escalabilidade. o principal problema aqui é que você vincula sua lógica de domínio ao trabalho com objetos, o que torna muito difícil determinar se você precisa de uma solução otimizada de banco de dados escalável pura. esteja ciente disso e incentive seus desenvolvedores a utilizar o banco de dados sem camadas de abstração de alto nível. abstração de banco de dados é um mito, orm é uma mentira.

BEIJO

os recém-chegados geralmente querem aplicar todas essas práticas recomendadas, configurar padrões de codificação, usar todas as cadeias de ferramentas legais, qualquer que seja. isso funciona para alguns desenvolvedores, mas alguns terão um bloqueio mental se as coisas forem muito rígidas. teste de unidade e scm é realmente um item obrigatório, mas alguém novo no teste de unidade realmente precisa aprender seu valor antes que ele o ame. não exagere, aplique práticas passo a passo e veja como funciona. O KISS também se resume ao código. Às vezes, a melhor maneira de resolver um problema difícil é resolvê-lo errado. você precisa de um algoritmo de seis graus de separação ? basta escolher alguns amigos aleatoriamente. você pode criar um aplicativo completo em torno dele, com lógica incorreta. se o cliente finalmente decidir abandoná-lo, todos economizarão muito dinheiro.

ágil

aprenda sobre metodologias ágeis, programação extrema, scrum, etc. existem muitos livros por aí. qualquer livro tornará sua equipe melhor, mas é melhor incluir todos os colegas de equipe.


1
Resposta fantástica! Obrigado. +150 representante para você, senhor! Sinta-se à vontade para adicionar mais alguma coisa à postagem, como será apresentado na parte superior da página, sob a pergunta. Coisas como @TODO no software de código, comentários e documentação, etc #
Damien Roche

2
  • Controle de versão: No Windows, o TortoiseSVN é o melhor, mais intuitivo e mais fácil de usar na minha experiência.

  • Estrutura: CodeIgniter . Mãos na melhor plataforma de desenvolvimento web para PHP.

  • IDE: O Netbeans é o melhor IDE para PHP que usei no Windows.

  • Teste de unidade: Existem várias opções, uma pesquisa no Google vai aparecer muitas. O CodeIgniter também tem seu próprio testador de unidade disponível.

  • Depurador: Xdebug.

  • Biblioteca Javascript: Jquery

  • Programa FTP: FileZilla

  • Administração de Banco de Dados: PhpMyAdmin

  • Wireframing: Balsimus Mockup ou use um quadro branco.

  • Misc: Use o WAMP no Windows para instalar, iniciar, parar e reiniciar facilmente apache, mysql e php em um único pacote.

Além disso, se você estiver trabalhando em muitos sites diferentes, e a maioria desses sites tiver algumas funções comuns como inscrição, login / logout, uma seção administrativa para pesquisar usuários, etc., recomendo a criação de um pequeno projeto em qualquer estrutura você escolhe e usa esse projeto como base para todos os novos projetos iniciados. Normalmente eu chamo esse projeto de 'esqueleto'. Se vou começar a trabalhar no xyz.com, copio o diretório skeleton e o renomeio como 'xyz.com', preenche alguns arquivos de configuração e tenho uma cópia do xyz.com com alguns dos recursos já está trabalhando.


1
Depois de ler esta postagem e ver que eu já uso vários dos itens recomendados, decidi experimentar o Netbeans IDE. Alguém pode recomendar algum plug-in que valeria a pena usá-lo para o desenvolvimento de PHP / Codeigniter? Além disso, ele pode funcionar bem com o Wampserver?
Gortron

1
@Gortron Eu uso o netbeans com codeigniter. Existe uma ferramenta de preenchimento automático para codeigniter / netbeans: rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans PHP é realmente uma linguagem unix no coração e o desenvolvimento em uma máquina virtual linux é uma boa idéia. Evite também o subversion, é 2010 use algo distribuído (git, hg, bzr). hginit.com
Keyo

Framework: CodeIgniter. Hands on the best web development platform for PHP.Francamente, isso é besteira. Se você já usou o symfony, rails ou django, verá alguns problemas importantes. Não há estrutura de diretório modular, nem interface de linha de comando. Então você tem componentes principais, como formulários e modelos, ocupando muito código. Se você conhece algum padrão de software, verá que o codeigniter é péssimo. No mínimo, use o Kohana, que é CI bifurcado e feito corretamente após a morte da comunidade.
Keyo

Se você estiver no Windows, eu recomendaria o SQLyog (eles têm uma edição da comunidade ) em vez do phpMyAdmin. Eu nunca encontrou um substituto decente para SQLyog no Linux, que é uma vergonha ...
Dean Harding

1
@keyo, obrigado pelo link. Eu adicionei a ferramenta de preenchimento automático ao Netbeans, muito útil para um projeto com muitas funções nos modelos. Acho que não vou mudar de SVN ainda, sou apenas um exército de 1, não há necessidade de sistemas distribuídos no momento.
Gortron

2

Concordo principalmente com a publicação do Click Upvote, no entanto, se você estiver trabalhando em um site relativamente grande, eu recomendaria definitivamente o uso da estrutura Symfony juntamente com o Doctrine ORM.

Se o seu projeto está previsto para o próximo ano, eu diria que dedique um tempo para investir no Symfony2 e no Doctrine2.

Além disso, não posso enfatizar o suficiente a importância do desenvolvimento em sistemas baseados em Unix, o Ubuntu é a minha preferência e um excelente servidor web. Eu trabalho principalmente no Windows, mas desenvolvo no Ubuntu rodando em uma máquina virtual VMWare na minha área de trabalho (ou servidor quando estou no trabalho).

Quanto ao IDE, eu recomendo o uso do NuSphere PHPEd ou Storm PHP, infelizmente, como todas as coisas boas, elas não são gratuitas.


+1 para um ORM. Passei inúmeras horas escrevendo consultas padronizadas no codeigniter.
Keyo

O PHP é muito melhor em um sistema baseado em Linux. Especialmente se você quiser usar um plug-in baseado em C (libmemcached ou ImageMagick vêm à mente)
Dean Harding

algumas coisas ótimas são gratuitas, e o linux?
dan_waterworth

0

O uso do diagrama UML é bom, mas é totalmente opcional. Quaisquer diagramas servirão desde que sua equipe entenda o que eles significam. Tentar usar o padrão que ninguém realmente conhece bem pode levar a problemas e perda de tempo.

Eu recomendaria iniciar cada página de uma maquete ( http://balsamiq.com ) ou ter seu designer para desenhá-la para você. Não espere que os desenvolvedores sejam bons em estética visual e criem boas páginas do nada.

Peça a alguém designado para a tarefa de revisão de código, se você tiver vários membros seniour da equipe - faça-os fazer revisões em rotação ( Quadro de Revisão )


0

Ao lidar com o trabalho colaborativo, você precisa:

• usando o controle de versão: acho que o Git ou o Subversion funcionará perfeitamente

• desenvolvimento orientado a testes: estou começando a aprender que isso é uma obrigação, mas não leve ao extremo

• código de depuração (xdebug para php): xdebug é a minha escolha

• uso de diagramas UML: isso ajuda quando todos têm conhecimento prático sobre padrões de programação e design OO, no entanto, é sempre uma boa prática

• uso de OOP para código reutilizável e sustentável: E FLEXIBILIDADE, acho que esse é o aspecto principal do OOP.

• uso de frameworks (como Zend Framework para php) para desenvolvimento rápido de aplicativos: My Advise é SYMFONY, o primeiro framework php (não é um kit de ferramentas). Ele tem uma comunidade muito grande, muita documentação e é totalmente implementado em php. Eu trabalho com ele há um ano e ele se liga totalmente ao OOP

• Você também pode precisar de um sistema para rastrear bugs, solicitações de recursos, etc., como: Mantis ou Track . Este sistema é bastante fácil e direto. Eles também permitem que você vincule sua subversão e relacione seus commits a determinados recursos ou bugs que as pessoas publicam.

Por fim, é sempre importante que você esteja liderando uma equipe de desenvolvimento para realizar pequenas reuniões periodicamente, para que todos saibam o status do sistema em um determinado momento e, talvez, dessa forma, você seja capaz de planejar ou ver como as coisas estão funcionando.

Na minha empresa, tenho que enviar um e-mail todos os dias informando no que estou trabalhando e se houver alguma complicação.

Boa sorte!


0
  • Framework : codeigniter, sem dúvida. Ele tem todas as funcionalidades que você nunca pode precisar, e não forçá-lo a usar qualquer um deles a menos que você fazer necessidade deles;
  • Controle de versão, IDE : Eu sou bastante antiquado e não acho que minha resposta possa realmente ajudá-lo;
  • Wireframing, UML : velha escola nisso também, mas realmente: os quadros brancos vencem. Eles são flexíveis, extensíveis e suportam qualquer convenção que você achar conveniente;
  • Administração de banco de dados : phpmyadmin;
  • Sistema operacional do servidor de desenvolvimento : Eu posso ser banal, mas: Ubuntu. Instale um servidor LAMP em segundos; não entre em pânico por adicionar novas bibliotecas (o temido imagick: um comando, pronto); se você gosta de PHP, provavelmente acabará trabalhando no servidor Linux em produção, por isso é melhor começar a praticar. (Aviso: Ubuntu não é minha distribuição favorita).
  • Misc : grep pode ser incrivelmente útil ao depurar o código de outras pessoas (quer saber quantos controladores usam um determinado modelo? Concluído!).

editar

Esqueci a coisa mais importante: especificações. Escreva especificações reais para o seu projeto antes de tocar em qualquer código. Tenha em mente todos os diagramas de interação do usuário. Isso vai te salvar séculos.


0

Controle de versão Como você trabalha em equipe, é de seu interesse que você escolha algo distribuído. Seus candidatos são Git e Mercurial. Isso significa que sua equipe pode se comprometer localmente sem interromper o projeto, mas ainda acompanhar o trabalho deles, depois enviá-los ao servidor central. Também é muito mais rápido e possui menos conflitos de mesclagem, pois o código é rastreado como conjuntos de alterações em vez de revisões. Leia o guia hginit (escrito pelo co-fundador do estouro de pilha) e você entenderá um pouco mais sobre o que é um DVCS. http://hginit.com/

Você também deve usar o repositório para implantação em vez de rsync ou ftp.

Desenvolvimento Orientado a Testes Dependendo do que você está fazendo, os testes podem perder muito tempo. Não estou dizendo que você deve ignorá-lo completamente, para projetos menores está sobrecarregado. Se você estiver escrevendo uma biblioteca ou um projeto de longo prazo, certifique-se de escrever testes para ele. Os testes ajudarão na fase de manutenção. Esteja ciente de que o TDD não consegue encontrar todos os seus erros. Haverá problemas de experiência do usuário, problemas de layout, problemas de desempenho e assim por diante.

Depurar o Xdebug é basicamente sua única opção aqui. Ele se integra bem ao Netbeans. Se você sentir a necessidade de imprimir variáveis, use um arquivo de log. Use a função de log de estruturas, isso é muito mais seguro na produção.

Planejamento / diagramas Se você estiver usando uma boa estrutura, não precisará criar muito diagramas detalhados. Mantenha-o simples e trabalhe em ciclos mais curtos de liberação, é fácil planejar demais. Os requisitos e especificações de um projeto estão sujeitos a alterações, para que eu não gaste todo o seu tempo neles. Lembre-se de que a especificação do código IS está no nível mais detalhado.

Use sua ferramenta de rastreamento de erros (veja abaixo) para dividir a especificação em tarefas que você pode atribuir aos membros da equipe. Use uma ferramenta central para documentar os projetos, o rastreador de erros provavelmente terá um wiki.

Você pode usar uma ferramenta como o Mysql Workbench para projetar esquemas de banco de dados em diagramas e exportá-los como SQL.

Estruturas e POO Esta é provavelmente a parte mais importante. Encontre uma estrutura popular que suporte o desenvolvimento rápido e a reutilização de código. Algumas pessoas não gostam que eu diga isso, mas uma estrutura deve ditar a maneira como você trabalha. Ele deve fornecer estrutura para que um desenvolvedor possa alternar projeto e saber exatamente onde está o controlador para uma determinada página, exatamente quais são as variáveis ​​do modelo e como consultar o modelo. Algumas estruturas permitem muita flexibilidade aqui e você verá que os desenvolvedores nem sempre usam a estrutura da mesma maneira. Eu gosto da filosofia python; deve haver uma maneira óbvia de fazer tudo. É por isso que eu gosto de django e rails, eles são bastante opinativos e isso significa que eu posso olhar o código de alguém e entender o que ele faz. O Symfony parece a melhor opção aqui,

Existem muitas perguntas sobre 'qual estrutura' no estouro de pilha como esta: /programming/2648/what-php-framework-would-you-choose-for-a-new-application-and-why

Rastreamento de erros Obtenha à sua equipe um bom rastreador de erros feito para desenvolvedores. Não use algo simplificado como o basecamp. Redmine e Unfuddle são dois exemplos de excelentes rastreadores de bugs, eles também podem rastrear o tempo e se integrar aos seus repositórios. Sua equipe deve usar esta ferramenta para se comunicar sobre problemas, em vez de email ou mensagens instantâneas. Isso facilita para um novo desenvolvedor quando existe um histórico de bugs e documentos disponíveis. Este artigo explica exatamente o que qualquer bom rastreador de erros precisa fazer e por quê. http://www.joelonsoftware.com/articles/fog0000000029.html


0

Eu recomendo olhar o Bazaar para controle de versão. Comparado ao Git, possui a grande vantagem de ser realmente fácil de usar e instalar no Windows, Mac OS e Linux. Além disso, os comandos bzr são muito parecidos com os do seu svn, portanto, alguém que já trabalhou com o Subversion pode facilmente usar o Bazaar sem muita curva de aprendizado. Eu estou olhando para você, Git.

Além disso, acredito firmemente em não impor nada aos seus desenvolvedores. Dito isto, deixe-os usar o IDE, sistema operacional e assim por diante.

Além disso, recomendo fortemente que você faça testes para todo o seu código, por mais tedioso que seja.

A decisão a favor ou contra um imho de estrutura não é algo que você pode fazer com base nas recomendações feitas aqui. Sugiro que você liste os que parecem promissores para você com base em seus recursos e, em seguida, escreva um pequeno aplicativo de teste em cada um deles. (Escreva o mesmo de cada vez.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.