รหัสสำเร็จรูปคืออะไร


384

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

คำถามโบนัสใครเป็นผู้สร้างเทอม


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

26
ฉันไม่รู้เกี่ยวกับคนอื่น แต่ใน บริษัท ของฉันรหัส boilerplate เป็นรหัสที่ทำงานกับ boilerplate: เปิดปิดล้างแทน ฯลฯ ...
ulty4life

1
คำถามนี้ดูเหมือนจะไม่อยู่ในหัวเพราะเป็นเรื่องเกี่ยวกับศัพท์แสง
Adriano Repetti

4
ฉันมาที่นี่เพราะเอกสารของ Laravel และคิดว่า .. "อะไรคือสิ่งที่พวกเขากำลังพูดถึง? หลังจากอ่านคำตอบบางอย่างแล้วฉันคิดว่า wiki-page ที่เกี่ยวข้องโดยตรงนี้แสดงข้อมูลเชิงลึกเกี่ยวกับเรื่องนี้เช่นกัน: en.wikipedia.org/wiki/Boilerplate_code
Ben Fransen

1
ฉันได้ยินคำศัพท์เมื่อเร็ว ๆ นี้ดังนั้นฉันอยากรู้ว่าฉันสามารถเรียกพวกเขาว่าเป็นปลั๊กอินหรือโมดูลสำหรับภาษาการเขียนโปรแกรม
Anjil Panchal

คำตอบ:


215

"รหัสสำเร็จรูป" เป็นรหัสซ้ำ ๆ ที่ปรากฏขึ้นซ้ำแล้วซ้ำอีกเพื่อให้ได้ผลลัพธ์ที่ดูเหมือนว่าควรจะง่ายกว่ามาก

มันเป็นคำนิยามที่เป็นอัตวิสัย

คำนี้มาจาก "สำเร็จรูป" ในอุตสาหกรรมหนังสือพิมพ์: วิกิ


2
แนวคิดเบื้องหลัง multiproperties ใน OOP คือการลดจำนวนหม้อไอน้ำดังนั้นเมื่อนำไปใช้อย่างเหมาะสมจะสามารถลดลงได้เล็กน้อย
Andrew Sledge

มันก็บอกว่ามันมาจากอุตสาหกรรมเหล็กที่ใช้แผ่นเหล็กหม้อไอน้ำ int
โมฮัมเหม็ด Shareef C

55

ในนิรุกติศาสตร์คำว่าสำเร็จรูป : จากhttp://www.takeourword.com/Issue009.html ...

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

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


มีคำอธิบายทางเลือกอีกทางหนึ่งคือmentalfloss.com/article/26087/why-it-boilerplate-textซึ่งฉันได้เห็นการอ้างอิงเพิ่มเติม
fgysin คืนสถานะโมนิก้า

1
ประณาม! ดูเหมือนว่าคำตอบสำหรับการแลกเปลี่ยนไวยากรณ์ ... จริง ๆ แล้วอาจเป็นคำถามทั้งหมด แต่ฉันสามารถดูว่าทำไมเราต้องการได้ที่นี่ ...
pythonian29033

55

รหัส Boilerplate หมายถึงชิ้นส่วนของรหัสที่สามารถใช้ได้ซ้ำแล้วซ้ำอีก ในทางกลับกันใคร ๆ ก็สามารถบอกได้ว่ามันเป็นรหัสที่สามารถใช้ซ้ำได้

คำที่จริงมาจากอุตสาหกรรมเหล็ก

นิด ๆ หน่อย ๆ ของประวัติศาสตร์ตามที่วิกิพีเดีย :

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

ตอนนี้ตามWikipedia :

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

public class Pet {
    private PetName name;
    private Person owner;

    public Pet(PetName name, Person owner) {
        this.name = name;
        this.owner = owner;
    }

    public PetName getName() {
        return name;
    }

    public void setName(PetName name) {
        this.name = name;
    }

    public Person getOwner() {
        return owner;
    }

    public void setOwner(Person owner) {
        this.owner = owner;
    }
}

38

มันเป็นรหัสที่สามารถใช้งานได้หลายแอพพลิเคชั่น / บริบทที่มีการเปลี่ยนแปลงเพียงเล็กน้อยหรือไม่มีเลย

หม้อไอน้ำมาจากอุตสาหกรรมเหล็กในช่วงต้นปี 1900


34

จากวิกิพีเดีย :

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

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

ภาษาสมัยใหม่พยายามลด แต่ภาษาเก่าที่มีตัวตรวจสอบประเภทเฉพาะ (เช่น OCaml มีตัวพิมพ์เล็ก ๆ น้อย ๆ ที่อนุญาตให้คุณหลีกเลี่ยงการประกาศจำนวนมากที่จะเป็นรหัสสำเร็จรูปในภาษา verbose เช่น Java)


24

Boilerplate เป็นสิ่งที่โปรแกรมเมอร์ที่ดีหลีกเลี่ยง: การทำซ้ำ


36
OMG คุณมี "ti" สองครั้งในคำตอบของคุณ! อย่างที่คุณเห็นการทำซ้ำไม่ได้เลวร้ายเสมอไป
Tamás Sengel

3
ฉันจะหลีกเลี่ยงได้public static void main(String[] _)อย่างไร
Koray Tugay

15

Boilerplate ในการพัฒนาซอฟต์แวร์อาจหมายถึงสิ่งที่แตกต่างสำหรับคนต่าง ๆ แต่โดยทั่วไปหมายถึงกลุ่มของรหัสที่ใช้ซ้ำแล้วซ้ำอีก

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


7

ในทางปฏิบัติรหัสสำเร็จรูปเป็นสิ่งที่คุณตัดวางทั่วทุกที่ บ่อยครั้งที่มันจะเป็นสิ่งต่าง ๆ เช่นส่วนหัวของโมดูลรวมถึงการประกาศมาตรฐาน / ที่จำเป็นบางส่วน (ทุกโมดูลต้องประกาศตัวบันทึกทุกโมดูลจะต้องประกาศตัวแปรสำหรับชื่อและการแก้ไข ฯลฯ ) ในโครงการปัจจุบันของฉันเรากำลังเขียนเครื่องมือจัดการข้อความ และพวกเขาทั้งหมดมีโครงสร้างเดียวกัน (อ่านข้อความ, ตรวจสอบ, ประมวลผล) และเพื่อกำจัดการพึ่งพาระหว่างตัวจัดการที่เราไม่ต้องการให้พวกมันทั้งหมดได้รับมรดกจากคลาสฐานดังนั้นเราจึงสร้างโครงกระดูกสำเร็จรูป มันประกาศตัวแปรรูทีนทั้งหมดวิธีมาตรฐานข้อผิดพลาดในการจัดการเฟรมเวิร์ก - สิ่งที่ผู้พัฒนาต้องทำคือเพิ่มรหัสเฉพาะข้อความที่กำลังจัดการ มันจะใช้งานง่ายและรวดเร็ว


7

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

คำพ้องความหมาย
พิมพ์เขียวเป็นสำเร็จรูป
เป็นลายฉลุเป็นแผ่นสำเร็จรูป
ส่วนท้ายเป็น
รูปแบบการออกแบบสำหรับการใช้งานหลายครั้งเป็นแผ่นสำเร็จรูป
ลายเซ็นของจดหมายเป็นสำเร็จรูป


5

Joshua Blochมีการพูดคุยเกี่ยวกับการออกแบบ APIที่ครอบคลุมถึงวิธีการที่ไม่ดีทำให้จำเป็นต้องมีรหัสสำเร็จรูป (นาทีที่ 46 สำหรับการอ้างอิงไปยังแผ่นสร้างเสียงฟังวันนี้)


2

จากwhatis.techtarget.com :

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

นอกเหนือจากการเขียนโปรแกรม:

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

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

ตัวอย่างทั่วไปจะเป็นHTML5 Boilerplate


1

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


"ตัวอย่าง" ไม่ได้สื่อความหมายเหมือนกัน "boilerplate" มีแนวโน้มที่จะสื่อความหมายที่ใหญ่กว่าซึ่งหมายถึงการปรับเปลี่ยนให้เหมาะสมเมื่อเทียบกับโค้ดคัดลอก / วาง / ลืมสองบรรทัด ตัวอย่างอาจเป็นรหัสสำหรับWinMainฟังก์ชั่นในแอพ Win32; มันลงทะเบียนคลาสหน้าต่างของแอปสร้างหน้าต่างหลักรันลูปเหตุการณ์และส่งคืนรหัสออกของโพรซีเดอร์หน้าต่าง ฟังก์ชั่นนั้นมักจะไม่เปลี่ยนแปลงมากนักระหว่างแอพและสามารถนำกลับมาใช้ใหม่ได้ด้วยการปรับเปลี่ยนที่ค่อนข้างน้อย แต่ก็ไม่ได้มีการทำเป็นกิจวัตรประจำวันมากนัก
cHao

0

สำเร็จรูปเป็นหน่วยการเขียนที่สามารถนำมาใช้ซ้ำแล้วซ้ำอีกโดยไม่มีการเปลี่ยนแปลง โดยการขยายความคิดบางครั้งถูกนำไปใช้กับการเขียนโปรแกรมนำมาใช้ใหม่เช่นเดียวกับใน“ รหัสสำเร็จรูป

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