การตรวจสอบรหัสในภาษาที่ฉันไม่รู้มีประสิทธิภาพหรือไม่


108

ฉันเป็นนักพัฒนาที่มีประสบการณ์ แต่ยังไม่ได้ทำการตรวจสอบโค้ดจำนวนมาก ฉันถูกขอให้ตรวจสอบรหัสที่เขียนใน Python แต่ฉันไม่รู้จัก Python

การตรวจสอบรหัสในภาษาที่ฉันไม่รู้นั้นเป็นเรื่องเหมาะสมหรือไม่?


62
ลองพิจารณาไปที่ CodeReview.SE แล้วดูที่แท็กหลาม ดูที่คำถามเท่านั้นพิจารณาคำแนะนำที่คุณจะให้กับรหัสแล้วดูว่ามีคำตอบนั้นหรือไม่


14
ฟังดูเหมือนเป็นวิธีที่ยอดเยี่ยมในการเรียนรู้เพิ่มเติมเกี่ยวกับ Python มีคำถามอะไรที่ดูตลก - บางอย่างจะทำให้คุณไม่เข้าใจภาษาและบางรายการจะเป็นรายการตรวจสอบรหัสที่ถูกต้อง
Dan Pichelman

9
@ RobbieDee แน่นอน! อธิบายรหัสของคุณกับคนที่มักจะเป็นที่คุ้มค่าถึงแม้ว่ามันจะเป็นเพียงแค่ตุ๊กตาหมี
Kilian Foth

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

คำตอบ:


120

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

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


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

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

4
ในฐานะที่เป็นคนนอกคุณยังอาจจะมีมากขึ้นแนวโน้มที่จะจุดผิดพลาด fencepost หรือข้อผิดพลาดในการใช้เงินที่ถูกต้องของสัญญาณเท่ากันและชนิดของสิ่งที่
KlaymenDK

2
@KlaymenDK Assignments ในบริบทบูลีนคือข้อผิดพลาดทางไวยากรณ์ (อย่างน้อยโดยทั่วไป) ใน Python ข้อผิดพลาดของ Fencepost นั้นมีโอกาสน้อยกว่าเนื่องจาก Python ที่เขียนมาค่อนข้างดีไม่เคยให้คุณทำงานกับดัชนี array / list โดยตรง (แม้เมื่อคุณทำมันก็เป็นปกติด้วยenumerate) ฉันคิดว่าความคิดเห็นของคุณเป็นตัวอย่างที่ดีว่าทำไมพยายามตรวจสอบภาษาที่คุณไม่คุ้นเคยควรเป็นทางการศึกษาสำหรับตัวคุณเอง
jpmc26

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

59

ในฐานะผู้มีส่วนร่วมประจำในการแลกเปลี่ยน Code Review Stackฉันพบคำถามมากมายที่ทุกข์ทรมานจากปัญหาผู้ไม่เชื่อเรื่องภาษาตัวอย่างเช่น:

  • การจัดรูปแบบการเยื้อง
  • ขอบเขต
  • ลูป
  • พิมพ์การทำงาน

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

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

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


2
ฉันยังเขียนคำตอบให้กับโปรแกรม PHP มันไม่ใช่คำตอบที่ดีที่สุด แต่ฉันก็ยังยืนยันว่าการประกาศลูปดั้งเดิมนั้นน่าเกลียด
Hosch250

4
ฉันเรียนรู้ C # ผ่านชุดการตรวจทานเขียนและมีสิ่งที่ฉันเขียนตรวจทาน
RubberDuck

5
หากคุณไม่รู้จัก Python คุณไม่น่าจะซาบซึ้งในความสำคัญของการเยื้องในภาษา ...
Floris

2
คำตอบยอดนิยมของคุณอยู่ใน 2/10 เกี่ยวกับภาษาที่คุณไม่รู้ ใครจะพูดว่าผู้มีสิทธิเลือกตั้งรู้อะไรเกี่ยวกับพวกเขาเช่นกัน?
Martin Smith

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

44

คำแนะนำทั่วไป

นี่คือบรรทัดล่างในความคิดของฉัน:

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

ข้อควรพิจารณาและตัวอย่างเฉพาะของ Python

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

ลองดูตัวอย่างง่ายๆ ใช้รหัสนี้:

f = open('/home/me/something.txt')
try:
    content = f.read()
finally:
    f.close()

เห็นปัญหาเกี่ยวกับรหัสนี้หรือไม่? หากคุณไม่ได้ทำงานกับ Python คุณอาจจะไม่ ปัญหาคือว่ามีมากสไตล์ที่แนะนำในหลามที่ไม่ตรงกับสิ่งเดียวกัน

with open('/home/me/something.txt') as f:
    content = f.read()

นี่คือตัวจัดการบริบท คุณรู้หรือไม่ว่ามันมีประโยชน์อะไร คุณรู้หรือไม่เมื่อมีความเหมาะสมที่จะใช้ คุณรู้หรือไม่เมื่อมันเหมาะสมที่จะสร้างของคุณเอง? ไม่มี? คุณอาจยังไม่พร้อมที่จะตรวจสอบ Python

ลองดูตัวอย่างอื่น

def add_fifty(other_list):
   result = list()
   for i in other_list:
       result.append(i + 50)
   return result

x = range(10)
y = add_fifty(x)

เห็นปัญหาไหม ปัญหาคือวิธีนี้คือไม่จำเป็นครบถ้วน คุณน่าจะใช้ความเข้าใจแทนเมื่อการดำเนินการนี้ง่าย:

x = range(10)
y = [i + 50 for i in x]

หากคุณไม่เห็นสิ่งนั้นแสดงว่าคุณไม่คุ้นเคยกับคุณสมบัติและสำนวนของไพ ธ อน


1
ในตัวอย่างสุดท้ายของคุณถ้าฉันเห็นรหัสสุดท้ายฉันอาจมีความคิดว่ามันจะทำอะไร (โดยไม่รู้ Python) และฉันอาจเริ่มสงสัยว่าฉันสามารถทำสิ่งที่คล้ายกันในภาษาที่ฉันชอบซึ่งฉันไม่เคยคิดมาก่อน
gnasher729

1
@ gnasher729 "แน่นอนฉันคิดว่าสิ่งที่ Python เน้นทำให้รหัสของฉันดูดีขึ้นในภาษาอื่นและไม่ใช่วิธีอื่น ๆ " =) สิ่งเดียวที่ฉันรู้ในภาษาอื่นที่คล้ายคลึงกันในระยะไกลคือ LINQ ของ NET และ Java 8's Stream s ทับทิมอาจมีบางอย่างและฉันแน่ใจว่าภาษาที่ใช้งานได้ใกล้เคียงกับบางอย่าง จุดของฉันกับตัวอย่างคือคุณอาจไม่รู้ด้วยซ้ำว่าถ้าคุณไม่คุ้นเคยกับ Python ดังนั้นคุณจะไม่รู้ด้วยซ้ำว่าจะท้าทายเวอร์ชัน "ไม่ดี"
jpmc26

@x = 1 .. 10; @y = แผนที่ {$ _ + 50} @x;
ท่อ

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

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

21

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

คุณไม่รู้จัก Python ดังนั้นสิ่งที่อาจดูเหมือนธรรมดาสำหรับ Python coders อาจดูแปลกสำหรับคุณ คุณอาจแนะนำการปรับปรุงที่ทีมไม่เคยพิจารณา


1
นี่คือคำตอบของฉัน ฉันแค่เพิ่มมันในวันใดวันหนึ่งด้วยรูทีน Python ที่กำหนดและกลุ่มปรมาจารย์ Python ที่ได้รับ ... รหัสนั้นคือ GARBAGE
dwoz

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

21

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

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

เนื่องจากฉันเขียนโปรแกรมในC ++และฉันไม่รู้จัก Python ดีพอฉันจึงไม่กล้าที่จะตรวจสอบรหัส Python อย่างไรก็ตามฉันสามารถช่วยในการตรวจสอบรหัส Java

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


23
จริง ๆ แล้วคุณมีเครื่องมือที่สามารถแยกแยะตัวแปรที่มีชื่อไม่ดีออกจากตัวที่ดีได้หรือไม่? ฉันจะกลับมาอีกครั้งพร้อมที่จะเห็น
Davor Ždralo

1
@ DavorŽdraloปิดแบ็ตฉันรู้ว่า Java มี Checkstyle เครื่องมือการวิเคราะห์แบบสแตติกที่เป็นทางการมากขึ้นเป็นเรื่องปกติสำหรับหลาย ๆ ภาษาและการให้พวกเขาบังคับใช้มาตรฐานการเข้ารหัสมักจะเป็นหน้าที่ของพวกเขาน้อยที่สุด
Shaz

9
ฉันมีความรู้สึกว่ามีความแตกต่างเล็กน้อยระหว่างคำจำกัดความของการตรวจสอบโค้ดที่นี่ช่วยเตือนฉันเกี่ยวกับ CR Meta: การทบทวนรหัสคืออะไร . ฉันจะไม่แยกสิ่งที่เฉพาะเจาะจงและพูดว่า "การตรวจสอบโค้ดไม่ใช่เรื่องของ XYZ" ดูเหมือนว่าคุณกำลังบอกว่าโปรแกรมเมอร์ผู้มีประสบการณ์ไม่จำเป็นต้องตรวจสอบโค้ดของตัวเองซึ่งเป็นสิ่งที่ฉันไม่เห็นด้วยอย่างยิ่ง
Simon Forsberg

3
@SimonForsberg นั่นไม่ใช่สิ่งที่ฉันพูด แม้แต่โปรแกรมเมอร์อาวุโสก็สามารถเรียนรู้บางสิ่งได้ในการตรวจสอบโค้ดที่ดี แต่ถ้าความคิดเห็นเพียงอย่างเดียวคือ "คุณสะกดผิดตัวแปรที่นี่" - ความคิดเห็นต่าง ๆ พวกเขาจะเสียเวลา
BЈовић

2
@ BЈовићไม่มันไม่ใช่สิ่งที่แย่ที่สุดที่คุณจะหาได้ แต่มันค่อนข้างใกล้เคียงกับ "สิ่งเล็กที่สุดที่พบว่ายังคุ้มค่า"
Vatine

11

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

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


7

คุณไม่ควรเป็นผู้ตรวจสอบเท่านั้นแต่มีเหตุผลดีๆมากมายที่คุณจะเป็นหนึ่งในผู้ตรวจสอบ การไม่รู้ภาษานั้นเป็นอุปสรรคสำหรับคำถามจำนวนมากที่ต้องตอบคำถามในการตรวจสอบรหัส ตัวอย่างเช่นฉันเป็นหนึ่งใน20 อันดับแรกของผู้ตอบแบบสอบถามในแท็ก C #ในเว็บไซต์นี้และฉันก็ไม่ได้รวบรวม Hello World ใน C # มากนัก

ความเชี่ยวชาญบางอย่างที่คุณสามารถแบ่งปันได้โดยไม่รู้ภาษา:

  • ความรู้เกี่ยวกับโดเมน
  • การออกแบบเชิงวัตถุทั่วไป
  • วิธีปฏิบัติในการเขียนโปรแกรมทั่วไป: การตั้งชื่อความคมชัดและอื่น ๆ

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

ในกรณีของคุณมันจะเป็นวิธีที่ดีในการเรียนรู้สำนวนภาษาใหม่เมื่อคุณเห็นความคิดเห็นที่ผู้วิจารณ์คนอื่นฝากไว้ สิ่งเหล่านี้เป็นสิ่งที่ยากที่จะเรียนรู้ด้วยวิธีอื่นเพราะล่ามของคุณไม่สนใจว่ารหัสของคุณเป็นไพ ธ อนหรือไม่


5

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

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

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

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


2

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


1

ข้อสังเกตบางประการ:

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

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

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


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

@EsotericScreenName - ฉันคิดว่ามันขึ้นอยู่กับจำนวนฟีดแบ็กที่คุณได้รับจากคนที่เขียนหรือรู้รหัส นอกจากนี้ยังมีแนวโน้มที่จะอยู่ในพื้นที่โดเมนที่คุณทำงานด้วยภาษาอื่นซึ่งทำให้มันดูดีกว่าตัวอย่างรหัสทั่วไป ตัวอย่างการเข้ารหัสส่วนใหญ่จะแสดงวิธีทำเกร็ดเล็กเกร็ดน้อยและไม่ค่อยแสดงเป็นส่วนหนึ่งของโครงการขนาดใหญ่
JeffO

0

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

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

แต่คุณจะไม่พบปัญหาอื่น ๆ อีกมากมาย ดังนั้นหากพวกเขาตั้งใจให้บทวิจารณ์ของคุณมีความมุ่งมั่นอย่างเต็มที่ว่านี่เป็นโปรแกรมที่ทำงานได้ดีหรือไม่พวกเขาก็จะผิดหวัง

ผลที่ได้นั้นคุ้มค่ากับเวลาที่คุณทำหรือไม่นั้นขึ้นอยู่กับโครงการเป็นส่วนใหญ่

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