ความหมายของ #XXX ในโค้ดคอมเมนต์คืออะไร?


126

ฉันเคยเห็นสิ่งนี้มามากในรหัสแม้กลุ่มจะทำเครื่องหมายว่าเป็นกรณีพิเศษ #TODOและ#FIXMEเป็นไฮไลต์กลุ่มเครื่องหมายแก้ไขอีกสองตัว แต่#XXXหมายความว่าอย่างไร


7
คำถามคือการถามเกี่ยวกับ codetag หรือแนวทางปฏิบัติที่ดีที่สุดในการเขียนโปรแกรม Python มีการอภิปรายข้อเสนอการปรับปรุง Python ในหัวข้อนี้ คำถามควรได้รับการเก็บรักษาไว้ใน SO มันอาจจะดีกว่านี้สักหน่อย
nik

คำตอบ:


140

XXXในความคิดเห็นมักจะเป็นการแจ้งล่วงหน้า มันอาจจะเป็น:

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

ฉันมักจะแนะนำแท็กอธิบายเพิ่มเติมเช่นFIXMEหรือหรือTODO มักจะใช้เป็นสิ่งที่จับได้ทั้งหมดสำหรับข้างต้นHACKXXX

การค้นหา "XXX" ในการอ้างอิงข้ามรหัส FreeBSDเป็นตัวอย่างที่ดีของการใช้งานหลายอย่าง มีเป็นพัน ...


สิ่งที่ตลกคือฉันใช้สิ่งนี้ด้วยตัวเอง XXX หรือ #XXX โดยทั่วไปจะเดินทางคอมไพเลอร์และเตือนให้ฉันกลับไปทำอะไรบางอย่าง โดยทั่วไปการอ้างอิงตัวชี้หรือค่าหรือชื่อตัวแปรที่ไม่รู้จักมาก่อน
bobby

5
สิ่งนี้ยืนยันการเดาเดิมของฉันมันเป็นเพียงแท็กที่จับได้ทั้งหมดเพื่อระบุโปรแกรมเมอร์คนอื่น ๆ เพื่อเน้นความคิดเห็นนั้นเป็นสิ่งที่ต้องดู
Jorge Vargas

ไม่มีการพยายามหมุนรอบ แต่ "HACK" ไม่สามารถอธิบายได้ ในความเป็นจริงมันมีความคลุมเครือมาก สำหรับฉันมันอาจหมายถึงอย่างน้อย 3 อย่าง
ЯрославРахматуллин

2
@ ЯрославРахматуллинในซอร์สโค้ดฉันมักจะอ่านในส่วน "นี่เป็นงานแฮ็คที่น่าเกลียด แต่ดูเหมือนว่าจะทำงานได้ดีพอ" ซึ่งเป็นสิ่งที่คุณต้องการทำความสะอาดในภายหลัง แต่ไม่ใช่เรื่องเร่งด่วน ฉันไม่ได้ใช้มัน (ฉันมักจะใช้TODOหรือXXXแทน) แต่นั่นคือวิธีที่ฉันจะตีความ
Iiridayn

92
  • NOTE: คำอธิบายเกี่ยวกับวิธีการทำงานของรหัส (เมื่อไม่ชัดเจนในตัวเอง)
  • XXX: คำเตือนเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้นสามารถใช้เป็นNOTE:XXX:ไฟล์.
  • HACK: เขียนโค้ดได้ไม่ดีหรือมีรูปแบบไม่ถูกต้องเพื่อหลีกเลี่ยงปัญหา / ข้อบกพร่อง ควรใช้เป็นHACK:FIXME:.
  • FIXME: วิธีนี้ใช้งานได้ แต่น่าจะทำได้ดีกว่านี้ (โดยปกติแล้วรหัสจะถูกเขียนขึ้นอย่างเร่งรีบที่ต้องเขียนใหม่)
  • BUG: มีปัญหาที่นี่
  • TODO: ไม่มีปัญหา แต่จำเป็นต้องเขียนโค้ดเพิ่มเติมโดยปกติเมื่อคุณข้ามบางสิ่งไป

อย่างน้อยนี่คือวิธีที่ฉันได้รับการสอนเกี่ยวกับแท็กเหล่านี้ โดยทั่วไปสอง ( NOTEและXXX) แรกจะใช้สำหรับข้อมูลและไม่จำเป็นต้องดำเนินการใด ๆ ในขณะที่ช่วงสาม ( FIXME, BUGและTODO) จะต้องมีการดำเนินการ HACKอยู่ที่ไหนสักแห่งในระหว่างนั้น (และแทบจะไม่เคยใช้เลย?)


3
รายการที่ดี ฉันยังชอบLAZY(ไม่สำคัญเท่า FIXME หรือ HACK) และOCD(รู้จักกันมากเกินไป)
Brendan Byrd

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

21

บันทึกบางส่วนจากมิถุนายน 2005 หลามการเพิ่มประสิทธิภาพของข้อเสนอที่ถูกปฏิเสธ

การเลือกระหว่างFIXMEและXXXเป็นเรื่องยาก
XXXดูเหมือนจะเป็นเรื่องธรรมดา แต่บรรยายได้น้อยกว่ามาก
นอกจากนี้ยังXXXเป็นตัวยึดที่มีประโยชน์ในโค้ดชิ้นหนึ่งที่
มีค่าที่ไม่รู้จัก

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


PEP เริ่มต้นด้วย

PEP นี้ถูกปฏิเสธ ในขณะที่ชุมชนอาจสนใจ
แต่ก็ไม่มีความปรารถนาที่จะทำให้ห้องสมุดมาตรฐานเป็นไปตามมาตรฐานนี้

...

Codetags คืออะไร?

โปรแกรมเมอร์ใช้รูปแบบการมาร์กอัปโค้ดข้อคิดเห็นเฉพาะกิจอย่างกว้างขวางเพื่อใช้เป็นตัวเตือนส่วนต่างๆของโค้ดที่ต้องการการตรวจสอบหรือตรวจทานอย่างใกล้ชิด ตัวอย่างของมาร์กอัป ได้แก่FIXME, TODO, XXX, BUGแต่มีอื่น ๆ อีกมากมายในการใช้งานอย่างกว้างขวางในซอฟต์แวร์ที่มีอยู่ มาร์กอัปดังกล่าวจะต่อจากนี้ไปจะเรียกว่าcodetags แท็กเหล่านี้อาจปรากฏในรหัสแอปพลิเคชันการทดสอบหน่วยสคริปต์เอกสารทั่วไปหรือที่ใดก็ตามที่เหมาะสม


PEP เป็นการอ่านที่น่าสนใจ


10

มีลักษณะที่PEP350 มันอธิบายทั้งหมดTODO, XXXฯลฯ ฉันจะใช้มันในชีวิตประจำวันเมื่อผมจำไม่ได้ว่าสิ่งหนึ่งในแท็กรหัสหมายถึง


1
คุณรู้หรือไม่ว่า PEP350 เป็นต้นกำเนิดของฉลากเหล่านี้หรือไม่? คุณรู้จักเอกสารเก่า ๆ (จากยุค Unix) ที่อธิบายวิธีใช้ป้ายเหล่านี้หรือไม่?
ЯрославРахматуллин

6

ผมใช้เพราะมันง่ายต่อการพิมพ์กว่าXXXTODO

XXX มีไว้สำหรับเมื่อคุณรีบและจะกลับไปที่สิ่งนี้ด้วยตัวคุณเอง

TODO มีไว้สำหรับเมื่อคุณต้องส่งมอบให้คนอื่น


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

2
และ RFC เหล่านั้นมี "ความหมายตามตัวอักษร" ในข้อใด? หรือมีการอ้างอิงอื่น ๆ สำหรับสิ่งนั้นหรือไม่?
Randall

6
@Randall: "การอ้างอิง"? ขออภัยเป็นเพียงความเข้าใจของฉันหลังจากอ่านโค้ดจำนวนมาก
ล็อตต์



1

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


0

ฉันเชื่อว่าในขณะที่FIXMEสำหรับนักพัฒนาและHACKสำหรับผู้ดูแลนั้นXXXมีไว้สำหรับผู้ใช้

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

แต่สำหรับFIXMEคุณจะรู้สึกคุ้มค่าที่จะแก้ไขโค้ดเพื่อให้ใช้งานได้ และสำหรับHACKคุณอาจไม่มีทางเลือกที่ดีกว่าแม้ว่าคุณจะไม่ได้ใช้ก็ตาม

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


0

ฉันใช้ // XXX ดังนั้นฉันจึงไม่ต้องจำหมายเลขบรรทัด แต่ฉันเพียงค้นหา XXX เมื่อฉันต้องการกลับไปที่ส่วนของรหัสนั้น

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