ในอีกไม่กี่เดือนเพื่อนร่วมงานจะย้ายไปที่โครงการใหม่และฉันจะสืบทอดโครงการหนึ่งของเขา เพื่อเตรียมความพร้อมผมได้สั่งซื้อไมเคิล Feathers' แล้วการทำงานอย่างมีประสิทธิภาพกับรหัสมรดก
แต่หนังสือเล่มนี้และคำถามส่วนใหญ่เกี่ยวกับรหัสดั้งเดิมที่ฉันพบจนถึงขณะนี้มีความกังวลเกี่ยวกับกรณีที่รับรหัสตามที่เป็นอยู่ แต่ในกรณีนี้ฉันสามารถเข้าถึงนักพัฒนาดั้งเดิมได้จริงและเรามีเวลาสำหรับการส่งมอบอย่างเป็นระเบียบ
พื้นหลังบางส่วนของรหัสฉันจะสืบทอด:
- มันใช้งานได้:ไม่มีบั๊กที่รู้จัก แต่เมื่อความต้องการด้านประสิทธิภาพเพิ่มขึ้นเรื่อย ๆ การเพิ่มประสิทธิภาพบางอย่างจะกลายเป็นสิ่งจำเป็นในอนาคตอันใกล้
- ไม่มีเอกสาร:มีเอกสารจำนวนมากที่วิธีและระดับชั้น สิ่งที่รหัสควรจะทำในระดับที่สูงขึ้น แต่เป็นที่เข้าใจกันดีเพราะฉันได้เขียนกับ API ของมัน (เป็นกล่องดำ) มานานหลายปี
- เฉพาะการทดสอบบูรณาการระดับสูงกว่า:มีเพียงการทดสอบการรวมระบบที่ทดสอบการมีปฏิสัมพันธ์ที่เหมาะสมกับส่วนประกอบอื่น ๆ ผ่านทาง API (อีกครั้งกล่องดำ)
- ระดับต่ำมากเหมาะสำหรับความเร็ว:เนื่องจากรหัสนี้เป็นศูนย์กลางของระบบแอพพลิเคชั่นทั้งหมดจึงมีการปรับให้เหมาะสมหลายครั้งในช่วงหลายปีที่ผ่านมาและต่ำมาก (ส่วนหนึ่งมีตัวจัดการหน่วยความจำของตัวเองสำหรับ struct บางตัว / บันทึก)
- พร้อมกันและล็อคฟรี:ในขณะที่ฉันคุ้นเคยกับการเขียนโปรแกรมพร้อมกันและล็อคฟรีและมีส่วนร่วมในรหัสนี้จริง ๆ แล้วก็เพิ่มความซับซ้อนอีกชั้นหนึ่ง
- โค้ดเบสขนาดใหญ่:โปรเจ็กต์นี้มีโค้ดมากกว่าหมื่นบรรทัดดังนั้นจึงไม่มีทางที่ฉันจะสามารถอธิบายทุกอย่างให้ฉันได้
- เขียนใน Delphi:ฉันแค่จะเอามันออกไปถึงแม้ว่าฉันไม่เชื่อว่าภาษาจะเป็นคำถามที่ตรงไปตรงมาเนื่องจากฉันเชื่อว่าปัญหาประเภทนี้จะเป็นผู้ไม่เชื่อเรื่องภาษา
ฉันสงสัยว่าจะใช้เวลานานเท่าไหร่จนกว่าเขาจะจากไป นี่คือแนวคิดสองสามข้อ:
- รับทุกสิ่งที่จะสร้างบนเครื่องของฉัน:แม้ว่าทุกอย่างจะต้องถูกตรวจสอบในการควบคุมซอร์สโค้ด แต่ก็ยังไม่ลืมที่จะเช็คอินไฟล์เป็นครั้งคราวดังนั้นนี่อาจเป็นลำดับแรกของธุรกิจ
- การทดสอบเพิ่มเติม:ในขณะที่ฉันต้องการการทดสอบระดับหน่วยเพิ่มเติมเพื่อที่ว่าเมื่อฉันจะทำการเปลี่ยนแปลงข้อบกพร่องใด ๆ ที่ฉันแนะนำสามารถถูกดักจับ แต่เนิ่นๆรหัสที่ตอนนี้ไม่สามารถทดสอบได้ (คลาสขนาดใหญ่วิธีการที่ยาวมากเกินไป การพึ่งพาซึ่งกันและกัน)
- เอกสารอะไร:ฉันคิดว่าสำหรับผู้เริ่มต้นจะเป็นการดีที่สุดที่จะมุ่งเน้นไปที่เอกสารในพื้นที่เหล่านั้นในรหัสที่จะเข้าใจได้ยากเช่นเนื่องจากลักษณะต่ำ / มีการปรับให้เหมาะสมสูง ฉันกลัวว่ามีบางสิ่งในนั้นที่อาจดูน่าเกลียดและต้องการ refactoring / rewriting แต่จริงๆแล้วเป็นการเพิ่มประสิทธิภาพที่มีอยู่ในนั้นด้วยเหตุผลที่ดีที่ฉันอาจพลาด (เปรียบเทียบ Joel Spolsky สิ่งที่คุณควร ไม่เคยทำส่วนที่ฉัน )
- วิธีเอกสาร:ฉันคิดว่าไดอะแกรมคลาสของสถาปัตยกรรมและไดอะแกรมลำดับของฟังก์ชั่นที่สำคัญพร้อมกับร้อยแก้วบางอย่างจะดีที่สุด
- ใครเป็นเอกสาร:ฉันสงสัยว่าอะไรจะดีไปกว่านี้เพื่อให้เขาเขียนเอกสารหรือให้เขาอธิบายให้ฉันดังนั้นฉันจึงสามารถเขียนเอกสารได้ ฉันกลัวว่าสิ่งที่ชัดเจนสำหรับเขา แต่ไม่ใช่ฉันจะไม่ได้รับการคุ้มครองอย่างเหมาะสม
- การปรับโครงสร้างใหม่โดยใช้การเขียนโปรแกรมคู่:สิ่งนี้อาจเป็นไปไม่ได้ที่จะทำเนื่องจากข้อ จำกัด ด้านเวลา แต่บางทีฉันอาจปรับเปลี่ยนรหัสบางส่วนเพื่อให้สามารถบำรุงรักษาได้มากขึ้นในขณะที่เขายังอยู่ใกล้ ๆ เพื่อให้ข้อมูลว่าทำไม
โปรดแสดงความคิดเห็นและเพิ่มในสิ่งนี้ เนื่องจากไม่มีเวลามากพอที่จะทำทั้งหมดนี้ฉันจึงสนใจเป็นพิเศษว่าคุณจะจัดลำดับความสำคัญอย่างไร
ปรับปรุง:ในฐานะที่เป็นโครงการมอบเป็นมากกว่าผมได้ขยายรายการนี้กับประสบการณ์ของตัวเองในคำตอบด้านล่างนี้