ในภาษาที่แยกความแตกต่างระหว่างไฟล์ "แหล่งที่มา" และ "ส่วนหัว" (ส่วนใหญ่ C และ C ++) จะดีกว่าฟังก์ชั่นเอกสารในไฟล์ส่วนหัวหรือไม่:
(ขโมยจากCCAN )
/**
* time_now - return the current time
*
* Example:
* printf("Now is %lu seconds since epoch\n", (long)time_now().tv_sec);
*/
struct timeval time_now(void);
หรือในไฟล์ต้นฉบับ?
(ขโมยจาก PostgreSQL)
/*
* Convert a UTF-8 character to a Unicode code point.
* This is a one-character version of pg_utf2wchar_with_len.
*
* No error checks here, c must point to a long-enough string.
*/
pg_wchar
utf8_to_unicode(const unsigned char *c)
{
...
โปรดทราบว่าบางสิ่งมีการกำหนดไว้ในส่วนหัวเท่านั้นเช่น structs, macros และstatic inline
ฟังก์ชั่น ฉันแค่พูดถึงสิ่งที่ประกาศในไฟล์ส่วนหัวและกำหนดไว้ในไฟล์ต้นฉบับ
นี่คือข้อโต้แย้งที่ฉันสามารถนึกได้ ฉันกำลังเอนไปยังการจัดทำเอกสารในไฟล์ต้นฉบับดังนั้นข้อโต้แย้ง "Pro-header" ของฉันอาจค่อนข้างอ่อนแอ
Pro-ส่วนหัว:
- ผู้ใช้ไม่จำเป็นต้องมีซอร์สโค้ดเพื่อดูเอกสาร
- แหล่งที่มาอาจไม่สะดวกหรือเป็นไปไม่ได้ที่จะได้รับ
- สิ่งนี้ทำให้ส่วนต่อประสานและการนำไปใช้งานแยกออกจากกัน
Pro-แหล่งที่มา:
- มันทำให้ส่วนหัวสั้นลงมากทำให้ผู้อ่านมองเห็นมุมมองของโมดูลโดยรวม
- มันจับคู่เอกสารของฟังก์ชั่นกับการใช้งานทำให้ง่ายขึ้นที่จะเห็นว่าฟังก์ชั่นทำในสิ่งที่มันบอกว่ามันทำ
เมื่อตอบคำถามโปรดระวังข้อโต้แย้งโดยพิจารณาจากเครื่องมือและ "โมเดิร์นไอดี" ที่สามารถทำได้ ตัวอย่าง:
- Pro-header: การพับโค้ดสามารถช่วยให้ส่วนหัวที่มีความคิดเห็นสามารถนำทางได้มากขึ้นโดยการซ่อนความคิดเห็น
- Pro-source: คุณลักษณะของcscope
Find this global definition
จะนำคุณไปยังไฟล์ต้นฉบับ (โดยนิยามคือ) แทนที่จะเป็นไฟล์ส่วนหัว (โดยที่การประกาศคือ)
ฉันไม่ได้บอกว่าอย่าโต้แย้งเช่นนั้น แต่โปรดจำไว้ว่าไม่ใช่ทุกคนที่พอใจกับเครื่องมือที่คุณใช้เหมือนที่คุณเป็น