ในการเขียนโปรแกรมคอมพิวเตอร์โค้ดซ้ำซ้อนคือซอร์สโค้ดหรือโค้ดที่คอมไพล์แล้วในโปรแกรมคอมพิวเตอร์ที่ไม่จำเป็น เช่น

  • คำนวณค่าที่คำนวณไว้ก่อนหน้านี้อีกครั้ง [1] และยังคงมีอยู่
  • รหัสที่ไม่เคยถูกเรียกใช้งาน (เรียกว่า รหัสที่ไม่สามารถเข้าถึงได้ )
  • รหัสที่ถูกดำเนินการ แต่ไม่มีผลกระทบภายนอก (เช่น ไม่เปลี่ยนเอาต์พุตที่สร้างโดยโปรแกรม เรียกว่า รหัสที่ไม่ทำงาน )

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

ตัวอย่าง แก้

ตัวอย่างต่อไปนี้อยู่ใน ภาษาซี

นิพจน์ iX*2 ที่สองเป็นโค้ดที่ซ้ำซ้อนและสามารถแทนที่ได้ด้วย การอ้างอิงถึงตัวแปร iY หรือสามารถลบคำจำกัดความ int iY = iX*2 ออกแทนได้ พิจารณา:

int foo(int iX)
{
    int iY = iX*2;

    return iX*2;
}

จากผลของการใช้ตัวประมวลผลล่วงหน้าซีคอมไพเลอร์จะเห็นเฉพาะรูปแบบที่ขยาย:

#define min(A,B) ((A)<(B)?(A):(B))

int shorter_magnitude(int u1, int v1, int u2, int v2)
{
    /* Returns the shorter magnitude of (u1,v1) and (u2,v2) */
    return sqrt(min(u1*u1 + v1*v1, u2*u2 + v2*v2));
}

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

ไม่มีความซ้ำซ้อนในรหัสต่อไปนี้:

#define max(A,B) ((A)>(B)?(A):(B))

int random(int cutoff, int range)
{
    return max(cutoff, rand()%range);
}

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

ดูสิ่งนี้ด้วย แก้

อ้างอิง แก้