วิธีการให้ผู้พัฒนาทำการตรวจสอบโค้ดในเวลาที่เหมาะสม


12

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

(เราใช้ git-svn เพื่อให้เราสามารถเขียนโค้ดต่อไปได้ในขณะที่รอการตรวจสอบอย่างไรก็ตามฉันยังพบว่ามันน่าผิดหวังเมื่อฉันต้องรอเป็นเวลานานก่อนที่ฉันจะสามารถส่งรหัสได้)

คำตอบ:


12

ดูวิธีที่ Facebook ใช้กับแอพของตัวเองที่ชื่อว่า phabricator: http://phabricator.org/

พวกเขากระทำโดยพื้นฐานต่อปัญหาและสำหรับแต่ละปัญหารหัสจะแสดงซึ่งจะต้องมีการตรวจสอบโดยใครบางคน รหัสไม่ได้เข้าไปในพื้นที่เก็บข้อมูลหลักจนกว่าผู้ตรวจทานจะบอกว่าทำได้

ฉันเดาว่ามันทำให้สนุกมากขึ้น

นอกจากนี้อาจมีการกำหนดรหัสให้กับคนสองคน: ผู้ทำและผู้วิจารณ์

แม้ว่าเพื่อนร่วมทีมของคุณอาจไม่เชื่อในรีวิวนี้เลย

ส่วนตัวผมขาดการตรวจสอบฉันใช้การทดสอบหน่วยสำหรับฟังก์ชั่นระดับต่ำและ "การทดสอบภารโรง" สำหรับส่วนที่เหลือทั้งหมด: การทดสอบภารโรงเรียกว่าเป็นอย่างนั้นเพราะแม้แต่ภารโรงก็สามารถเข้าใจรหัสของคุณได้

ฉันมักจะลบบางส่วนเล็กน้อยเช่นวงเล็บขอบเขตบล็อก / ฟังก์ชั่นสัญกรณ์การมองเห็นบางครั้งก็พิมพ์และแสดงให้ผู้จัดการผู้จัดการผู้เชี่ยวชาญโดเมนเพื่อนร่วมใครก็ตามที่ขอรหัส: "นี่คือสิ่งที่คุณต้องการ?"

นอกจากนี้การไปที่นั่นเป็นการส่วนตัวและอย่าออกไปจนกว่าการตรวจสอบเสร็จสิ้นจะช่วยได้

หรือในกรณีที่คุณไม่ได้อยู่กับทีมหรือไม่ดีกับคุณคุณก็รู้ "ถ้าคุณสามารถ 'เปลี่ยน บริษัท เปลี่ยน บริษัท " ...


9

ฉันจะใช้ฐานสองข้อนี้:

  1. ดูเหมือนว่าทุกคนต้องการเขียนโค้ด (ถ้าไม่ใช่คุณมีคนที่ต้องไป)
  2. ทุกคนต้องการให้มีการตรวจสอบรหัสของตัวเอง

อนุญาตให้เฉพาะผู้ที่แสดงความคิดเห็นเพื่อทำการตรวจสอบรหัสเท่านั้น

บางทีช่วงเวลาหนึ่งอาจทุ่มเทให้กับการตรวจสอบโค้ดโดยหวังว่าจะได้หลีกเลี่ยงปัญหาการถูกขัดจังหวะ

เป้าหมายควรจะตรวจสอบในรหัสคุณภาพ คุณไม่ต้องการที่จะลงโทษ / บังคับให้ความคิดเห็นถึงจุดที่ทุกคนเพียงแค่ให้การอนุมัติ "ตรายาง"

หากคุณมีระดับที่แตกต่างกัน (jr., sr. ฯลฯ ) การเลื่อนตำแหน่งและการดูแลรักษาตำแหน่งควรจะเกิดขึ้นกับการทำงานของคุณ


1

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

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

ที่กล่าวว่าเราเป็นเพียงการตรวจสอบรหัสที่มุ่งมั่นไปยังสาขา Dev / ตัวแปรปัจจุบัน รหัสจะต้องผ่านการตรวจสอบรหัส, การตรวจสอบทั่วโลก, การตรวจสอบฐานข้อมูลและการตรวจสอบ UI (แต่ละรายการที่จำเป็น) ก่อนที่จะสามารถเลื่อนระดับไปยังสภาพแวดล้อมถัดไป (เช่นอัลฟ่า)

ในที่สุดเราตกลงกับ SLA เกี่ยวกับความคิดเห็นที่เปลี่ยนไปอย่างรวดเร็ว แทบจะไม่มีอะไรรออยู่ในคิวนานกว่า 48 ชั่วโมงและความเห็นส่วนใหญ่จะใช้เวลาน้อยกว่า 24 ชั่วโมง


1

บริษัท ที่ฉันทำงานเพื่อขอรหัสทั้งหมดจะต้องได้รับการตรวจสอบโดยผู้พัฒนารายอื่นก่อนที่จะส่งมอบ สมาชิกในทีมของฉันมักจะผิดหวัง ...

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

  • แนวคิดเบื้องหลังความต้องการของ บริษัท ของคุณฟังดูสมเหตุสมผลบนพื้นผิว (โค้ดที่ตรวจสอบแล้ว 100%) แต่วิธีที่พวกเขาตัดสินใจใช้นั้นเป็นสิ่งที่ต่อต้าน - เพราะเมื่อคุณชี้ให้เห็นสิ่งเหล่านี้ทำให้นักพัฒนารู้สึกหงุดหงิด

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

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


1
"หาก บริษัท รู้ดีกว่าโปรแกรมเมอร์ทำไมพวกเขาถึงไม่เขียนโค้ดเอง": ความคิดเห็นดีมาก! แต่ฉันหวังว่าผู้จัดการการพัฒนาจะเป็นอดีตนักพัฒนาตัวเอง
Giorgio

3
โพสต์การกระทำส่งผลเสียต่อคุณภาพรหัสของคุณอย่างมากในประสบการณ์ของฉัน โปรแกรมเมอร์จะขี้เกียจและพวกเขาจะรู้สึกว่าพวกเขาทำถ้ามันสามารถกระทำ: "ใช่ดีมันไม่สมบูรณ์แบบ แต่ที่ f.ck ใส่ใจสิ่งที่สมบูรณ์แบบในชีวิตหรือไม่มันทำงานได้หรือไม่ " คำตอบเดียวที่ดีคือไม่และบางทีผู้จัดการอาจมีภาพลักษณ์ที่เป็นจริงของโปรแกรมเมอร์มากกว่าที่พวกเขามีเกี่ยวกับตัวเองนั่นคือเหตุผลที่พวกเขาต้องการการตรวจสอบโค้ดล่วงหน้า (หรืออย่างน้อยก็รวมกัน)
Aadaam

@Aadaam ประสบการณ์ของคุณแตกต่างจากของฉันอย่างแน่นอน - ไม่เพียง แต่เกี่ยวกับการโพสต์การกระทำ แต่ยัง (และโดยเฉพาะอย่างยิ่ง) ส่วน WRT ของ "โปรแกรมเมอร์ที่ขี้เกียจ ... " สำหรับผู้จัดการที่มีภาพที่สมจริงมากขึ้นฉันยอมรับว่าเป็นกรณีใน ทีมของฉัน; มันไม่ได้นำไปสู่ผู้จัดการที่ฉันเคยทำงานด้วยกับความคิดที่ไร้เหตุผลเกี่ยวกับสิ่งที่การตรวจสอบที่จะบังคับ
gnat

ฉันทำงานในการเอาท์ซอร์ส ในการเอาท์ซอร์สโปรแกรมเมอร์ส่วนใหญ่ไม่ได้อยู่ในนั้นเพราะการเขียนโปรแกรมเป็นเรื่องสนุกพวกเขาเป็นเพราะการเขียนโปรแกรมมีอัตราส่วนการทำงาน / การจ่ายที่ดีที่สุดโดยมีอัตราสูงกว่าสิ่งอื่นใด ... พวกเขาเกลียดมันเหมือนงานอื่น .. พยายามที่จะทำทุกอย่างเพื่อ "เพิ่มประสิทธิภาพ" อัตราส่วนนี้ถ้าคุณรู้ว่าสิ่งที่ฉันหมายถึง ...
Aadaam

1

คุณมีปัญหาหลายอย่างในการจัดการ - คุณต้องชนะใจและจิตใจและคุณต้องให้แน่ใจว่ามีเวลาสำหรับการตรวจสอบโค้ด

ส่วนที่สองนั้นง่ายที่สุด - คุณเห็นด้วย (โดยรวมและต้องมีการจัดการ) สิ่งแรกที่นักพัฒนาทำคือทุกเช้าคือบทวิจารณ์โค้ดของพวกเขา - นี่ง่ายเข้าใจเข้าใจได้ดีมีประสิทธิภาพและช่วยให้คุณเอาชนะคนได้ดี หากพวกเขาไม่ปฏิบัติตาม ดีกว่าคุณไม่ขัดจังหวะอะไรเลยคุณไม่ได้ขอให้พวกเขาหยุดทำงานบนรหัสของพวกเขาคุณไม่ได้ขอให้คนอื่นบีบบางสิ่งลงในรายการที่ต้องทำ ...

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

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

เมื่อเป็นส่วนหนึ่งของวัฒนธรรมแล้วมันไม่จำเป็นที่จะต้องพูดว่า "สิ่งแรกทุกวัน" อีกต่อไป - แต่ต้องบอกว่าฉันคิดว่ามันเหมาะกับรูปแบบที่เราอาจต้องการให้ dev ทำงาน


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

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

ฉันพูดว่า "let deadlines slip" ฉันควรจะพูดว่า "move deadlines" "การลื่น" หมายถึงการเคลื่อนย้ายพวกมันหลังจากที่พวกมันถูกสร้างขึ้นมาแล้วนั่นคือการล้มเหลว แต่มันไม่จำเป็นต้องเป็นอย่างนั้น คุณสามารถวางแผนสำหรับช่วงเวลาที่ผลผลิตลดลงเล็กน้อยเนื่องจากกฎใหม่ที่ยืดหยุ่น (และความไร้ประสิทธิภาพอย่างหลีกเลี่ยงไม่ได้ที่เกิดจากคนที่พยายามติดตามกระบวนการใหม่ - ถ้าคุณทำทบทวนรหัสสิ่งแรกคุณจะพลาดการต่อสู้ในตอนเช้า การประชุมในวันที่การตรวจสอบโค้ดใช้เวลานานเกินไปหรือสิ่งที่ไม่ซ้ำใครที่องค์กรของคุณสามารถนำมารวมกันได้) หากเป็นกฎที่ดีคุณจะอยู่เหนือจุดเริ่มต้นของคุณในไม่ช้า
Steve Jessop

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

1

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


0

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

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


0

จุดสองสามจุดที่จะเพิ่มที่ไม่ได้อยู่ในคำตอบอื่น ๆ

ต้องตรวจสอบรหัสที่จะตรวจสอบ

  • เพื่อที่คุณจะได้ตรวจสอบเวอร์ชั่นที่เสถียร
  • มันสามารถอยู่ในสาขาการพัฒนาหลักหากปล่อยอยู่ห่างพอ
  • มันอาจจะอยู่ในสาขาถ้ามีเหตุผลที่ดีที่จะไม่ก่อให้เกิดมลพิษหลัก

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

คำถามที่ยากขึ้นคือเมื่อใดและอย่างไรที่จะทำการตรวจสอบโค้ดให้ดี

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

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