¿Cómo informar a los compañeros de equipo qué cambios hice en un objeto? [cerrado]

9

Supongamos que tengo un objeto PHP, digamos: companyObj.

class companyObj
{
  private company_name;
  private company_address;

  public function print_contact()
  {
    //logic
  }
}

Este es el objeto que escribí y compartí con los compañeros de equipo. Ahora me gustaría hacerlo más poderoso, así:

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

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

Ahora, ¿cómo puedo notificar a mis compañeros de equipo que mi objeto tenía más atributos que pueden establecer?

En lugar de enviar correos electrónicos a todos los miembros del equipo de desarrollo, ¿cómo hago para que el equipo sepa lo que está sucediendo, cuando no quiero que mis compañeros de equipo pierdan su tiempo para ver lo que ha cambiado en el nivel del código fuente?

Ted Wong
fuente
77
svn puede ayudar, ya que se darán cuenta de que algo ha cambiado en el código ... para que puedan actualizar directamente sus cambios (el archivo específico puede estar en su caso) ... sin tener que saber qué ha cambiado (opcionalmente si no quieren a)
PresleyDias
1
es una clase que has escrito, no un objeto :) los objetos existen en tiempo de ejecución, no en tiempo de compilación
Rune FS

Respuestas:

10

Depende mucho de la situación concreta. Supongamos que la nueva propiedad que agregó es obligatoria, es decir, debe establecerse siempre. Luego, debe buscar el código usted mismo y actualizarlo en todas partes donde companyObjse cree, para asegurarse de que se construye correctamente (incluida la configuración de la nueva propiedad). Supongo que PHP tiene constructores, en cuyo caso solo necesita agregar un nuevo parámetro de constructor y el compilador marcará automáticamente cada llamada de constructor sin el parámetro adicional como un error de compilación. Esto también asegurará que los compañeros de equipo conozcan la nueva propiedad tan pronto como usen a companyObj.

Si la nueva propiedad es opcional, sin embargo, las cosas están menos claras. Puede o no tener un valor predeterminado adecuado para ello. En el último caso, aún sugeriría que actualice todas las creaciones de instancias para establecer la nueva propiedad siempre que sea apropiado. Esto es para garantizar que el código se mantenga en un estado coherente en todo momento .

Comunicar el cambio a tus compañeros de equipo es otro paso distante aquí. Los equipos ágiles prefieren la comunicación cara a cara y, en mi humilde opinión, por una buena razón. Confiar en los documentos es un medio muy lento e ineficaz de difundir información alrededor de un equipo. Un Wiki es algo mejor, pero aún así, documentar cada atributo de clase es una exageración de mi humilde opinión. Solo se convertirá en una gran carga para el equipo, y de todos modos rápidamente se volverá poco confiable e inútil, ya que somos humanos, por lo que a veces olvidaremos la actualización, además, apuesto a que no muchos miembros del equipo lo harán regularmente revise la documentación (ya sea en cualquier forma) para informarse de los últimos cambios en el código.

Esto último también es válido para la documentación generada automáticamente a través de, por ejemplo, Javadoc o Doxygen. Aunque se pueden configurar en una compilación automática para mantener actualizada la documentación generada en todo momento, nunca he visto un equipo de desarrollo con miembros que naveguen regularmente por la documentación para informarse sobre los últimos cambios en el código. Y si está utilizando algún sistema de control de fuente, el primer lugar para notar los cambios es cuando actualiza su copia local del código de todos modos; luego puede verificar los cambios en las clases conocidas y ver exactamente qué y cómo ha cambiado (junto con un breve explicación y / o referencia a una ID de tarea, si su equipo está acostumbrado a agregar comentarios de registro significativos, que faltarán en los documentos generados automáticamente).

La comunicación es una de las principales razones por las que los equipos de Extreme Programing hacen programación en pares. Si realiza los cambios junto con un compañero de equipo, hay dos de ustedes de inmediato que conocen cada cambio, y la próxima vez que cada uno de ustedes se empareje con otra persona, la información útil se difundirá rápidamente. Sin embargo, no siempre es aplicable por varias razones. Salvo eso, simplemente puede hablar con sus vecinos sobre el cambio en un momento apropiado (por ejemplo, durante el almuerzo, si almuerzan juntos), o enviar un correo electrónico si es un cambio más grande, más importante o más complicado.

En el último caso, puede haber una buena razón para documentarlo adecuadamente. Los documentos de diseño de la OMI son mejores cuando ofrecen una visión general de alto nivel del sistema, mientras que los detalles de implementación están en el código (que se adhiere al principio DRY ).

Péter Török
fuente
2
+1 Creo que todos en el equipo deben ser educados para no actualizar "a ciegas" a la última versión del código, sino verificar brevemente qué se ha hecho y dónde antes de hacerlo. Y como dijiste, un comentario breve pero preciso es genial.
Jalayn
10

¿Has considerado simplemente hablar con ellos ? Programe una reunión breve: "hey, hice algunos cambios en el objeto X, quiero mostrarles qué cambió y por qué". O simplemente hable con cada persona individualmente si una reunión parece demasiado formal o perjudicial.

Bryan Oakley
fuente
+1, de alguna manera, ¡la respuesta más obvia no se piensa primero!
NoPuerto
2

Si tiene un equipo, probablemente también tenga un documento de diseño. Si no. empezar a hacerlo Y use alguna herramienta UML para mapear sus diseños.

DPD
fuente
77
Sin embargo, esto suena bien en principio: 1. un documento de diseño que contiene cada atributo de clase se convertirá en una molestia para mantener y sincronizar el código. 2. un diagrama UML de ingeniería inversa a partir del código está destinado a volverse prácticamente inútil en cualquier proyecto no trivial muy pronto, nuevamente debido a la gran cantidad de detalles que contiene.
Péter Török
No necesita documentar cada clase si tiene demasiadas. Solo los que componen la interfaz pública. Acuerde que para un proyecto grande se volverá engorroso, pero es mejor que no tener ningún documento que especifique cómo se comunican entre sí las distintas partes de la aplicación.
DPD
1
Estoy de acuerdo con la importancia de un documento de arquitectura / diseño de alto nivel (como se señala en mi respuesta). Sin embargo, ese es un nivel alto precisamente para que no sea necesario actualizarlo constantemente con cambios minúsculos.
Péter Török
1

Podrías usar una herramienta como doxygen dentro de tu código. Ahora cree un script que genere la documentación de doxygen y ejecútelo regularmente, tal vez como parte de su compilación nocturna (usted hace una compilación nocturna, ¿verdad?).

Creo que puede asignar un atributo personalizado en doxygen a su adición para resaltarlo como nuevo.

Si sus compañeros de equipo son buenos, revisarán la nueva documentación.

tehnyit
fuente
Tal vez nunca he trabajado con buenos compañeros de equipo, ya que nunca he visto este trabajo en la práctica :-(
Péter Török
@ PéterTörök Tengo que admitir que están lejos y pocos en el medio, incluido yo mismo.
tehnyit
0

Ahora, ¿cómo puedo notificar a mis compañeros de equipo que mi objeto tenía más atributos que pueden establecer?

Bueno, no debes informar a tus compañeros de equipo sobre cada pequeña cosa que hagas. De lo contrario, tendría que enviar muchos correos electrónicos. Si es algo importante, puede hacer una pequeña reunión y hacerles saber lo que hizo (si lo hace scrum, entonces no es necesario establecer una reunión por separado).

Si usa un IDE que admite la finalización automática, sus compañeros de equipo deberían notar su cambio. Solo espero que comentes tu código.

BЈовић
fuente