ฉันจะแก้ไขโค้ดจากโปรแกรมเมอร์ที่มีประสบการณ์น้อยกว่าได้อย่างไร?


19

พื้นหลังเล็กน้อย:ฉันเป็นหนึ่งในสองโปรแกรมเมอร์ของแผนก 10 คนของเรา (ที่เหลือเป็นศิลปินและผู้บริหาร) เราสองคนทำการเข้ารหัสที่จำเป็นเพื่อให้ทุกอย่างราบรื่นและพัฒนาโครงการใด ๆ ที่เกิดขึ้น ฉันเขียนโปรแกรมมาประมาณ 4 ปีแล้วซึ่งนี่เป็นงานแรกของเขา "จริง" (ตามที่เขาวางไว้) โดยทั่วไปเรากำลังทำงานในโครงการต่าง ๆ ในเวลาใดก็ได้

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

ส่วนต่อไปของโครงการได้เริ่มต้นแล้วซึ่งฉันกำลังดำเนินการอยู่ ฉันเปิดอินเทอร์เฟซเพื่อเริ่มต้นด้วยขั้นตอนถัดไปและพบปัญหาในทันที (ช้าเล็กน้อยคือการพูดน้อยข้อผิดพลาดในการกระทำทั่วไป ฯลฯ ) ฉันค้นหาโค้ดเพื่อดูปัญหาบางอย่างและกำลังค้นหาการO(n^n)โทรที่ควรO(n)พิมพ์สมมติฐานโดยไม่มีการตรวจสอบข้อผิดพลาด (เป็น Python) การอ้างอิงไปยัง GUI ที่เพิ่มเข้ากับรหัสดั้งเดิมและอื่น ๆ

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


4
ในอนาคตมีความเป็นไปได้ที่จะเห็นด้วยกับแนวทางการเข้ารหัสซึ่งจะป้องกันข้อผิดพลาดอย่างที่คุณอธิบายไว้หรือไม่
Benni

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

O (n ^ n) โดยไม่มีเอกสารว่าทำไมถึงผิดระยะเวลา หากคุณต้องทำอย่างแท้จริงความคิดเห็นดีกว่าอธิบายว่าทำไม
Loren Pechtel

กำลังจะเขียนว่า "เฮ้, O (n * n) ไม่เลวขนาดนั้นแอปพลิเคชั่นจำนวนมากต้องการมัน ... " แต่แล้วฉันก็รู้ว่ามันไม่ใช่เครื่องหมายทวีคูณ แต่เป็นนักฆ่า ^!
สูงสุด

O (n ^ n) สามารถมีขนาดได้เร็วกว่า O (n) ถ้า O (n) มีค่าคงที่มากและ n มีขนาดเล็ก codinghorror.com/blog/2007/09/…จากนั้นอีกครั้ง n ^ n นั้นสุดขีด: D
Coder

คำตอบ:


33

ดูเหมือนว่าการกำหนดนโยบายการตรวจสอบรหัสบางประเภทอาจมีประโยชน์ในหลายระดับ ผลประโยชน์ทันที:

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

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


3
การตรวจสอบรหัส +1 เป็นวิธีที่ยอดเยี่ยมในการดำเนินการนี้ ฉันขอแนะนำให้ใช้ถ้อยคำมากขึ้นตามแนวของ "คุณจะลองพิจารณาการเปลี่ยนแปลงที่ฉันทำเพื่อให้แน่ใจว่าฉันไม่ได้พลาดอะไร" แทนที่จะ "นี่คือวิธีที่ฉันปรับปรุงโค้ดของคุณ"
Steve Jackson

1
+1 ฉันว่าการตรวจสอบรหัสนั้นดีกว่า "หลักเกณฑ์การเข้ารหัสกฎทอง" ดีกว่า .. มีหลายสิ่งที่ไม่เป็นไร
สูงสุด

ฉันชอบความคิดนี้จริงๆขอบคุณ ตอนนี้ฉันจะต้องวิจัยเล็กน้อยเกี่ยวกับวิธีที่ดีในการทำรีวิวรหัส!
TorelTwiddler

1
มีจริงเป็นสิ่งที่ดีและกระดาษความบันเทิงที่มีพื้นฐานบางอย่างที่มีอยู่ในmumak.net/stuff/your-code-sucks.html ส่วนใหญ่เกี่ยวกับเทคนิคเชิงพฤติกรรมสำหรับการแสดงความคิดเห็นอย่างสร้างสรรค์ซึ่งมีความสำคัญอย่างมากสำหรับการวิจารณ์ที่ประสบความสำเร็จ
nithins

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

5

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

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


2

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

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

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

ผู้คนเรียนรู้ได้ดีเมื่อพวกเขาเห็นสิ่งที่ดีจริงๆ สิ่งนี้ดีกว่าการชี้ให้เห็นข้อบกพร่องเล็ก ๆ น้อย ๆ อย่างเป็นระบบ อย่างไรก็ตาม O (n ^ n) ควรจะค่อยๆชี้ให้เห็นอย่างสร้างสรรค์


0

แบ่งปันความรู้ของคุณ

ฉันจะให้ความช่วยเหลือเขาในโครงการใหม่ของเขาเพื่อแลกเปลี่ยนกับการสอนบางอย่างจากรุ่นพี่จนถึงรุ่นน้อง

ทำไมไม่จับคู่การเขียนโปรแกรมในทั้งสองโครงการ

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