Como informar aos colegas de equipe quais alterações eu fiz em um objeto? [fechadas]

9

Suponha que eu tenha um objeto PHP, digamos: companyObj.

class companyObj
{
  private company_name;
  private company_address;

  public function print_contact()
  {
    //logic
  }
}

Este é o objeto que escrevi e compartilhei com os colegas de equipe. Agora eu gostaria de torná-lo mais poderoso, assim:

class companyObj
{
  private company_name;
  private company_address;
  private company_contact_person;

  public function print_contact()
  {
    //logic updated
  }
}

Agora, como posso notificar meus colegas de equipe que meu objeto tinha mais atributos que eles podem definir?

Em vez de enviar email para todos na equipe de desenvolvimento, como faço para que a equipe saiba o que está acontecendo, quando não quero que meus colegas desperdiçam seu tempo olhando o que mudou no nível do código-fonte?

Ted Wong
fonte
7
svn pode ajudar, pois eles saberão que algo mudou no código .. para que possam atualizar diretamente suas alterações (arquivo específico pode estar no seu caso) .. sem precisar saber o que mudou (opcionalmente, se não quiserem)
PresleyDias
11
é uma classe que você escreveu não um objeto :) existem objetos em tempo de execução tempo não compilação
Rune FS

Respostas:

10

Depende muito da situação concreta. Vamos assumir que a nova propriedade que você adicionou é obrigatória, ou seja, deve ser definida sempre. Em seguida, você deve pesquisar o código por conta própria e atualizá-lo onde quer que companyObjseja criado, para garantir que ele seja construído corretamente (incluindo a configuração da nova propriedade). Suponho que o PHP tenha construtores; nesse caso, você só precisará adicionar um novo parâmetro de construtor e o compilador marcará automaticamente cada chamada de construtor sem o parâmetro extra como um erro de compilação. Isso também garantirá que os colegas aprendam sobre a nova propriedade assim que usarem um companyObj.

Se a nova propriedade for opcional, no entanto, as coisas serão menos claras. Você pode ou não ter um valor padrão adequado para ele. No último caso, eu ainda sugiro que você atualize todas as criações de instância para definir a nova propriedade sempre que apropriado. Isso é para garantir que o código seja mantido em um estado consistente o tempo todo .

Comunicar a mudança aos seus colegas de equipe é outro passo distante aqui. Equipes ágeis preferem comunicação cara a cara e IMHO por um bom motivo. Depender de documentos é um meio muito lento e ineficaz de espalhar informações pela equipe. Um Wiki é um pouco melhor, mas ainda assim, documentar cada atributo de classe é um exagero no IMHO. Isso só se tornará um fardo enorme para a equipe e rapidamente se tornará não confiável e inútil de qualquer maneira, como somos seres humanos, então devemos esquecer a atualização às vezes. Além disso, aposto que muitos membros da equipe não vão regularmente verifique a documentação (seja de que forma for) para se informar sobre as alterações mais recentes do código.

O último também é válido para a documentação gerada automaticamente via, por exemplo, Javadoc ou Doxygen. Embora eles possam ser configurados em uma compilação automática para manter a documentação gerada sempre atualizada, nunca vi uma equipe de desenvolvimento com membros navegando regularmente pela documentação para ser informado sobre as alterações mais recentes do código. E se você estiver usando qualquer sistema de controle de origem, o primeiro lugar para observar as alterações é quando você atualiza sua cópia local do código de qualquer maneira - você pode verificar se há alterações nas classes familiares e ver exatamente o que e como mudou (junto com um breve explicação e / ou referência a um ID de tarefa, se sua equipe estiver acostumada a adicionar comentários significativos nos check-ins - que estarão ausentes nos documentos gerados automaticamente).

A comunicação é uma das principais razões pelas quais as equipes de programação extrema combinam programação. Se você fizer as alterações junto com um companheiro de equipe, há imediatamente dois que sabem sobre cada alteração e, na próxima vez em que cada um de vocês se unir a outra pessoa, informações úteis se espalharão rapidamente. Nem sempre é aplicável, por várias razões. Exceto isso, você pode simplesmente conversar com seus vizinhos sobre a mudança em um momento apropriado (por exemplo, durante o almoço, se por acaso almoçar juntos) ou enviar um e-mail se for uma mudança maior, mais importante ou mais complicada.

Neste último caso, pode haver um bom motivo para documentá-lo corretamente. Os documentos de design do IMHO são melhores quando oferecem uma visão geral grosseira e de alto nível do sistema, enquanto os detalhes da implementação estão no código (aderindo ao princípio DRY ).

Péter Török
fonte
2
+1 Acho que todo mundo na equipe precisa ser educado para não atualizar "cegamente" a versão mais recente do código, mas verificar brevemente o que foi feito e onde antes de fazê-lo. E como você disse, um comentário curto mas preciso é ótimo.
Jalayn
10

Você já pensou em simplesmente conversar com eles ? Agende uma breve reunião: "ei, fiz algumas alterações no objeto X, quero mostrar o que mudou e por quê". Ou apenas converse com cada pessoa individualmente se uma reunião parecer muito formal ou perturbadora.

Bryan Oakley
fonte
+1, de alguma forma a resposta mais óbvia não é pensada primeiro!
NoChance
2

Se você tem uma equipe, provavelmente também possui um documento de design. Se não. começar nele. E use alguma ferramenta UML para mapear seus projetos.

DPD
fonte
7
No entanto, isso soa bem em princípio: 1. um documento de design que contenha todos os atributos de uma classe se tornará um problema para manter e manter sincronizado com o código. 2. Um diagrama UML projetado de forma reversa a partir do código provavelmente se tornará praticamente inútil em qualquer projeto não trivial muito em breve, novamente devido à grande quantidade de detalhes nele.
Péter Török
Você não precisa documentar todas as classes, se tiver muitas. Apenas os que compõem a interface pública. Concorde que, para um projeto grande, ele se tornará complicado, mas é melhor do que não ter nenhum documento que especifique como as várias partes do aplicativo se comunicam.
DPD
11
Concordo com a importância de um documento de arquitetura / design de alto nível (como observado na minha resposta). No entanto, esse é um nível alto precisamente para que não precise ser constantemente atualizado com alterações minúsculas.
Péter Török
1

Você pode usar uma ferramenta como doxygen dentro do seu código. Agora crie um script que gere a documentação doxygen e execute-a regularmente, talvez como parte de sua construção noturna (você faz uma construção noturna, certo?).

Eu acho que você pode atribuir um atributo personalizado no doxygen à sua adição para destacá-lo como novo.

Se seus colegas de equipe forem bons, eles passarão pela nova documentação.

tehnyit
fonte
Talvez eu nunca tenha trabalhado com bons companheiros de equipe, como eu nunca vi este trabalho na prática :-(
Péter Török
@ PéterTörök Eu tenho que admitir que eles estão longe e são poucos, inclusive eu.
8113 #
0

Agora, como posso notificar meus colegas de equipe que meu objeto tinha mais atributos que eles podem definir?

Bem, você não deve informar seus colegas de equipe sobre tudo o que faz. Caso contrário, você teria que enviar muitos e-mails. Se isso é importante, você pode fazer uma pequena reunião e informar o que você fez (se você faz o scrum, não é necessário marcar uma reunião separada).

Se você usa um IDE compatível com o preenchimento automático, seus colegas de equipe devem observar sua alteração. Eu só espero que você comente seu código.

BЈовић
fonte