ฉันจะพยายามทำให้ดีที่สุดเพื่อวางกรอบคำถามนี้ในแบบที่ไม่ส่งผลให้เกิดสงครามภาษาหรือรายการเพราะฉันคิดว่าอาจมีคำตอบทางเทคนิคที่ดีสำหรับคำถามนี้
ภาษาที่แตกต่างกันรองรับนามแฝงประเภทเพื่อองศาที่แตกต่าง C # อนุญาตให้พิมพ์นามแฝงประเภทที่จุดเริ่มต้นของไฟล์รหัสแต่ละไฟล์และพวกเขาจะถูกต้องตลอดทั้งไฟล์นั้น ภาษาเช่น ML / Haskell ใช้นามแฝงประเภทอาจจะมากเท่ากับที่ใช้นิยามประเภท C / C ++ มีการเรียงลำดับของ Wild West ด้วยtypedef
และ#define
มักจะถูกนำมาใช้แทนกันได้ดูเหมือนกับประเภทนามแฝง
การสร้างสมนามประเภทที่คว่ำไม่ก่อให้เกิดข้อพิพาทมากเกินไป:
- มันทำให้สะดวกในการกำหนดประเภทคอมโพสิตที่อธิบายไว้ตามธรรมชาติโดยภาษาเช่นหรือ
type Coordinate = float * float
type String = [Char]
- ชื่อแบบยาวสามารถสั้นลงได้:
using DSBA = System.Diagnostics.DebuggerStepBoundaryAttribute
. - ในภาษาเช่น ML หรือ Haskell ที่พารามิเตอร์ฟังก์ชันมักไม่มีชื่อนามแฝงประเภทให้เอกสารของตัวเอง
ข้อเสียคืออีกเล็กน้อย iffy: นามแฝงสามารถขยายทำให้ยากต่อการอ่านและทำความเข้าใจรหัสหรือเรียนรู้แพลตฟอร์ม Win32 API เป็นตัวอย่างที่ดีโดยมีDWORD = int
และHINSTANCE = HANDLE = void*
รวมถึงLPHANDLE = HANDLE FAR*
และอื่น ๆ ด้วย ในทุกกรณีมันไม่เหมาะสมที่จะแยกแยะระหว่างการจับและตัวชี้โมฆะหรือ DWORD และจำนวนเต็มเป็นต้น
การแยกการถกเถียงทางปรัชญาว่ากษัตริย์ควรให้อิสระอย่างเต็มที่กับวิชาของพวกเขาและปล่อยให้พวกเขารับผิดชอบต่อตัวเองหรือไม่หรือว่าพวกเขาควรจะมีการกระทำที่น่าสงสัยทั้งหมดของพวกเขาหรือไม่? บรรเทาความเสี่ยงของการละเมิด
เป็นตัวอย่างปัญหาของชื่อยาวสามารถแก้ไขได้ด้วยคุณสมบัติการเติมข้อความอัตโนมัติที่ดี Visual Studio 2010 จะช่วยให้คุณพิมพ์ DSBA เพื่ออ้างอิง Intellisense กับ System.Diagnostics.DebuggerStepBoundaryAttribute มีคุณสมบัติอื่น ๆ ที่จะให้ประโยชน์อื่น ๆ ของการสร้างนามแฝงประเภทอย่างปลอดภัยหรือไม่?
DebuggerStepBoundaryAttribute
มากเพิ่มเติมDSBA
อ่านได้มากกว่า ในกรณีแรกคุณรู้ว่ามันหมายถึงอะไร ในอันที่สองคุณไม่มีความคิด ทีนี้ลองจินตนาการว่าคุณใช้นามแฝงยี่สิบแบบในรหัส ใครบ้างมีความกล้าพอที่จะลองอ่านและเข้าใจรหัสของคุณ?