จะตรวจสอบโค้ดได้อย่างไร


11

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

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


3
ทำไมคุณถึงรู้สึกว่าคุณทำงานไม่ดีพอ? โดยการวัดอะไร
Mark Canlas


เห็นด้วยกับ @Mark: การตรวจสอบรหัสเพื่อความถูกต้องสไตล์ความเรียบง่ายมีประสิทธิภาพ ... ? คุณสามารถตรวจจับข้อบกพร่องโดยการอ่านรหัสได้หรือไม่? คุณสามารถมองเห็นความไม่สอดคล้องกันอย่างมีสไตล์ด้วยการอ่านมันได้หรือไม่? และอื่น ๆ
ร. ว.

คำตอบ:


5

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

โดยปกติสิ่งที่ฉันทำตาม

- Use variables judiciously
- Keep things in scope loose boundaries will generate more errors
- Orient your language of coding in domain specific terms, they make more sense
- Keep loops to minimum 2 for each method if needed
- use ternary operators
- Arrange methods alphabetically
- Keep errors at handling ease
- write less but efficient code

ฉันคิดว่ามีจำนวนมากที่คุณสามารถเพิ่มได้


2
ฉันไม่แน่ใจว่าวิธีการจัดเรียงตามตัวอักษรเป็นความคิดที่ดี ฉันจะบอกว่าให้พวกเขาได้รับคำสั่งจากฟังก์ชั่นของพวกเขาจะดีกว่า การมีสองวิธีที่เกี่ยวข้องกันมากเพราะพวกเขามีชื่อว่า getSomething และ setSomething ดูเหมือนจะไม่เป็นความคิดที่ดี
กลืน elysium

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

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

3

ถามตัวเองว่าอะไรทำให้คนอื่นเป็นผู้ตรวจทานที่ดีสำหรับคุณ

เช่นเดียวกันเมื่อคุณอ่านรหัส

  • หยุดที่สิ่งที่คุณไม่เข้าใจตอนนี้เขียนว่าจำเป็นต้องมีความคิดเห็น
  • ระบุว่ามันสอดคล้องกับมาตรฐานการเข้ารหัส: ช่องว่าง, วงเล็บ, camelCase .. ฯลฯ
  • ตรวจสอบว่ามันมีฟังก์ชั่นทั้งหมด
  • ทำการทดสอบตรรกะอย่างง่าย ๆ เพื่อดูว่าผ่านเงื่อนไขขอบเขตหรือไม่

1
เหตุผลสำหรับการลงคะแนน? คำติชมที่สร้างสรรค์โปรด
Ross

2
ใช้ประโยชน์อย่างเหมาะสม
Mark Canlas

1
อะไรนะ np bro
Ross

1

ฉันแค่ตั้งเป้า

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

นอกเหนือจากนั้น "การรู้ว่าจะมองหาอะไร" ก็มาพร้อมกับประสบการณ์การฝึกฝนและการอ่าน


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

1

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

เมื่อมีคนสังเกตเห็นวิธีที่ไม่ดีในซอร์สโค้ดใหม่เขาก็อธิบายผู้ร่วมเดินทางว่าเขาจะทำมันได้ดีกว่านี้อย่างไรถ้าผู้ฝึกสอนเป็นผู้ฝึกหัดหรือเริ่มการสนทนาเกี่ยวกับมันถ้ามันเป็นนักเดินทางที่มีประสบการณ์มากกว่า

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

ฉันเป็นแฟนตัวยงของรีวิวโค้ดหากพวกเขาสอดคล้องกับคะแนนต่อไปนี้:

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

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

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

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

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

เนื่องจากคำถามเริ่มต้นคือสาเหตุที่บางคนดูเหมือนจะทำการตรวจสอบที่ดีกว่าเพราะคนอื่นฉันจะตอบว่าคนเหล่านี้อาจทำตัวอย่างก่อนที่การตรวจสอบจริงจะเริ่มขึ้นหมายความว่าพวกเขาอาจเตรียมตนเองเพื่อให้พวกเขารู้ว่าสิ่งที่พวกเขาต้องการ .


1

[H] ฉันจะทำหน้าที่ตรวจสอบโค้ดให้คนอื่นทำได้ดีขึ้นหรือไม่

ถามคำถามมากมาย

ฉันรู้ว่าในการตรวจสอบรหัสคุณต้องมีความรู้เกี่ยวกับวิธีการทำงานของรหัสที่มีอยู่ ...

ที่จริงแล้วคุณไม่จำเป็นต้องรู้รหัสก่อนที่จะเป็นผู้ตรวจสอบที่ดี

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

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

แม้ว่าฉันจะไม่ได้ทำงานที่นั่นอีกต่อไปฉันยังต้องตรวจสอบก่อนที่จะเช็คอินและถามตัวเองว่า "บิลคำถามอะไรเกี่ยวกับเรื่องนี้" และบ่อยครั้งที่ฉันสิ้นสุดการเปลี่ยนแปลงบางอย่างที่เป็นผล

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