จะประเมินคุณภาพของรหัสได้อย่างไรเมื่อคุณไม่คุ้นเคยกับภาษา [ปิด]


10

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

วิธีที่ดีที่สุดในการประเมินโค้ดของโปรแกรมเมอร์คือถ้าคุณไม่คุ้นเคยกับภาษา


1
ฉันเกลียดที่จะทำลายมันให้กับคุณ แต่คุณไม่ :-) รวมบางคนในการสัมภาษณ์ที่รู้ภาษาหรือเรียนรู้ด้วยตัวคุณเอง
Joppe

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

สำหรับฉันเมตริกที่ดีที่สุดคือขนาดของฟังก์ชั่น (รวมถึงความลึกของการซ้อนที่นี่) ตามด้วยขนาดของคลาส / ไฟล์
m3th0dman

คำตอบ:


20

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

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

สิ่งที่คุณสามารถประเมินคือ:

  • โค้ดมีโครงสร้างอย่างไร
  • ตัวแปรที่มีชื่อดี (คุณสามารถเข้าใจสิ่งต่าง ๆ ได้)
  • ฟังก์ชั่นที่ดีประกอบด้วยหน่วย / ของรหัส
  • ความสอดคล้องในรหัสฐาน

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

ในระยะสั้น - มองหาสิ่งที่ควรระบุรหัสที่ดีโดยไม่คำนึงถึงภาษา


5
อีกสิ่งสำคัญ: "ความคิดเห็นที่ชัดเจนมีความหมายและเข้าใจง่ายหรือไม่" คุณสามารถเรียนรู้เล็กน้อยเกี่ยวกับสิ่งที่โค้ดทำจากความคิดเห็นแม้ว่าคุณจะมีความรู้ภาษาบ้างเล็กน้อย
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner - ความเห็น? นู้นคืออะไร? อย่างจริงจังแม้ว่ารหัสควรจะแสดงความคิดเห็นด้วยตนเอง ความคิดเห็นควรอยู่ที่นั่นเพื่ออธิบายสาเหตุหรือให้เหตุผลว่าด้วยรหัสที่ไม่ดี
Oded

6
ฉันขอเตือนอย่างยิ่งยวด: มันง่ายมากที่จะจบลงด้วยการเลือกโดยผู้ที่เขียนโค้ดมากที่สุดอย่างที่คุณคุ้นเคยซึ่งอาจเป็นการใช้ภาษานั้นไม่ดีนัก
Jerry Coffin

@FrustratedWithFormsDesigner Oded อาจคิดว่าคุณควรอ่านElegantcode.com
Joel

4

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

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

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


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

1

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

คุณจะไม่สามารถประเมินการใช้สำนวนของคุณสมบัติภาษา / น้ำตาล / อนุสัญญาโดยไม่คุ้นเคย

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

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

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


1

ไม่คำนึงถึงภาษา:

  • มีการแบ่งแยกที่ชัดเจนของข้อกังวลการใช้คลาสอย่างเหมาะสม (สำหรับภาษา OO) หรือการบ่งชี้ถึงความพยายามโดยเจตนาในการแยกรหัสออกเป็นส่วนย่อยที่นำมาใช้ใหม่ได้หรือไม่?
  • ในทำนองเดียวกันหลักฐานการทดสอบ - การทดสอบหน่วยหรืออื่น ๆ
  • หากเป็นรหัสการผลิตมันจะเต็มไปด้วยสตริงการดีบักที่อาจแนะนำให้แยกเล็กน้อยระหว่างการพัฒนาและการปรับใช้?
  • รหัสทำตามแบบแผนการตั้งชื่อใด ๆ (ไม่ว่าคุณจะชอบแบบแผนนั้นหรือไม่สำคัญ!)?
  • หากคุณมีไฟล์แทนที่จะพิมพ์ออกมาจะทำหน้าที่ / คลาสทั้งหมดในไฟล์ที่เกี่ยวข้องกับ (ดังนั้นหากเป็นไฟล์ที่เรียกว่าdata_access_layerหลักฐานของฟังก์ชั่นที่ประมวลผลอิมเมจน่าจะไม่เหมาะสม)
  • ข้อบ่งชี้ของการขาดความไว้วางใจสำหรับการป้อนข้อมูลของผู้ใช้ก็ดีเช่นกันโดยเฉพาะอย่างยิ่งสำหรับภาษาบนเว็บเช่น PHP ดังนั้นโครงสร้างอย่าง input = escape (อินพุต) อย่างน้อยก็แสดงให้คุณเห็นว่าพวกเขาตระหนักถึงปัญหานี้แล้ว
  • ความคิดเห็นหรือรหัสอธิบายตนเองดีเสมอ มีโรงเรียนคิดหลายแห่งเกี่ยวกับจำนวนความคิดเห็นที่ควรมี แต่ขาดความคิดเห็นอย่างสมบูรณ์
  • ด้วยค่าใช้จ่ายของการถูกเหยียดหยามฉันก็จะใช้โค้ดบางอย่างของ google ก่อนการสัมภาษณ์ด้วย มันอาจเป็นงานคัดลอกและวางได้อย่างง่ายดายเศร้า

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

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

โชคดีที่การจ้างคนดีเป็นหนึ่งในบทบาทที่สำคัญที่สุดในองค์กรของคุณ)


ในความเข้าใจย้อนหลังสิ่งนี้ซ้ำซ้อนกับสิ่งที่ @Oded (และความคิดเห็น) พูดมาก
frackham

0

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

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


-2

ถามพวกเขาเกี่ยวกับข้อ จำกัด ที่พบในขณะใช้ภาษา ขอให้พวกเขาแสดงแบบสอบถาม SQL อย่างง่าย ๆ Php dev ที่มีค่าใด ๆ ที่บีบแตรควรจะสามารถสืบค้นแบบสอบถามเลือก / อัปเดต / ลบพื้นฐานได้โดยไม่ต้องใช้ความพยายามมากเกินไป

ดั๊ก

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