การขัดหมายถึงอะไรในการเขียนโปรแกรม?


26

ฉันมักจะได้ยินคำว่า "ต้นขั้ว", "ต้นขั้วบางอย่างออก", "ต้นขั้ว" และอื่น ๆ

การขัดหมายถึงอะไรในการเขียนโปรแกรมและคำนั้นมาจากไหน สามารถใช้บริบทใดได้บ้าง


เรียกอีกอย่างว่า: ตัวยึด
Pieter B

คำตอบ:


30

วิธีการต้นขั้วเป็นวิธีการที่เพิ่งจะส่งกลับผลลัพธ์ที่เรียบง่าย แต่ถูกต้อง (แต่ไม่จำเป็นต้องถูกต้อง) ผลลัพธ์

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

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


3
Nitpick: stubs ถูกใช้เมื่อทำการขัดไม่ใช่ในขณะที่ล้อเลียน เมื่อเยาะเย้ยคุณใช้ mocks martinfowler.com/articles/mocksArentStubs.html
Jörg W Mittag

+1 สำหรับข้างต้น แต่ฉันต้องการเพิ่มว่าหากคุณไม่คาดหวังว่าจะใช้วิธีการที่ถูกสตับนั้นมันอาจจะมีประโยชน์หากการสตับมีข้อยกเว้นหรือส่งผลให้เกิดข้อผิดพลาด ตัวอย่าง "NotImplementedException": msdn.microsoft.com/en-us/library/... commons.apache.org/proper/commons-lang/javadocs/api-release/org/...
แดนอาร์มสตรอง

6

บางทีนี่อาจเป็นคำตอบที่ดีที่สุดด้วยตัวอย่างที่เป็นรูปธรรม ลองพิจารณากรณีที่คุณกำลังสร้างแอปพลิเคชันเดสก์ท็อป คุณได้ตัดสินใจที่จะมีฟังก์ชั่นการตั้งชื่อcreateMenubar, createToolbarและcreateMainเพื่อให้ตัวสร้างโปรแกรมประยุกต์ของคุณเป็นระเบียบและเป็นระเบียบเรียบร้อย

รหัสหลักของคุณจะมีลักษณะดังนี้ (ตัวอย่างนี้เป็นไพ ธ อน):

class ExampleApp():
    def __init__(self):
        self.createMenubar()
        self.createToolbar()
        self.createMain()

ฟังก์ชั่นหลักของคุณจะทำงานล้มเหลวดังนั้นคุณจะทดสอบแอพระหว่างการพัฒนาได้อย่างไร ตัวอย่างเช่นถ้าคุณเริ่มต้นทำงานcreateMenubarการเริ่มต้นจะล้มเหลวหลังจากที่สร้างแถบเมนูเนื่องจากคุณไม่ได้ใช้แถบเครื่องมือหรือพื้นที่หลักของ GUI

นี่คือสิ่งที่สตับเข้ามาคุณสามารถสร้างฟังก์ชั่นที่มีชื่อcreateToolbarและcreateMainตอบสนองความต้องการของตัวสร้างแอป (กล่าวคือมีฟังก์ชั่นเหล่านี้) โดยไม่ต้องใช้งานจริง ฟังก์ชั่นเหล่านี้ไม่สมบูรณ์:

def createToolbar():
    pass

def createMain():
    pass

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

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


2

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

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