ตัวอย่าง (การเขียนโปรแกรม)

ตัวอย่างข้อมูลโค้ด

Snippetเป็นคำศัพท์การเขียนโปรแกรมสำหรับพื้นที่เล็กๆ ของซอร์สโค้ดโค้ดเครื่องหรือข้อความที่นำมาใช้ซ้ำได้ โดยปกติแล้ว หน่วยปฏิบัติงานเหล่านี้ถูกกำหนดอย่างเป็นทางการเพื่อรวมเข้ากับโมดูลการเขียนโปรแกรม ขนาด ใหญ่ การจัดการส่วนย่อยเป็นคุณลักษณะหนึ่งของโปรแกรมแก้ไขข้อความโปรแกรมแก้ไขซอร์สโค้ดของโปรแกรม IDEและซอฟต์แวร์ ที่ เกี่ยวข้อง ช่วยให้ผู้ใช้หลีกเลี่ยงการพิมพ์ซ้ำๆ ในระหว่างการแก้ไขตามปกติ [1]

คำนิยาม

ในทางปฏิบัติด้านการเขียนโปรแกรม "snippet" หมายถึงส่วนของซอร์สโค้ดที่โปรแกรมแก้ไขรวมไว้ในไฟล์อย่างแท้จริง และเป็นรูปแบบของการเขียนโปรแกรมคัดลอกและวาง [2]การรวมอย่างเป็นรูปธรรมนี้ตรงกันข้ามกับวิธีการนามธรรม เช่นฟังก์ชันหรือมาโครซึ่งเป็นนามธรรมภายในภาษา ตัวอย่างข้อมูลจึงถูกนำมาใช้เป็นหลักเมื่อไม่มีนามธรรมเหล่านี้หรือไม่ต้องการ เช่น ในภาษาที่ไม่มีนามธรรม หรือเพื่อความชัดเจนและไม่มีค่าใช้จ่าย

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

ภาพรวม

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

ตัวอย่างในโปรแกรมแก้ไขข้อความ

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

ตัวอย่างข้อมูลใน IDE

แอปพลิเคชันของโปรแกรมเมอร์บางตัว เช่นEclipse , NetBeansและVisual Studio ของ Microsoft (ใช้TextMate -inspired snippets underhood) และIDE อื่นๆ มีส่วนของโครงสร้างในตัวเพื่อความสะดวกในการเขียนโค้ด

แอปพลิเคชัน อื่น ๆ เช่น Macromedia Dreamweaverใช้ประโยชน์จากข้อมูลโค้ดเหล่านี้เช่นกันสำหรับการพัฒนาเว็บ

ตัวอย่างในคอมไพเลอร์ JIT

คอมไพเลอร์ Just-in-time ( JIT ) สามารถ "ประกบกัน" ส่วนของโค้ดที่คอมไพล์ไว้ล่วงหน้าเป็นโค้ดอ็อบเจ็กต์ ที่ยาวขึ้น / ส่วนโค้ดเครื่อง ซึ่งจะช่วยลดเวลาการตีความได้อย่างมากและเร่งการดำเนินการไปพร้อมๆ กัน

ตัวอย่างภาพเคลื่อนไหวที่สาธิตการใช้ตัวอย่างข้อมูลในPowerShell ISE

ตัวอย่างข้อมูลในเปลือกหอย

ตัวอย่างข้อมูลอาจใช้ภายในอินเทอร์เฟซบรรทัดคำสั่งเช่น bash, zsh ( GNU Linux /Unix-like) หรือ powershell ( MS Windows ) คุณลักษณะต่างๆ เช่น ความสมบูรณ์และการทดแทนตัวยึดตำแหน่งอาจได้รับการสนับสนุนหรือไม่ก็ได้

ตัวอย่าง

พิจารณากระบวนการสลับค่าของตัวแปรสองตัว คือxและy สมมติว่าการพิมพ์ไม่ดีและไม่ต้องกังวลกับการชนกันของชื่อ สิ่งนี้จะแสดงด้วยโค้ด:

อุณหภูมิ = x
x = ย
y = อุณหภูมิ

เมื่อแทรกตัวอย่างแล้ว โปรแกรมเมอร์จะได้รับพร้อมท์ให้ใส่ค่าของพารามิเตอร์ทั้งสอง สมมติว่าเป็นประเภทfooและbarซึ่งเป็นชื่อจริงของตัวแปรที่ต้องการสลับ จะได้โค้ดดังนี้:

อุณหภูมิ = ฟู
ฟู = บาร์
บาร์ = อุณหภูมิ

หากตัวอย่างข้อมูลมีการเปลี่ยนแปลงในภายหลัง เช่น ใช้__tempแทนtempจะไม่เปลี่ยนรหัสที่แทรกไว้แล้ว แต่จะใช้ในการแทรกตัวอย่างข้อมูลครั้งต่อๆ ไป

ตัวอย่างข้อมูลนี้อาจแสดงเป็น:

อุณหภูมิ = $1
$1 = $2
$2 = อุณหภูมิ

อนุสัญญา

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

กลุ่มฟีเจอร์ตัวอย่างข้อมูลเหล่านี้ประกอบด้วย:

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

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


ตัวยึดตำแหน่งตัวอย่าง

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

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

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

ตัวระบุตัวยึดตำแหน่ง

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

ตัวอย่างต่อไปนี้ใช้ตัวระบุfirst_name, last_nameและitem:

สวัสดี{% first_name %} {% Last_name % } 

การจัดส่งของคุณจำนวน{% รายการ%} พร้อมให้รับแล้ว

ขอบคุณ{% first_name %} !

ตัวอย่างโค้ดใน ไวยากรณ์ TexMate :

สวัสดี${ 1 : first_name } $ { 2 : Last_name }  
 การจัด ส่ง$ { 3 : item }ของ
คุณพร้อมรับแล้ว       

ขอบคุณ${ 4 : first_name } !
 

การทำซ้ำตัวยึดตำแหน่ง

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

การเปลี่ยนแปลงตัวยึดตำแหน่ง

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

คุณสมบัติการเขียนโปรแกรมตัวอย่าง

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

ข้อความธรรมดา

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

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

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

ค่าคงที่และตัวแปร

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

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

รหัสที่ตีความ

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

ทางเลือก

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

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

ข้อเสียของวิธีนี้คือจำรูปแบบหรือเอกสารประกอบได้ยากกว่า

ความช่วยเหลือด้านซอฟต์แวร์

ในปี 2021 มี เครื่องมือ การเรียนรู้ เชิงลึกที่ซับซ้อน เกิดขึ้น ซึ่งสามารถช่วยอนุมานฟังก์ชันการทำงานเฉพาะจากข้อความที่มนุษย์อ่านได้ และสร้างตัวอย่างซอร์สโค้ดที่เกี่ยวข้อง (เช่นGitHub Copilot ) [3] [4]

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

  • เติมข้อความอัตโนมัติ  - คุณสมบัติการคำนวณที่คาดเดาการสิ้นสุดของคำที่ผู้ใช้กำลังพิมพ์
  • Codebase  – คอลเลกชันซอร์สโค้ดที่ใช้ในการสร้างระบบ แอปพลิเคชัน หรือส่วนประกอบ
  • การปรับโครงสร้างโค้ด  – ปรับโครงสร้างโค้ดคอมพิวเตอร์ที่มีอยู่โดยไม่เปลี่ยนแปลงพฤติกรรมภายนอก
  • การจัดการเนื้อหา  – กระบวนการจัดการข้อมูลหรือประสบการณ์ที่สร้างขึ้นโดยคำนึงถึงผู้ชม
  • Pastebin  – ประเภทของบริการโฮสต์เนื้อหาออนไลน์ที่ผู้ใช้สามารถจัดเก็บข้อความธรรมดาได้
  • สมุดภาพ (Mac OS)  – ซอฟต์แวร์คอมพิวเตอร์ Macintosh
  • การควบคุมเวอร์ชัน  – กิจกรรมการจัดการเวอร์ชันของไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไป
  • วิดเจ็ตเว็บ  – แอปเพล็ตมีไว้สำหรับใช้ภายในหน้าเว็บ

อ้างอิง

  1. "Gedit/ปลั๊กอิน/ตัวอย่าง" เก็บถาวรจากต้นฉบับเมื่อ25-08-2012 สืบค้นเมื่อ2010-01-09 .ตัวอย่างฟีเจอร์ในโปรแกรมแก้ไข Gedit
  2. คิม, มีรยอง; เบิร์กแมน, ลอว์เรนซ์; เลา, เทสซ่า; นอตคิน, เดวิด (2004) "การศึกษาเชิงชาติพันธุ์วิทยาของการคัดลอกและวางการเขียนโปรแกรมใน OOPL" ( PDF) การดำเนินการ: การประชุมวิชาการระดับนานาชาติเรื่องวิศวกรรมซอฟต์แวร์เชิงประจักษ์ประจำปี 2547, ISESE 2547: 19–20 สิงหาคม 2547, เรดอนโดบีช,แคลิฟอร์เนีย ลอสอลามิตอส แคลิฟอร์เนีย: IEEE . หน้า 83–92. ไอเอสบีเอ็น 978-0-7695-2165-7. OCLC  326620442. เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 19 ตุลาคม2559 สืบค้นเมื่อ 18 ตุลาคม 2559 . สำหรับแต่ละอินสแตนซ์ C&P เรายังสังเกตความสัมพันธ์ระหว่างข้อมูลโค้ดที่คัดลอกและโค้ดในส่วนอื่น ๆ ในฐานโค้ด
  3. HM LE, ไตรเอต; เฉิน ห่าว; อาลี บาบาร์, มูฮัมหมัด (2021) "การเรียนรู้เชิงลึกสำหรับการสร้างแบบจำลองและการสร้างซอร์สโค้ด" แบบสำรวจ คอมพิวเตอร์ACM มหาวิทยาลัยแอดิเลด 53 (3): 1–38. arXiv : 2002.05442 . ดอย :10.1145/3383458. S2CID  211096967.
  4. "GitHub แสดงตัวอย่างเครื่องมือ AI ใหม่ที่ให้คำแนะนำการเขียนโค้ด" เทคครันช์ สืบค้นเมื่อ2021-07-25 .
แปลจาก "https://en.wikipedia.org/w/index.php?title=Snippet_(programming)&oldid=1181412931"