ฉันเป็นนักพัฒนาที่มีประสบการณ์ แต่ยังไม่ได้ทำการตรวจสอบโค้ดจำนวนมาก ฉันถูกขอให้ตรวจสอบรหัสที่เขียนใน Python แต่ฉันไม่รู้จัก Python
การตรวจสอบรหัสในภาษาที่ฉันไม่รู้นั้นเป็นเรื่องเหมาะสมหรือไม่?
ฉันเป็นนักพัฒนาที่มีประสบการณ์ แต่ยังไม่ได้ทำการตรวจสอบโค้ดจำนวนมาก ฉันถูกขอให้ตรวจสอบรหัสที่เขียนใน Python แต่ฉันไม่รู้จัก Python
การตรวจสอบรหัสในภาษาที่ฉันไม่รู้นั้นเป็นเรื่องเหมาะสมหรือไม่?
คำตอบ:
ความรู้สึกใด ๆ ใช่. แม้ว่าคุณจะไม่รู้อะไรเกี่ยวกับความหมายของภาษาการเขียนโปรแกรมคุณยังสามารถอ่านตัวอักษรและสังเกตเห็นการจัดรูปแบบที่ไม่สอดคล้องกันความคิดเห็นที่ขาดหายไปตัวระบุที่เลือกไม่ดีการคัดลอกที่ชัดเจนเป็นต้น
ความรู้สึกมากหรือความรู้สึกเพียงพอที่จะชำระค่าใช้จ่ายของเวลาของคุณ ? ฉันไม่แน่ใจ. ขึ้นอยู่กับตำแหน่งของคุณความสำคัญของการตรวจสอบโค้ดในเวิร์กโฟลว์ของทีมของคุณและปัจจัยอื่น ๆ ที่เราไม่สามารถวัดปริมาณได้ดีพอ
enumerate
) ฉันคิดว่าความคิดเห็นของคุณเป็นตัวอย่างที่ดีว่าทำไมพยายามตรวจสอบภาษาที่คุณไม่คุ้นเคยควรเป็นทางการศึกษาสำหรับตัวคุณเอง
ในฐานะผู้มีส่วนร่วมประจำในการแลกเปลี่ยน Code Review Stackฉันพบคำถามมากมายที่ทุกข์ทรมานจากปัญหาผู้ไม่เชื่อเรื่องภาษาตัวอย่างเช่น:
และรายการจะดำเนินต่อไป อย่างไรก็ตามในขณะที่ฉันไม่จำเป็นต้องรู้ภาษาฉันยังสามารถตรวจสอบปัญหา / คะแนนเหล่านั้นได้
ผู้ใช้งานด้านบนของเราสองสามคนมีคำตอบสูงสุดในภาษาที่พวกเขาไม่ได้ใช้งานหรือไม่รู้ แม้แต่สองในสิบอันดับแรกของฉันก็เป็นภาษาที่ฉันไม่รู้และไม่สามารถรวบรวม / รันบนเครื่องของฉันได้
ฉันยังบอกว่ามันจะเหมือนกับการตรวจสอบรหัสหลอกของใครบางคน ตราบใดที่คุณสามารถสังเกตและแสดงความคิดเห็นในสิ่งต่าง ๆ ที่เกี่ยวข้องกับสิ่งที่คุณเข้าใจคุณจะไม่เป็นไรและมันจะเกี่ยวข้อง
นี่คือบรรทัดล่างในความคิดของฉัน:
สำหรับสถานการณ์ที่เฉพาะเจาะจงของงูใหญ่ไม่ทราบว่าผมจะเป็นโดยเฉพาะอย่างยิ่งความระมัดระวังในการนี้ 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]
หากคุณไม่เห็นสิ่งนั้นแสดงว่าคุณไม่คุ้นเคยกับคุณสมบัติและสำนวนของไพ ธ อน
พวกเขาอาจจะขอให้คุณตรวจสอบรหัสหลามแม่นยำเพราะคุณไม่ทราบว่างูหลาม มีทฤษฎีการจัดการที่มีประโยชน์ในการมี "คนโง่" ในทีม ฉันไม่ได้โทรหาคุณด้วยชื่อที่ไม่ดี :) ความคิดก็คือทีมอาจได้รับผลกระทบจากกลุ่มคิดและพัฒนาวิสัยทัศน์อุโมงค์ วิธีหนึ่งในการแยกออกจากนี้คือการรวมบางคนในทีมที่สมาชิกในทีมอื่นจะพิจารณาว่าเป็น "คนโง่" นั่นคือคนที่ไม่รู้เรื่อง คุณจะถามคำถามเพื่อแจ้งให้ตัวเองและคำถามจะมาจากมุมมองที่สมาชิกในทีมอื่นไม่น่าจะพิจารณา
คุณไม่รู้จัก Python ดังนั้นสิ่งที่อาจดูเหมือนธรรมดาสำหรับ Python coders อาจดูแปลกสำหรับคุณ คุณอาจแนะนำการปรับปรุงที่ทีมไม่เคยพิจารณา
การตรวจสอบโค้ดไม่ได้เกี่ยวกับการค้นหาตัวแปรที่มีการสะกดที่ไม่ถูกต้องและการจัดรูปแบบที่ไม่ถูกต้อง หากคุณใช้การตรวจสอบโค้ดเพื่อค้นหาสิ่งต่าง ๆ ให้หยุดเสียเวลาและใช้เครื่องมือ
การตรวจสอบโค้ดเป็นการปรับปรุงการออกแบบและการตรวจจับข้อผิดพลาดทั่วไปโดยโปรแกรมเมอร์มือใหม่
เนื่องจากฉันเขียนโปรแกรมในC ++และฉันไม่รู้จัก Python ดีพอฉันจึงไม่กล้าที่จะตรวจสอบรหัส Python อย่างไรก็ตามฉันสามารถช่วยในการตรวจสอบรหัส Java
คุณไม่ได้พูดภาษาที่คุณตั้งโปรแกรม แต่ฉันไม่เห็นสิ่งที่คุณสามารถมีส่วนร่วมในการตรวจสอบรหัสหากคุณไม่ทราบว่าภาษานั้นเป็นโปรแกรม
การตรวจสอบรหัส (นอกเหนือจากการมองหาข้อบกพร่อง) เป็นการแนะนำที่ดีจากสมาชิกในทีมหนึ่งถึงคนอื่น ๆ สำหรับการเพิ่มหรือเปลี่ยนแปลงรหัส หากคุณเป็นนักพัฒนาที่มีประสบการณ์คุณควรอ่านให้มากพอเพื่อทำความเข้าใจกับสิ่งที่เกิดขึ้นส่วนใหญ่
ดูการทบทวนรหัสจากมุมมองของหัวหน้าทีม: มีบางคนที่เข้าใจสิ่งที่แอปพลิเคชันควรทำ (ตรรกะทางธุรกิจ) มีคนที่เข้าใจรหัสกำลังทำอยู่ (ตรรกะการใช้งาน) และอาจมีคนอื่นอีกหลายคน มีใครบ้างที่ต้องการมีความคิดว่าสิ่งเหล่านี้เข้ากันได้อย่างไร
คุณไม่ควรเป็นผู้ตรวจสอบเท่านั้นแต่มีเหตุผลดีๆมากมายที่คุณจะเป็นหนึ่งในผู้ตรวจสอบ การไม่รู้ภาษานั้นเป็นอุปสรรคสำหรับคำถามจำนวนมากที่ต้องตอบคำถามในการตรวจสอบรหัส ตัวอย่างเช่นฉันเป็นหนึ่งใน20 อันดับแรกของผู้ตอบแบบสอบถามในแท็ก C #ในเว็บไซต์นี้และฉันก็ไม่ได้รวบรวม Hello World ใน C # มากนัก
ความเชี่ยวชาญบางอย่างที่คุณสามารถแบ่งปันได้โดยไม่รู้ภาษา:
นอกจากนี้ยังเป็นวิธีที่ดีในการเพิ่มความเร็วให้กับผลิตภัณฑ์ใหม่ ฉันเพิ่งเข้าร่วมทีมใหม่ที่ฉันรู้ว่าภาษาใช้ค่อนข้างดี แต่ไม่รู้โดเมน การมีส่วนร่วมในการตรวจสอบโค้ดช่วยให้ฉันเรียนรู้ด้านโดเมนได้ดีขึ้นแม้ว่าฉันจะไม่สามารถมีส่วนร่วมในสายเหล่านั้นได้มาก
ในกรณีของคุณมันจะเป็นวิธีที่ดีในการเรียนรู้สำนวนภาษาใหม่เมื่อคุณเห็นความคิดเห็นที่ผู้วิจารณ์คนอื่นฝากไว้ สิ่งเหล่านี้เป็นสิ่งที่ยากที่จะเรียนรู้ด้วยวิธีอื่นเพราะล่ามของคุณไม่สนใจว่ารหัสของคุณเป็นไพ ธ อนหรือไม่
นี่อาจเป็นสถานการณ์ที่ชนะ ฉันจะไปไกลเท่าที่จะบอกว่าคุณอาจจะเป็นผู้ตรวจสอบที่มีคุณค่าโดยเฉพาะอย่างยิ่งเพราะคุณเป็นผู้บริสุทธิ์หลามที่ไม่ได้รับการปนเปื้อนจากคำสาปของความรู้
คิดแบบนี้: ถ้ารหัสชัดเจนเพียงพอที่แม้แต่ Python Virgin ก็สามารถเข้าใจได้มันก็ต้องเป็นรหัสที่ดี ส่วนที่คุณมีปัญหาในการทำความเข้าใจอาจเป็นตัวเลือกสำหรับการนำกลับมาทำใหม่หรือแสดงความคิดเห็นได้ดีขึ้น
เห็นได้ชัดว่ามันจะเป็นประโยชน์สำหรับคุณเพราะคุณจะได้รับภาษาใหม่ที่คุณไป (หวังว่ารหัสที่คุณได้รับเป็นตัวอย่างที่ดีในการเรียนรู้จาก) การจัดเรียงนี้ควรใช้งานได้ดีกับ Python ภาษาที่มีชื่อเสียงว่าเป็น "executable pseudocode" หากคุณเป็นนักพัฒนาที่มีประสบการณ์แล้วคุณไม่ควรมีปัญหาในการเข้าใจส่วนสำคัญของโปรแกรม Python
ข้อแม้จะเป็นได้ว่าคุณจะไม่ได้คาดหวังว่าจะจุดข้อบกพร่องที่เกิดขึ้นจากgotchas เฉพาะภาษา แต่การค้นหาบั๊กไม่ใช่วัตถุประสงค์ของการตรวจสอบโค้ดเท่านั้น หากไม่มีอะไรอื่นคุณจะเข้าร่วมในการถ่ายโอนความรู้เพียงแค่รับรู้ว่าสิ่งใดที่เกิดขึ้นในรหัสของเพื่อนร่วมงานของคุณ
ฉันเคยถูกขอให้ตรวจสอบโครงการที่ผู้รับเหมาช่วงดำเนินการและดูเหมือนจะมีปัญหาด้านประสิทธิภาพอย่างร้ายแรง ฉันได้รับการยอมรับอย่างรวดเร็วว่าปัจจัยสำคัญคือโมดูล Perl เดียว ฉันไม่เคยเจอ Perl มาก่อนและเราไม่มีใครในองค์กรที่รู้เรื่องนี้ดังนั้นฉันจึงพยายามทำความเข้าใจด้วยตัวเอง ฉันไม่เคยเข้าใจรายละเอียดเท่าที่ควร แต่ชัดเจนว่าอัลกอริทึมที่ใช้นั้นมีกำลังสองในขนาดข้อมูลและนี่เป็นสาเหตุของปัญหาทั้งหมด ดังนั้นใช่การอ่านรหัสในภาษาที่คุณไม่เข้าใจอย่างสมบูรณ์อาจมีประสิทธิผล โบนัสคือคุณได้เรียนรู้เทคนิคใหม่ ๆ ในขณะที่คุณกำลังทำมัน
ข้อสังเกตบางประการ:
1) หากคุณเป็นนักพัฒนาที่มีประสบการณ์คุณจะได้รับ Python (หรืออย่างน้อยก็เท่าที่คุณจำเป็นต้องรู้) เพียงแค่ทำงานกับมัน มันจะเป็นกรณีของ "การเรียนรู้ด้วยการทำ" ในตอนแรกมันจะยาก แต่จะง่ายขึ้นเมื่อคุณเลือกภาษา คิดว่านี่เป็นโอกาสในการเรียนรู้ภาษาอื่น (ผู้คนมักจะเรียนรู้ภาษา "ต่างชาติ" ผ่าน "การแช่")
2) มีคนที่มีค่าจำนวนมากในไซต์ SE ที่ "ไม่ใช่ด้านเทคนิค" แต่มีทักษะด้านไวยากรณ์การสื่อสารและตรรกะ คนแบบนี้นำ "ตาที่สดใหม่" มาสู่กลุ่มเป้าหมายและสร้าง "no brainer" จำนวนหนึ่งที่คนอื่นคิดถึงเพราะพวกเขา "ผูกติด" เกินไปในเนื้อหา คุณกำลังได้รับการพิจารณาว่าเป็นทักษะที่ไม่ใช่ "ทางเทคนิค" (เช่นไม่ใช่งูใหญ่) เช่นตรรกะและความเข้าใจในการเขียนโปรแกรมโดยรวม
และหากคุณยังไม่ได้ทำการตรวจสอบโค้ดจำนวนมากประสบการณ์การตรวจสอบโค้ดเกือบทั้งหมดจะช่วยคุณในฐานะนักพัฒนาซอฟต์แวร์ ดูเหมือนว่าจะเป็นการจับคู่ที่ดีระหว่างทักษะและความต้องการของคุณและของทีม
ขึ้นอยู่กับว่าเป้าหมายของการตรวจสอบคืออะไร คือสิ่งที่คุณหมายถึงโดยที่มีประสิทธิภาพ
คุณอาจยังตรวจพบปัญหาบางอย่างได้ หากคุณต้องการตรวจสอบและพวกเขาแค่หวังว่าคุณจะตรวจสอบมันจะช่วยได้บ้าง หลายแนวคิดของโครงสร้างมีความคล้ายคลึงกันระหว่างภาษา โดยเฉพาะอย่างยิ่งความสามารถในการตรวจสอบความคิดเห็น มันควรได้รับการคอมเม้นต์ให้ดีพอที่โปรแกรมเมอร์ที่ไม่ได้ใช้ภาษานั้นควรจะสามารถรู้สึกได้ถึงสิ่งที่เกิดขึ้น ถ้าไม่ใช่ ... คุณสามารถบอกได้ว่าพวกเขาขาดความคิดเห็นที่ใด หากความคิดเห็นนั้นดี ... จากนั้นคุณควรจะทบทวนโครงสร้างของพวกเขาเพียงเล็กน้อยผ่านการเพิ่มความคิดเห็นของสิ่งที่เกิดขึ้นแทนที่จะอ่านรหัสของสิ่งที่เกิดขึ้นจริง
แต่คุณจะไม่พบปัญหาอื่น ๆ อีกมากมาย ดังนั้นหากพวกเขาตั้งใจให้บทวิจารณ์ของคุณมีความมุ่งมั่นอย่างเต็มที่ว่านี่เป็นโปรแกรมที่ทำงานได้ดีหรือไม่พวกเขาก็จะผิดหวัง
ผลที่ได้นั้นคุ้มค่ากับเวลาที่คุณทำหรือไม่นั้นขึ้นอยู่กับโครงการเป็นส่วนใหญ่