ฉันจะตัดสินได้อย่างไรว่าโครงการมีความซับซ้อนเป็นพิเศษหรือถ้าฉันแค่หยิบมันช้า


16

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

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

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


11
การเข้าใจรหัสของผู้อื่นเป็นการแสดงความเห็นอกเห็นใจ ลืมไปว่าคุณกำลังจะไปเร็วแค่ไหนและก็ลืมไปว่าคนโง่ที่เขียนรหัสนี้เป็นใคร ********** การคิดออกคือการออกกำลังกายในความยืดหยุ่น สมมติว่าแหล่งที่มานั้นไม่ดีอย่างผิดปกติและคุณมีจำนวนมากเกินไปและกลับไปทำงานและหยุดคาดคั้นในฟอรัมที่โง่เหล่านี้ ซึ่งใช้กับฉันเช่นกัน ... ฉันมีรหัสที่จะทะเลาะกัน
Dan Rosenstark

2
โดยเฉพาะอย่างยิ่งลืมเกี่ยวกับ "สิ่งที่พวงของ ... " เมื่อคนกล่าวว่าเป็นเจ้านายพี่ชายเจ้านายเจ้านายเจ้านายหรือหลานชายเจ้านายเจ้านาย ฯลฯ !
DarenW

2
อ่า "ทำไม" หายไป อย่าลืมใส่ไว้ในเมื่อคุณคิดออก

@ DarenW - เป็นรหัสสปาเก็ตตี้ไม่ใช่รหัสมักกะโรนี: D (ขออภัยฉันต้อง)
Jas

1
@Jas google สำหรับรหัสมักกะโรนี ... มีพาสต้ามากกว่าสปาเก็ตตี้มากกว่าหนึ่งชนิด
Jürgen A. Erhard

คำตอบ:


6

วิธีเดียวในการตัดสินใจคำถามนั้นคือการได้โปรแกรมเมอร์มากขึ้นเพื่อจัดการกับปัญหาเดียวกันและดูว่าพวกเขามีค่ามากกว่านี้หรือไม่

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


16

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

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

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


5
+1 อาจใช้เวลาเกิน 6 เดือนกว่าจะเริ่มรู้ระบบที่ซับซ้อนบางอย่างเพียงพอที่จะมีความเชี่ยวชาญในระบบนั้น แม้ว่าฐานของรหัสนั้นจะ "ดี" นักพัฒนาและทีมต่างก็มีสไตล์ที่แตกต่างกันและมันก็ใช้เวลาค่อนข้างนานในการหาตลับลูกปืนของคุณ
Ryan Hayes

3
@Ryan และ 6 เดือนหลังจากนั้นคุณจะกลายเป็นส่วนหนึ่งของปัญหาด้วยตัวเอง :)
Benjol

@Benjol ใช่ฉันเคยไปที่นั่น
Ryan Hayes

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

+1 สำหรับการสร้างเอกสารส่วนตัวของคุณเอง เมื่อฉันทำงานนี้ฉันพบว่าการทำบันทึกจำนวนมาก (ทั้งในรหัสหรือบนกระดาษ) และการวาดไดอะแกรมจำนวนมาก ข้อดีเพิ่มเติมสำหรับทุกสิ่งที่เป็นการสนับสนุนแนวคิดในใจของคุณเอง
Andy Hunt

6

เคยเห็นโค้งการเรียนรู้ การเรียนรู้ Curce

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


2

ผ่ามันทีละชิ้น

สถานการณ์ของคุณเป็นเรื่องธรรมดาการ"ไปจับ"ต้องใช้เวลาตามที่คนอื่นพูดถึงแล้ว

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

เริ่มด้วยปุ่มพูดขุดผ่านซอร์สโค้ดใส่จุดพักดูทีละขั้นตอนสิ่งที่เกิดขึ้น มีสองสิ่งที่คุณต้องเติมเต็ม:

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

"ทีละชิ้น" อาจทำงานในโครงการอื่น ๆ ได้ แต่มีชั้นเรียนจำนวนมากมาจากชั้นเรียนอื่นชั้นเรียนเพื่อนพอยน์เตอร์ไปยังอวัยวะภายในของกันและกันมีบางส่วนที่สามารถเข้าใจได้อย่างอิสระ
DarenW

ฉันแน่ใจว่ามันเป็นเขาวงกตที่ซับซ้อน (บางสิ่งที่ "เติบโต" เมื่อเวลาผ่านไป) อย่างไรก็ตามถ้าคุณเริ่มด้วยฟังก์ชั่นเดียวคุณบอกฉันว่าคุณไม่สามารถติดตามมันจนจบได้หรือไม่?
Darknight

การติดตามการไหลของข้อมูลหรือลำดับเหตุการณ์เมื่อตัวอย่างเช่นผู้ใช้คลิกที่ปุ่มกลายเป็นไปไม่ได้
DarenW

1

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


ฉันชอบความคิดเห็นนี้ หนึ่งควรมีเป้าหมายที่เฉพาะเจาะจงและทำงานเพื่อให้บรรลุเป้าหมาย (และเฉพาะที่) ไม่งั้นคุณจะหลงทาง - เหมือนแผนที่มาก ๆ
NoChance

1

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

Mr Aaron Hillegass ด้วยคำพูดที่ฉลาด

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

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