Jak powiadomić członków zespołu, jakie zmiany wprowadziłem w obiekcie? [Zamknięte]

9

Załóżmy, że mam obiekt PHP, powiedzmy: companyObj.

class companyObj
{
  private company_name;
  private company_address;

  public function print_contact()
  {
    //logic
  }
}

To jest obiekt, który napisałem i udostępniono kolegom z drużyny. Teraz chciałbym, aby był bardziej wydajny:

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

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

W jaki sposób mogę powiadomić kolegów z drużyny, że mój obiekt ma więcej atrybutów, które mogą ustawić?

Zamiast wysyłać wiadomości e-mail do wszystkich członków zespołu programistów, jak sprawić, aby zespół wiedział, co się dzieje, gdy nie chcę, aby moi koledzy z zespołu tracili czas na przyglądanie się zmianom na poziomie kodu źródłowego?

Ted Wong
źródło
7
svn może pomóc, ponieważ dowiedzą się, że coś się zmieniło w kodzie .. więc mogą bezpośrednio zaktualizować twoje zmiany (konkretny plik może być w twoim przypadku) .. bez konieczności wiedzieć, co się zmieniło (opcjonalnie, jeśli nie chcą do)
PresleyDias
1
to klasa, którą napisałeś nie obiekt :) obiekty istnieją w czasie wykonywania nie kompilują się w czasie
Rune FS

Odpowiedzi:

10

Wiele zależy od konkretnej sytuacji. Załóżmy, że nowa właściwość, którą dodałeś, jest obowiązkowa, tzn. Musi być zawsze ustawiona. Następnie musisz samodzielnie przeszukać kod i zaktualizować go wszędzie tam, gdzie companyObjjest tworzony, aby upewnić się, że jest on poprawnie skonstruowany (w tym ustawienie nowej właściwości). Zakładam, że PHP ma konstruktory, w takim przypadku wystarczy tylko dodać nowy parametr konstruktora, a kompilator automatycznie oznaczy każde wywołanie konstruktora bez dodatkowego parametru jako błąd kompilacji. Zapewni to również, że członkowie drużyny dowiedzą się o nowej nieruchomości, gdy tylko skorzystają z companyObj.

Jeśli nowa właściwość jest opcjonalna, wszystko jest mniej jasne. Możesz mieć odpowiednią wartość domyślną. W tym drugim przypadku nadal sugerowałbym aktualizację wszystkich kreacji instancji, aby w razie potrzeby ustawić nową właściwość. Ma to na celu zapewnienie, że kod jest utrzymywany w spójnym stanie przez cały czas .

Przekazywanie zmiany członkom drużyny to kolejny, odległy krok tutaj. Zwinne zespoły wolą komunikację twarzą w twarz i, nie bez powodu, IMHO. Poleganie na dokumentach jest bardzo powolnym i nieefektywnym sposobem rozpowszechniania informacji w zespole. Wiki jest nieco lepsza, ale dokumentowanie każdego atrybutu pojedynczej klasy to przesada IMHO. Stanie się tylko ogromnym obciążeniem dla zespołu i szybko stanie się niewiarygodne i bezużyteczne, ponieważ jesteśmy ludźmi, więc czasami musimy zapomnieć o aktualizacji, ponadto założę się, że niewielu członków zespołu będzie regularnie sprawdź dokumentację (w dowolnej formie), aby uzyskać informacje o najnowszych zmianach kodu.

To ostatnie dotyczy również automatycznie generowanej dokumentacji za pośrednictwem np. Javadoc lub Doxygen. Chociaż można je skonfigurować w automatycznej kompilacji, aby stale aktualizować wygenerowaną dokumentację, nigdy nie widziałem zespołu programistów z członkami regularnie przeglądającymi dokumentację w celu uzyskania informacji o najnowszych zmianach kodu. A jeśli korzystasz z dowolnego systemu kontroli źródła, pierwszym miejscem, w którym zauważasz zmiany, jest i tak aktualizacja lokalnej kopii kodu - wtedy możesz sprawdzić zmiany w znanych klasach i zobaczyć dokładnie, co i jak się zmieniło (wraz z krótkie wyjaśnienie i / lub odniesienie do identyfikatora zadania, jeśli Twój zespół jest przyzwyczajony do dodawania znaczących komentarzy do meldowania - których brakuje w automatycznie generowanych dokumentach).

Komunikacja jest jednym z głównych powodów, dla których zespoły Extreme Programing programują w parach. Jeśli dokonasz zmian razem z członkiem drużyny, od razu dwóch z was wie o każdej zmianie, a następnym razem każdy z was sparuje się z kimś innym, więc przydatne informacje rozprzestrzeniają się dość szybko. Jednak nie zawsze ma to zastosowanie z różnych powodów. Z wyjątkiem tego, możesz po prostu porozmawiać z sąsiadami o zmianie w odpowiednim momencie (np. Podczas lunchu, jeśli zdarzy ci się razem zjeść obiad) lub wysłać wiadomość, jeśli jest to większa, ważniejsza lub bardziej skomplikowana zmiana.

W tym drugim przypadku może istnieć dobry powód, aby odpowiednio go udokumentować. Dokumenty projektowe IMHO są najlepsze, gdy oferują gruboziarnisty przegląd systemu na wysokim poziomie, podczas gdy szczegóły implementacji znajdują się w kodzie (zgodnie z zasadą DRY ).

Péter Török
źródło
2
+1 Myślę, że wszyscy w zespole powinni zostać przeszkoleni, aby nie „ślepo” aktualizować do najnowszej wersji kodu, ale krótko sprawdzić, co zostało zrobione i gdzie przedtem. I jak powiedziałeś, krótki, ale precyzyjny komentarz jest świetny.
Jalayn
10

Czy zastanawiałeś się po prostu z nimi rozmawiać ? Zaplanuj krótkie spotkanie: „hej, wprowadziłem pewne zmiany do obiektu X, chcę pokazać, co się zmieniło i dlaczego”. Lub po prostu porozmawiaj z każdą osobą indywidualnie, jeśli spotkanie wydaje się zbyt formalne lub zakłócające.

Bryan Oakley
źródło
+1, jakoś najbardziej oczywista odpowiedź nie jest brana pod uwagę jako pierwsza!
NoChance
2

Jeśli masz zespół, prawdopodobnie masz również dokument projektowy. Jeśli nie. zacznij na tym. I użyj narzędzia UML do mapowania swoich projektów.

DPD
źródło
7
Zasadniczo brzmi to jednak dobrze: 1. dokument projektowy, który zawiera wszystkie atrybuty poszczególnych klas, będzie utrudnieniem w utrzymywaniu i synchronizacji z kodem. 2. Schemat odwrotnej inżynierii kodu UML z kodu wkrótce stanie się praktycznie bezużyteczny w każdym nietrywialnym projekcie, znowu z powodu dużej ilości szczegółów w nim zawartych.
Péter Török
Nie musisz dokumentować każdej klasy, jeśli masz ich zbyt wiele. Tylko te, które składają się na interfejs publiczny. Zgadzam się, że w przypadku dużego projektu stanie się on uciążliwy, ale lepiej jest nie mieć żadnego dokumentu, który określałby, w jaki sposób różne części aplikacji komunikują się ze sobą.
DPD,
1
Zgadzam się co do znaczenia dokumentu o wysokim poziomie architektury / projektu (jak zauważono w mojej odpowiedzi). Jest to jednak wysoki poziom dokładnie, aby nie musiał być stale aktualizowany o drobne zmiany.
Péter Török,
1

Możesz użyć narzędzia takiego jak doxygen w swoim kodzie. Teraz stwórz skrypt, który wygeneruje dokumentację doxygen i uruchom ją regularnie, być może w ramach nocnej kompilacji (wykonujesz kompilację nocną, prawda?)

Myślę, że możesz przypisać niestandardowy atrybut doxygen do swojego dodatku, aby wyróżnić go jako nowy.

Jeśli twoi koledzy z drużyny są dobrzy, przejrzą nową dokumentację.

tehnyit
źródło
Może nigdy nie pracowałem z dobrymi kolegami z drużyny, ponieważ nigdy nie widziałem tej pracy w praktyce :-(
Péter Török
@ PéterTörök Muszę przyznać, że są daleko i nieliczni pośrednicy, w tym ja.
tehnyit
0

W jaki sposób mogę powiadomić kolegów z drużyny, że mój obiekt ma więcej atrybutów, które mogą ustawić?

Nie powinieneś informować kolegów z drużyny o każdym drobiazgu, który robisz. W przeciwnym razie będziesz musiał wysłać wiele e-maili. Jeśli jest to duża sprawa, możesz umówić się na małe spotkanie i poinformować ich, co zrobiłeś (jeśli robisz scrum, nie musisz ustawiać osobnego spotkania).

Jeśli używasz IDE, które obsługuje automatyczne uzupełnianie, członkowie Twojej drużyny powinni zauważyć Twoją zmianę. Mam tylko nadzieję, że skomentujesz swój kod.

BЈовић
źródło