ฉันควรจะใส่ใจไหมถ้าอัตราส่วน LOC ต่อวันของฉันสูงเกินไป [ปิด]


9

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

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


คุณวัด LOC อย่างไร มันไม่รวมรหัสสตูดิโอภาพที่สร้างขึ้นหรือไม่?
jk

ด้วยคำสั่ง bash นี้ในโฟลเดอร์รหัสของฉัน: (find ./ -name '* .cs' -print0 | xargs -0 cat) | wc -l
Max Yankov

ถูกต้องเพื่อที่จะรวมรหัสที่สร้างขึ้นเช่น designer.cs - ฉันจะไม่กังวลเกี่ยวกับจำนวนบรรทัดที่คุณกำลังเขียน
jk

โดยทั่วไปแล้วใช่ แต่ด้วยสภาพแวดล้อมเฉพาะนี้ (Unity game engine) ไม่ใช่กรณี
Max Yankov

1
ฉันพยายามลบโค้ดหลายบรรทัดเท่าที่จะทำได้ก่อนที่จะเพิ่มอีก การทำงานกับระบบขั้นต่ำนั้นน่าพึงพอใจมากกว่าทางเลือกอื่น ๆ
Jon Purdy

คำตอบ:


18

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

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

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

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

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

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

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


1
+1 400 บรรทัดต่อวันอาจเป็นข้อบ่งชี้ของปัญหาโชคไม่ดีที่ฉันคิดว่าวิธีเดียวที่จะค้นหาคือการตรวจสอบโค้ดซึ่งเป็นเรื่องยากสำหรับทีมชาย 1 คน
jk

ขอบคุณสำหรับคำตอบอย่างละเอียด :) ฉันคิดว่ามันครอบคลุมเรื่องทั้งหมด
Max Yankov

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

+1 แม้ว่าคุณจะไม่สามารถชี้ไปที่การศึกษาที่แสดงว่า LOC เป็นตัวชี้วัดที่ไม่ดี แต่การค้นหาการศึกษาที่ประสบปัญหานั้นเป็นเรื่องง่ายเพราะพวกเขาใช้ LOC เป็นตัวชี้วัด
daramarak

เห็นด้วยอย่างสมบูรณ์ว่า LOC เป็นตัวชี้วัดที่ไร้ประโยชน์ บางวันฉันเขียนโค้ดหลายร้อยบรรทัดและก็ใช้ได้ บางวันฉันมีค่าศูนย์ บางวันที่ฉันทำคือลบรหัส :-)
Brian Knoblauch

5

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

LOC รายวันไม่ได้บอกอะไรเลยนอกจากงานประจำวันนั้นสามารถทำได้ด้วยรหัส 400 บรรทัด


2

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

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


1

คุณไม่ควรกังวลกับจำนวน LOC ที่คุณผลิตต่อวัน

แต่คุณควรจะใส่ใจ:

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

0

LOC เป็นการวัดประสิทธิภาพ 'เป็นทางการ' แต่การโต้แย้งกับค่าอาจยาว (ORM สามารถสร้างรหัส 50,000 บรรทัดใน 3 นาทีอย่างไรก็ตามหากการออกแบบฐานข้อมูลผิดรหัสทั้งหมดอาจไปที่ถังขยะ)

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

อ้างอิงบางส่วนเกี่ยวกับ LOC


แต่เขาไม่ได้ใช้ LOC เป็นเครื่องมือวัดประสิทธิภาพ
jk

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

0

คุณกำลังวัดจำนวนการทำซ้ำรหัสหรือไม่

หากผลผลิตสูงเป็นเพราะคุณมีจำนวนมากคัดลอกและวางในรหัสของคุณคุณควรกังวล

เหตุผล: ในกรณีที่มีข้อผิดพลาดในการคัดลอกและวางที่มาของคุณมันเป็นเรื่องยากและเกิดข้อผิดพลาดได้ง่ายในการแก้ไขการคัดลอกและวางทั้งหมด


-1

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

"มันไหลหรือไม่มันดูสวยงามไหม"


3
วัดเท่านั้น? มันเกี่ยวกับมันทำงานอย่างไร มันเร็วพอหรือไม่
jk

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