Как сообщить товарищам по команде, какие изменения я внес в объект? [закрыто]


9

Предположим, у меня есть объект PHP, скажем, companyObj.

class companyObj
{
  private company_name;
  private company_address;

  public function print_contact()
  {
    //logic
  }
}

Это объект, который я написал и поделился с товарищами по команде. Теперь я хотел бы сделать его более мощным, например:

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

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

Теперь, как я могу уведомить моих товарищей по команде, что у моего объекта есть больше атрибутов, которые они могут установить?

Вместо того, чтобы посылать электронное письмо всем в команде разработчиков, как я могу заставить команду знать, что происходит, когда я не хочу, чтобы мои товарищи по команде тратили свое время, чтобы посмотреть, что изменилось на уровне исходного кода?


7
svn может помочь, поскольку они узнают, что что-то изменилось в коде .. поэтому они могут напрямую обновлять ваши изменения (конкретный файл может быть в вашем случае) .. без необходимости знать, что изменилось (необязательно, если они не хотят to)
PresleyDias

1
это класс, который вы написали, а не объект :) объекты существуют во время выполнения, а не во время компиляции
Rune FS

Ответы:


10

Это зависит от конкретной ситуации. Давайте предположим, что добавленное вами новое свойство является обязательным, то есть оно должно быть установлено всегда. Затем вы должны выполнить поиск по коду самостоятельно и обновлять его везде, где создается a companyObj, чтобы убедиться, что он построен правильно (включая установку нового свойства). Я предполагаю, что в PHP есть конструкторы, и в этом случае вам нужно всего лишь добавить новый параметр конструктора, и компилятор автоматически пометит каждый вызов конструктора без дополнительного параметра как ошибку компиляции. Это также гарантирует, что товарищи по команде узнают о новой собственности, как только они используют companyObj.

Однако, если новое свойство является необязательным, все становится не так ясно. Вы можете иметь или не иметь подходящее значение по умолчанию для него. В последнем случае я бы по-прежнему предлагал обновить все экземпляры, чтобы при необходимости установить новое свойство. Это делается для того, чтобы код постоянно находился в согласованном состоянии .

Сообщение об изменениях вашим товарищам по команде является еще одним, отдаленным шагом здесь. Agile команды предпочитают общение лицом к лицу , и, ИМХО, для этого есть все основания. Использование документов - очень медленное и неэффективное средство распространения информации в команде. Wiki несколько лучше, но, тем не менее, документирование каждого атрибута класса является ИМХО излишним. Это только станет огромным бременем для команды и быстро обречено стать ненадежным и бесполезным в любом случае, так как мы люди, поэтому мы обязаны иногда забывать об обновлениях, более того, держу пари, что не многие члены команды собираются регулярно проверьте документацию (будь то в любой форме), чтобы получить информацию о последних изменениях кода.

Последнее также верно для автоматически генерируемой документации, например, через Javadoc или Doxygen. Хотя их можно настроить в автоматическую сборку, чтобы постоянно обновлять сгенерированную документацию, я никогда не видел команды разработчиков, члены которой регулярно просматривали бы документацию, чтобы получать информацию о последних изменениях кода. И если вы используете какую-либо систему контроля версий, первое, что вы заметите, это изменения, когда вы все равно обновите свою локальную копию кода - тогда вы можете проверить наличие изменений в знакомых классах и точно увидеть, что и как изменилось (вместе с краткое объяснение и / или ссылка на идентификатор задачи, если ваша команда привыкла добавлять значимые комментарии для проверки - что будет отсутствовать в автоматически создаваемых документах).

Коммуникация - одна из главных причин, почему команды экстремального программирования занимаются парным программированием. Если вы вносите изменения вместе с товарищем по команде, сразу двое из вас знают о каждом изменении, и в следующий раз каждый из вас собирается соединиться с кем-то еще, поэтому полезная информация распространяется довольно быстро. Это не всегда применимо, хотя, по разным причинам. За исключением этого, вы можете просто поговорить со своими соседями об изменении в соответствующий момент (например, во время обеда, если вам случится обедать вместе), или отправить письмо по электронной почте, если это большее, более важное или более сложное изменение.

В последнем случае может быть веская причина для правильного документирования. Проектные документы IMHO являются лучшими, когда они предлагают грубый, подробный обзор системы, а детали реализации находятся в коде (придерживаясь принципа СУХОЙ ).


2
+1 Я думаю, что все в команде должны быть обучены, чтобы не «вслепую» обновлять последнюю версию кода, но кратко проверить, что было сделано и где, прежде чем делать это. И, как вы сказали, короткий, но точный комментарий - это здорово.
Джалайн

10

Рассматривали ли вы просто поговорить с ними ? Запланируйте короткую встречу: «Эй, я внес некоторые изменения в объект X, я хочу показать вам, что изменилось и почему». Или просто поговорите с каждым индивидуально, если встреча кажется слишком формальной или разрушительной.


+1, почему-то самый очевидный ответ не придуман первым!
NoChance

2

Если у вас есть команда, у вас, вероятно, также есть проектный документ. Если не. начать на этом. И используйте некоторый инструмент UML, чтобы отобразить ваши проекты.


7
Однако в принципе это звучит хорошо: 1. Проектный документ, который содержит каждый отдельный атрибут класса, станет проблемой в поддержании и синхронизации с кодом. 2. UML-диаграмма, созданная из кода, скоро станет практически бесполезной в любом нетривиальном проекте, опять же из-за огромного количества деталей в нем.
Петер Тёрёк

Вам не нужно документировать каждый отдельный класс, если у вас их слишком много. Только те, которые составляют публичный интерфейс. Согласитесь, что для большого проекта это станет громоздким, но это лучше, чем отсутствие какого-либо документа, в котором указано, как различные части приложения взаимодействуют друг с другом.
DPD

1
Я согласен с важностью документа архитектуры / дизайна высокого уровня (как отмечено в моем ответе). Однако это высокий уровень именно для того, чтобы его не нужно было постоянно обновлять незначительными изменениями.
Петер Тёрёк

1

Вы можете использовать такой инструмент, как Doxygen в вашем коде. Теперь создайте сценарий, который будет генерировать документацию по Doxygen и запускать его регулярно, возможно, как часть вашей ночной сборки (вы делаете ночную сборку, верно?).

Я думаю, что вы можете назначить пользовательский атрибут в doxygen вашему дополнению, чтобы выделить его как новый.

Если ваши товарищи по команде хороши, они будут проходить новую документацию.


Возможно, я никогда не работал с хорошими товарищами по команде, поскольку я никогда не видел эту работу на практике :-(
Péter Török

@ PéterTörök Я должен признать, что они далеки друг от друга, включая меня.
Технит

0

Теперь, как я могу уведомить моих товарищей по команде, что у моего объекта есть больше атрибутов, которые они могут установить?

Ну, вы не должны сообщать своим товарищам по команде о каждой мелочи, которую вы делаете. В противном случае вам придется отправлять много писем. Если это большая вещь, тогда вы можете устроить маленькое собрание и сообщить им, что вы сделали (если вы делаете разборки, вам не нужно назначать отдельное собрание).

Если вы используете IDE, которая поддерживает автозаполнение, ваши товарищи по команде должны заметить ваши изменения. Я просто надеюсь, что вы прокомментируете свой код.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.