チームメイトにオブジェクトに加えた変更を知らせる方法は?[閉まっている]


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

ただし、新しいプロパティがオプションの場合、状況は明確ではありません。適切なデフォルト値がある場合とない場合があります。後者の場合でも、すべてのインスタンスの作成を更新して、必要に応じて新しいプロパティを設定することをお勧めします。これは、コードが常に一貫した状態に保たれるようにするためです

チームメイトに変更を伝えることは、ここでのもう1つの遠いステップです。アジャイルチームは、顔を合わせてコミュニケーションすることを好みますが、IMHOには正当な理由があります。ドキュメントに依存することは、チーム全体に情報を広めるための非常に遅くて非効率的な手段です。Wikiの方がいくらか優れていますが、それでも、すべてのクラス属性を文書化することはIMHOのやりすぎです。これはチームにとって大きな負担になるだけで、とにかく信頼性がなくなり、役に立たなくなることになります。私たちは人間なので、更新を忘れることがあります。さらに、多くのチームメンバーが定期的に参加することはないでしょう。ドキュメントをチェックして(どのような形式であっても)、最新のコード変更に関する情報を入手してください。

後者は、JavadocやDoxygenなどを介して自動的に生成されるドキュメントにも当てはまります。自動ビルドに構成して、生成されたドキュメントを常に最新の状態に保つことができますが、メンバーがドキュメントを定期的に参照して最新のコード変更について通知を受ける開発チームを見たことはありません。そして、ソース管理システムを使用している場合、変更に気付く最初の場所は、とにかくコードのローカルコピーを更新するときです。その後、おなじみのクラスの変更をチェックし、何がどのように変更されたかを正確に確認できます(チームが意味のあるチェックインコメント追加することに慣れている場合の簡単な説明やタスクIDへの参照-自動生成されたドキュメントには表示されなくなります)。

コミュニケーションは、エクストリームプログラミングチームがペアプログラミングを行う主な理由の1つです。チームメイトと一緒に変更を加えると、各変更についてすぐに知っている2人がいます。次回は、それぞれが他の誰かとペアになる予定なので、役立つ情報がすぐに広まります。ただし、さまざまな理由により、常に適用できるとは限りません。それを除けば、適切な瞬間(たとえば、昼食時、一緒に昼食をとった場合)に変更について近所の人に話すか、それがより大きく、より重要な、またはより複雑な変更である場合は、メールを送信することができます。

後者の場合、それを適切に文書化する正当な理由があるかもしれません。IMHO設計ドキュメントは、実装の詳細がコードにある(DRY原則に準拠している)システムの大まかな高レベルの概要を提供する場合に最適です。


2
+1チームの全員が、コードの最新バージョンに「盲目的に」更新するのではなく、何がどこで何を行ったかを簡単に確認してからそれを行うように教育を受ける必要があると思います。そして、あなたが言ったように、短くて正確なコメントは素晴らしいです。
Jalayn、2012

10

単に彼ら話すことを考えましたか?短い会議をスケジュールします。「ねえ、オブジェクトXにいくつかの変更を加えました。何が変更されたのか、そしてその理由をお見せしたいのです」。または、会議があまりにも形式的または破壊的であると思われる場合は、各個人に個別に話します。


+1、どういうわけか最も明白な答えは最初に考えられていません!
NoChance

2

チームがあれば、おそらく設計ドキュメントもあるでしょう。そうでない場合。始めましょう。そして、UMLツールを使用してデザインをマッピングします。


7
ただし、これは原則的に良さそうです。1.すべての単一のクラス属性を含む設計ドキュメントは、コードとの同期を維持し、維持するのに苦労します。2.コードからリバースエンジニアリングされたUMLダイアグラムは、非常に多くの詳細が原因で、非常にすぐに、重要なプロジェクトでは実質的に役に立たなくなります。
ペーテルTörök

クラスが多すぎる場合は、すべてのクラスをドキュメント化する必要はありません。公開インターフェースを構成するものだけです。大規模なプロジェクトの場合は面倒になることに同意しますが、アプリケーションのさまざまな部分が互いにどのようにやり取りするかを指定するドキュメントを用意しないよりはましです。
DPD、2012

1
(私の回答で述べたように)高レベルのアーキテクチャ/設計ドキュメントの重要性について同意します。ただし、これは正確に高レベルであるため、わずかな変更で常に更新する必要はありません。
ペーテルTörök

1

コード内でdoxygenのようなツールを使用できます。次に、doxygenのドキュメントを生成して定期的に実行するスクリプトを作成します。おそらく、毎晩のビルドの一部として実行します(毎晩のビルドを行いますよね?)。

私はあなたがあなたの追加にそれを新しいものとして強調するためにdoxygenのカスタム属性を割り当てることができると思います。

チームメイトが上手い場合は、新しいドキュメントを調べます。


私は実際にこの作品を見たことがないようたぶん私は、良いチームメイトで働いたことはない:-(
ペーテルTörök

@PéterTörök私自身も含めて、それらが中間にあることを認めざるを得ません。
tehnyit

0

では、オブジェクトに設定可能な属性がさらにあることをチームメイトにどのように通知できますか?

まあ、あなたが作るすべての小さなことについてチームメイトに知らせてはいけません。それ以外の場合は、大量のメールを送信する必要があります。それが重要な場合は、小さな会議を作成し、彼らにあなたが何をしたかを知らせることができます(スクラムを行う場合は、別の会議を設定する必要はありません)。

自動補完をサポートするIDEを使用している場合、チームメイトは変更に気付くはずです。コードをコメントしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.