จะให้เพื่อนร่วมทีมรู้ได้อย่างไรว่าการเปลี่ยนแปลงของฉันกับวัตถุเป็นอย่างไร [ปิด]


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 อาจช่วยได้เนื่องจากพวกเขาจะรู้ว่ามีบางอย่างเปลี่ยนแปลงในรหัส .. ดังนั้นพวกเขาสามารถอัปเดตการเปลี่ยนแปลงของคุณได้โดยตรง (ไฟล์บางไฟล์อาจเป็นในกรณีของคุณ) .. โดยไม่ต้องรู้ว่ามีอะไรเปลี่ยนแปลง (ตัวเลือกถ้าพวกเขาไม่ต้องการ ถึง)
PresleyDias

1
เป็นคลาสที่คุณไม่ได้เขียนวัตถุ :) มีวัตถุที่รันไทม์ไม่ได้รวบรวมเวลา
Rune FS

คำตอบ:


10

มันขึ้นอยู่กับสถานการณ์ที่เป็นรูปธรรม สมมติว่าคุณสมบัติใหม่ที่คุณเพิ่มนั้นจำเป็นต้องมีการตั้งค่าไว้เสมอ จากนั้นคุณต้องค้นหารหัสด้วยตนเองและอัปเดตทุกที่ที่companyObjสร้างขึ้นเพื่อให้แน่ใจว่าสร้างขึ้นอย่างถูกต้อง (รวมถึงการตั้งค่าคุณสมบัติใหม่) ฉันสมมติว่า PHP มีคอนสตรัคเตอร์ซึ่งในกรณีนี้คุณเพียงแค่เพิ่มพารามิเตอร์คอนสตรัคเตอร์ใหม่เท่านั้นและคอมไพเลอร์จะทำเครื่องหมายการเรียกใช้ตัวสร้างทุกครั้งโดยอัตโนมัติโดยไม่มีพารามิเตอร์พิเศษเป็นข้อผิดพลาดในการรวบรวม companyObjนอกจากนี้ยังจะให้มั่นใจว่าเพื่อนร่วมทีมได้เรียนรู้เกี่ยวกับคุณสมบัติใหม่ที่เร็วที่สุดเท่าที่พวกเขาใช้

อย่างไรก็ตามถ้าคุณสมบัติใหม่เป็นทางเลือกสิ่งต่าง ๆ จะมีความชัดเจนน้อยกว่า คุณอาจจะหรืออาจไม่มีค่าเริ่มต้นที่เหมาะสมสำหรับมัน ในกรณีหลังนี้ฉันขอแนะนำให้คุณอัปเดตการสร้างอินสแตนซ์ทั้งหมดเพื่อตั้งค่าคุณสมบัติใหม่เมื่อใดก็ตามที่เหมาะสม นี่คือเพื่อให้แน่ใจว่ารหัสถูกเก็บไว้ในสถานะที่สอดคล้องกันตลอดเวลา

การสื่อสารการเปลี่ยนแปลงให้เพื่อนร่วมทีมของคุณเป็นอีกก้าวที่ไกลออกไป ทีมเปรียวชอบการสื่อสารแบบตัวต่อตัวและ IMHO ด้วยเหตุผลที่ดี การใช้เอกสารเป็นวิธีที่ช้าและไม่มีประสิทธิภาพในการเผยแพร่ข้อมูลรอบ ๆ ทีม Wiki ค่อนข้างดีกว่า แต่ถึงกระนั้นการจัดทำเอกสารทุก ๆ คลาสของแอ็ตทริบิวต์คือ IMHO overkill มันจะกลายเป็นภาระใหญ่ในทีมและจะกลายเป็นภาระที่ไม่น่าเชื่อถือและไร้ประโยชน์อย่างรวดเร็วในขณะที่เราเป็นมนุษย์ดังนั้นเราต้องผูกพันที่จะลืมการปรับปรุงในบางครั้งยิ่งกว่านั้นฉันพนันได้ว่ามีสมาชิกในทีมจำนวนไม่มาก ตรวจสอบเอกสาร (ไม่ว่าจะในรูปแบบใด) เพื่อรับทราบการเปลี่ยนแปลงรหัสล่าสุด

เอกสารฉบับหลังนี้เป็นจริงสำหรับเอกสารที่สร้างขึ้นโดยอัตโนมัติเช่น Javadoc หรือ Doxygen แม้ว่าพวกเขาจะสามารถกำหนดค่าในการสร้างอัตโนมัติเพื่อให้เอกสารที่สร้างขึ้นอยู่ตลอดเวลาฉันไม่เคยเห็นทีมพัฒนาที่มีสมาชิกเรียกดูเอกสารอย่างสม่ำเสมอเพื่อรับทราบเกี่ยวกับการเปลี่ยนแปลงรหัสล่าสุด และถ้าคุณใช้ระบบควบคุมแหล่งใด ๆสถานที่แรกที่สังเกตเห็นการเปลี่ยนแปลงคือเมื่อคุณอัปเดตรหัสท้องถิ่นของคุณอย่างไรก็ตามคุณสามารถตรวจสอบการเปลี่ยนแปลงในชั้นเรียนที่คุ้นเคยและดูว่ามีการเปลี่ยนแปลงอย่างไร (พร้อมกับ คำอธิบายสั้น ๆ และ / หรือการอ้างอิงถึง ID งานหากทีมของคุณคุ้นเคยกับการเพิ่มความคิดเห็นเช็คอินที่มีความหมายซึ่งจะหายไปจากเอกสารที่สร้างขึ้นโดยอัตโนมัติ)

การสื่อสารเป็นเหตุผลสำคัญประการหนึ่งที่ทีมวางโปรแกรม Extreme ทำโปรแกรมคู่ หากคุณทำการเปลี่ยนแปลงร่วมกับเพื่อนร่วมทีมคุณสองคนจะรู้ทันทีเกี่ยวกับการเปลี่ยนแปลงแต่ละครั้งและครั้งต่อไปที่คุณจะจับคู่กับคนอื่นข้อมูลที่มีประโยชน์จึงแพร่กระจายอย่างรวดเร็ว มันไม่สามารถใช้ได้เสมอแม้ว่าด้วยเหตุผลต่างๆ นอกจากนั้นคุณอาจพูดคุยกับเพื่อนบ้านเกี่ยวกับการเปลี่ยนแปลงในช่วงเวลาที่เหมาะสม (เช่นระหว่างมื้ออาหารกลางวันหรือหากคุณทานอาหารกลางวันด้วยกัน) หรือส่งจดหมายรอบหากเป็นการเปลี่ยนแปลงที่ใหญ่กว่าสำคัญกว่าหรือซับซ้อนกว่า

ในกรณีหลังอาจมีเหตุผลที่ดีที่จะจัดทำเอกสารอย่างถูกต้อง เอกสารการออกแบบของ IMHO นั้นดีที่สุดเมื่อพวกเขาเสนอภาพรวมของระบบที่หยาบและหยาบในขณะที่รายละเอียดการใช้งานจะอยู่ในรหัส (ปฏิบัติตามหลักการของ DRY )


2
+1 ฉันคิดว่าทุกคนในทีมต้องได้รับการศึกษาเพื่อไม่ให้อัปเดตรหัส "สุ่มสี่สุ่มห้า" เป็นรุ่นล่าสุด แต่ตรวจสอบสิ่งที่ทำไปแล้วและทำที่ไหนก่อนที่จะทำ และอย่างที่คุณพูดความคิดเห็นสั้น ๆ แต่แม่นยำนั้นยอดเยี่ยม
Jalayn

10

คุณคิดว่าจะพูดกับพวกเขาหรือไม่? กำหนดการประชุมสั้น: "เฮ้ฉันได้ทำการเปลี่ยนแปลงบางอย่างกับ object X ฉันต้องการแสดงให้คุณเห็นว่ามีอะไรเปลี่ยนแปลงไปและทำไม" หรือเพียงแค่พูดคุยกับแต่ละคนเป็นรายบุคคลหากการประชุมดูเป็นทางการหรือก่อกวนเกินไป


+1 อย่างใดคำตอบที่ชัดเจนที่สุดไม่ได้คิดก่อน!
NoChance

2

หากคุณมีทีมคุณอาจมีเอกสารการออกแบบด้วย ถ้าไม่. เริ่มต้นกับมัน และใช้เครื่องมือ UML เพื่อทำแผนที่การออกแบบของคุณ


7
ซึ่งฟังดูดีในหลักการอย่างไรก็ตาม: 1. เอกสารการออกแบบที่มีแอตทริบิวต์ class ทุกชั้นจะกลายเป็นความเจ็บปวดในตูดเพื่อรักษาและซิงค์กับรหัส 2. ไดอะแกรม UML ที่ได้รับการออกแบบทางวิศวกรรมย้อนกลับจากโค้ดนั้นถูกผูกไว้เพื่อให้ไร้ประโยชน์ในโครงการที่ไม่น่าสนใจใด ๆ ในเร็ว ๆ นี้อีกครั้งเนื่องจากรายละเอียดจำนวนมากอยู่ในนั้น
PéterTörök

คุณไม่จำเป็นต้องทำเอกสารทุกชั้นถ้าคุณมีมากเกินไป เพียงคนที่ทำขึ้นส่วนต่อประสานสาธารณะ ยอมรับว่าสำหรับโครงการขนาดใหญ่มันจะยุ่งยาก แต่ก็ดีกว่าไม่มีเอกสารใด ๆ ที่ระบุว่าส่วนต่าง ๆ ของแอปพลิเคชันพูดคุยกันอย่างไร
DPD

1
ฉันเห็นด้วยเกี่ยวกับความสำคัญของสถาปัตยกรรม / การออกแบบเอกสารระดับสูง (ตามที่ระบุไว้ในคำตอบของฉัน) อย่างไรก็ตามนั่นเป็นระดับสูงอย่างแม่นยำดังนั้นจึงไม่จำเป็นต้องได้รับการปรับปรุงอย่างต่อเนื่องกับการเปลี่ยนแปลงจิ๋ว
PéterTörök

1

คุณสามารถใช้เครื่องมือเช่นdoxygenในโค้ดของคุณ ตอนนี้สร้างสคริปต์ที่จะสร้างเอกสาร doxygen และรันอย่างสม่ำเสมอบางทีอาจเป็นส่วนหนึ่งของงานสร้างยามค่ำคืนของคุณ (คุณสร้างงานทุกคืนใช่มั้ย)

ฉันคิดว่าคุณสามารถกำหนดแอตทริบิวต์ที่กำหนดเองใน doxygen ให้กับการเพิ่มของคุณเพื่อเน้นว่าเป็นสิ่งใหม่

หากเพื่อนร่วมทีมของคุณเก่งพวกเขาจะต้องอ่านเอกสารใหม่


บางทีฉันอาจไม่เคยทำงานกับเพื่อนร่วมทีมที่ดีเนื่องจากฉันไม่เคยเห็นงานนี้ในทางปฏิบัติ :-(
PéterTörök

@ PéterTörökฉันต้องยอมรับว่าพวกเขาอยู่ไกลและน้อยในตัวเองรวมอยู่ด้วย
tehnyit

0

ตอนนี้ฉันจะแจ้งเพื่อนร่วมทีมของฉันได้อย่างไรว่าวัตถุของฉันมีคุณสมบัติมากกว่าที่พวกเขาสามารถตั้งค่าได้

คุณไม่ควรแจ้งเพื่อนร่วมทีมของคุณเกี่ยวกับทุกสิ่งที่คุณทำ มิฉะนั้นคุณจะต้องส่งอีเมลจำนวนมาก ถ้ามันเป็นเรื่องใหญ่คุณสามารถทำการประชุมขนาดเล็กและแจ้งให้พวกเขารู้ว่าคุณทำอะไร (ถ้าคุณทะเลาะกันคุณไม่จำเป็นต้องจัดประชุมแยกต่างหาก)

หากคุณใช้ IDE ที่สนับสนุนการทำให้สมบูรณ์อัตโนมัติเพื่อนร่วมทีมของคุณควรสังเกตเห็นการเปลี่ยนแปลงของคุณ ฉันแค่หวังว่าคุณจะแสดงความคิดเห็นรหัสของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.