มีไฟล์ต้นฉบับในโครงการที่ค่อนข้างใหญ่ที่มีฟังก์ชั่นหลายอย่างที่มีความอ่อนไหวต่อประสิทธิภาพอย่างมาก (เรียกว่าล้านครั้งต่อวินาที) ในความเป็นจริงผู้ดูแลก่อนหน้านี้ตัดสินใจที่จะเขียน 12 สำเนาของฟังก์ชั่นที่แตกต่างกันเล็กน้อยมากเพื่อประหยัดเวลาที่จะใช้ในการตรวจสอบเงื่อนไขในฟังก์ชั่นเดียว
น่าเสียดายที่นี่หมายถึงรหัสนี้เป็น PITA ที่จะรักษาไว้ ฉันต้องการลบรหัสที่ซ้ำกันทั้งหมดและเขียนเพียงหนึ่งเทมเพลต อย่างไรก็ตามภาษา, Java, ไม่รองรับเทมเพลตและฉันไม่แน่ใจว่ายาชื่อสามัญเหมาะสำหรับสิ่งนี้
แผนปัจจุบันของฉันคือการเขียนแทนไฟล์ที่สร้างฟังก์ชั่น 12 ชุด (ตัวขยายเทมเพลตแบบใช้ครั้งเดียวเท่านั้นจริง) แน่นอนฉันจะให้คำอธิบายมากมายว่าทำไมไฟล์จะต้องถูกสร้างขึ้นโดยทางโปรแกรม
ความกังวลของฉันคือสิ่งนี้จะนำไปสู่ความสับสนของผู้ดูแลในอนาคตและอาจแนะนำข้อผิดพลาดที่น่ารังเกียจหากพวกเขาลืมสร้างไฟล์ใหม่หลังจากแก้ไขมันหรือ (ยิ่งแย่กว่า) หากพวกเขาแก้ไขไฟล์ที่สร้างโดยทางโปรแกรม โชคไม่ดีที่การเขียนใหม่ทั้งหมดใน C ++ ฉันไม่เห็นวิธีการแก้ไข
ประโยชน์ของวิธีนี้มีมากกว่าข้อเสียหรือไม่ ฉันควรจะแทน:
- เพิ่มประสิทธิภาพการทำงานและใช้ฟังก์ชั่นเดียวที่บำรุงรักษาได้
- เพิ่มคำอธิบายว่าทำไมฟังก์ชันจึงต้องทำซ้ำ 12 ครั้งและรับภาระการบำรุงรักษาอย่างสง่างาม
- พยายามใช้ข้อมูลทั่วไปเป็นเทมเพลต (อาจใช้ไม่ได้ผล)
- ตะโกนใส่ผู้ดูแลเก่าเพื่อสร้างรหัสขึ้นอยู่กับประสิทธิภาพในฟังก์ชั่นเดียว
- วิธีอื่นในการรักษาประสิทธิภาพและการบำรุงรักษา?
ป.ล. เนื่องจากการออกแบบของโครงการไม่ดีการทำโปรไฟล์ฟังก์ชั่นค่อนข้างยุ่งยาก ... อย่างไรก็ตามผู้ดูแลคนก่อนทำให้ฉันมั่นใจว่าประสิทธิภาพในการทำงานนั้นไม่เป็นที่ยอมรับ ฉันคิดว่าเขามีความหมายมากกว่า 5% แม้ว่าจะเป็นการคาดเดาที่สมบูรณ์ในส่วนของฉัน
บางทีฉันควรทำอย่างละเอียดหน่อย สำเนา 12 ชุดทำหน้าที่คล้ายกันมาก แต่มีความแตกต่างเล็กน้อย ความแตกต่างอยู่ในสถานที่ต่าง ๆ ตลอดทั้งฟังก์ชั่นดังนั้นน่าเสียดายที่มีข้อความมากมายที่มีเงื่อนไข การทำงานมีประสิทธิภาพ 6 "โหมด" และ 2 "กระบวนทัศน์" ของการทำงาน (คำพูดที่สร้างขึ้นโดยตัวเอง) ในการใช้ฟังก์ชั่นหนึ่งจะระบุ "โหมด" และ "กระบวนทัศน์" ของการดำเนินการ สิ่งนี้ไม่เคยเป็นแบบไดนามิก โค้ดแต่ละชิ้นใช้หนึ่งโหมดและกระบวนทัศน์ทั้งหมด คู่โหมดกระบวนทัศน์ทั้ง 12 คู่ถูกนำไปใช้ในแอปพลิเคชั่น ฟังก์ชั่นนี้ใช้ชื่อว่า func1 ถึง func12 โดยมีตัวเลขแสดงถึงกระบวนทัศน์ที่สองและตัวเลขคี่ที่แสดงถึงกระบวนทัศน์แรก
ฉันรู้ว่านี่เป็นเพียงการออกแบบที่เลวร้ายที่สุดหากการบำรุงรักษาเป็นเป้าหมาย แต่ดูเหมือนว่าจะ "เร็วพอ" และรหัสนี้ไม่ต้องการการเปลี่ยนแปลงใด ๆ ชั่วขณะ ... มันก็คุ้มที่จะสังเกตว่าฟังก์ชั่นดั้งเดิมไม่ได้ถูกลบ (แม้ว่ามันจะเป็นรหัสที่ตายแล้วก็ตามที่ฉันบอกได้) ดังนั้นการเปลี่ยนโครงสร้างจะง่าย
Makefile
" (หรือระบบที่คุณใช้อะไรก็ตาม) และลบมันขวา aftter รวบรวมสำเร็จรูป ด้วยวิธีนี้พวกเขาก็ไม่มีโอกาสแก้ไขไฟล์ต้นฉบับที่ผิด