เลือกชนิดข้อมูลที่ถูกต้อง
คุณได้รับการแนะนําให้รู้จักกับความแตกต่างระหว่างชนิดค่าและชนิดการอ้างอิง รวมถึงจํานวนเต็มและชนิดจุดทศนิยมลอยตัว
สมมติว่างานของคุณคือการสร้างแอปพลิเคชันใหม่ที่เรียกใช้ จัดการ และจัดเก็บข้อมูลชนิดต่างๆ คุณใช้ชนิดข้อมูลใด
ในบางกรณีเป็นตัวเลือกที่ง่าย ตัวอย่างเช่น เมื่อคุณต้องทํางานกับข้อความ คุณเริ่มต้นการใช้ string ชนิดข้อมูลเว้นแต่ว่าคุณต้องการดําเนินการเรียงต่อกันเป็นจํานวนมาก
แต่ว่าเกิดอะไรขึ้นกับการทํางานกับข้อมูลตัวเลข มีตัวเลือกที่แตกต่างกัน 11 ตัวเลือก คุณจะเลือกประเภทข้อมูลที่ถูกต้องได้อย่างไร
เลือกชนิดข้อมูลที่ถูกต้อง
ด้วยชนิดข้อมูลมากมายให้เลือก คุณควรใช้เกณฑ์ใดในการเลือกชนิดข้อมูลที่เหมาะสมสําหรับสถานการณ์เฉพาะ
เมื่อประเมินตัวเลือกของคุณคุณต้องมีน้ําหนักข้อควรพิจารณาที่สําคัญหลายข้อ บ่อยครั้งที่คําตอบมักไม่มีคําตอบที่ถูกต้องเพียงคําตอบเดียว แต่คําตอบบางคําตอบนั้นถูกต้องมากกว่าคําตอบอื่น
เลือกชนิดข้อมูลที่ตรงตามข้อกําหนดช่วงค่าขอบเขตของแอปพลิเคชันของคุณ
ตัวเลือกของชนิดข้อมูลสามารถช่วยในการตั้งค่าขอบเขตสําหรับขนาดของข้อมูลที่คุณอาจจัดเก็บไว้ในตัวแปรเฉพาะ ตัวอย่างเช่น ถ้าคุณทราบว่าตัวแปรใดตัวแปรหนึ่งควรเก็บตัวเลขระหว่าง 1 ถึง 10,000 มิฉะนั้นจะอยู่นอกขอบเขตของสิ่งที่คาดหมาย คุณอาจหลีกเลี่ยง byte และ sbyte เนื่องจากช่วงนั้นต่ําเกินไป
นอกจากนี้ คุณอาจไม่ต้องการ int, long, uintและ ulong เนื่องจากพวกเขาสามารถจัดเก็บข้อมูลได้มากกว่าที่จําเป็น ในทํานองเดียวกัน คุณอาจข้าม floatdouble, และdecimalถ้าคุณไม่ต้องการค่าเศษส่วน คุณอาจจํากัดขอบเขตให้แคบลงเป็น short และ ushortซึ่งทั้งสองอย่างอาจทํางานได้ ถ้าคุณมั่นใจว่าค่าลบจะไม่มีความหมายในแอปพลิเคชันของคุณ คุณอาจเลือก ushort (จํานวนเต็มที่ไม่มีเครื่องหมายบวก, 0 ถึง 65,535) ตอนนี้ค่าใด ๆ ที่กําหนดให้กับตัวแปรชนิด ushort ที่อยู่นอกขอบเขต 0 ถึง 65535 จะโยนข้อยกเว้นดังนั้นจึงช่วยให้คุณบังคับใช้ระดับการตรวจสอบสติในแอปพลิเคชันของคุณ
เริ่มต้นด้วยการเลือกชนิดข้อมูลเพื่อให้พอดีกับข้อมูล (ไม่ปรับประสิทธิภาพให้เหมาะสม)
คุณอาจถูกชักจูงให้เลือกชนิดข้อมูลที่ใช้บิตน้อยที่สุดเพื่อจัดเก็บข้อมูลโดยคิดว่ามันช่วยปรับปรุงประสิทธิภาพของแอปพลิเคชันของคุณ อย่างไรก็ตาม คําแนะนําที่ดีที่สุดบางอย่างที่เกี่ยวข้องกับประสิทธิภาพของแอปพลิเคชัน (นั่นคือความเร็วในการเรียกใช้แอปพลิเคชันของคุณ) คือการไม่ "ปรับให้เหมาะสมที่สุด" คุณควรต่อต้านการทดลองทดลองเพื่อคาดเดาที่ส่วนของโค้ดรวมถึงการเลือกชนิดข้อมูลที่อาจส่งผลกระทบต่อประสิทธิภาพของแอปพลิเคชันของคุณ
หลายคนสันนิษฐานว่าเนื่องจากชนิดข้อมูลที่กําหนดจัดเก็บข้อมูลน้อยกว่าต้องใช้ตัวประมวลผลและหน่วยความจําของคอมพิวเตอร์น้อยกว่าชนิดข้อมูลที่จัดเก็บข้อมูลเพิ่มเติม แต่คุณควรเลือกที่เหมาะสมกับข้อมูลของคุณ จากนั้นคุณสามารถวัดประสิทธิภาพของแอปพลิเคชันของคุณโดยใช้ซอฟต์แวร์พิเศษที่ให้ข้อมูลเชิงลึกจริงไปยังส่วนต่างๆ ของแอปพลิเคชันของคุณที่ส่งผลกระทบเชิงลบต่อประสิทธิภาพ
เลือกชนิดข้อมูลที่ยึดตามชนิดข้อมูลอินพุตและเอาท์พุตของฟังก์ชันไลบรารีที่ใช้
สมมติว่าคุณต้องการทํางานกับช่วงของปีระหว่างวันที่สองวัน เนื่องจากแอปพลิเคชันเป็นแอปพลิเคชันทางธุรกิจ คุณอาจตัดสินใจว่า คุณจําเป็นต้องมีช่วงตั้งแต่ประมาณ 1960 ถึง 2200 เท่านั้น คุณอาจคิดว่าพยายามทํางานด้วย byte เนื่องจากสามารถแสดงตัวเลขระหว่าง 0 และ 255 ได้
อย่างไรก็ตาม เมื่อคุณดูที่วิธีการSystem.TimeSpanที่มีอยู่ภายในคลาส และ System.DateTime คุณตระหนักว่าพวกเขาส่วนใหญ่ยอมรับค่าของชนิด double และint หากคุณเลือก sbyteคุณจะต้องแคสต์ไปมาระหว่างbyteและdoubleหรือint ในกรณีนี้ อาจเหมาะสมกว่าที่จะเลือก int ถ้าคุณไม่ต้องการความแม่นยําระดับต่ํากว่าระดับสี และ double ถ้าคุณต้องการความแม่นยําระดับต่ํากว่าระดับสี
เลือกชนิดข้อมูลที่ยึดตามผลกระทบกับระบบอื่น
ในบางครั้ง คุณต้องพิจารณาว่าแอปพลิเคชันอื่นหรือระบบอื่น ๆ เช่น ฐานข้อมูลจะนําข้อมูลไปใช้อย่างไร ตัวอย่างเช่น ระบบชนิดของ SQL Server จะแตกต่างจากระบบชนิดของ C# ด้วยเหตุนี้ การแมปบางอย่างระหว่างทั้งสองจะต้องเกิดขึ้นก่อนที่คุณจะสามารถบันทึกข้อมูลลงในฐานข้อมูลนั้นได้
ถ้าวัตถุประสงค์ของแอปพลิเคชันของคุณคืออินเทอร์เฟซกับฐานข้อมูล จากนั้นคุณอาจต้องพิจารณาว่าข้อมูลถูกจัดเก็บอย่างไรและจัดเก็บข้อมูลไว้เท่าใด ตัวเลือกของชนิดข้อมูลที่มีขนาดใหญ่กว่าอาจส่งผลกระทบต่อจํานวน (และต้นทุน) ของที่เก็บข้อมูลจริงที่จําเป็นในการจัดเก็บข้อมูลทั้งหมดที่แอปพลิเคชันของคุณจะสร้าง
หากไม่แน่ใจให้ยึดตามพื้นฐาน
ในขณะที่คุณดูข้อควรพิจารณาหลายอย่างเมื่อคุณเริ่มต้นเพื่อความง่ายคุณควรชอบชุดย่อยของชนิดข้อมูลพื้นฐานรวมถึง:
-
intสําหรับจํานวนเต็มส่วนใหญ่ -
decimalสําหรับตัวเลขที่แสดงเงิน -
boolสําหรับค่าจริงหรือเท็จ -
stringสําหรับค่าพยัญชนะผสมตัวเลข
เลือกชนิดที่ซับซ้อนเป็นพิเศษสําหรับสถานการณ์พิเศษ
อย่าสร้างชนิดข้อมูลใหม่ถ้ามีชนิดข้อมูลอย่างน้อยหนึ่งชนิดอยู่แล้วเพื่อวัตถุประสงค์ที่กําหนด ตัวอย่างต่อไปนี้ระบุตําแหน่งที่ชนิดข้อมูล .NET เฉพาะจะมีประโยชน์:
-
byte: ทํางานกับข้อมูลที่เข้ารหัสที่มาจากระบบคอมพิวเตอร์อื่นๆ หรือใช้ชุดอักขระที่แตกต่างกัน -
double: ทํางานกับวัตถุประสงค์ทางเรขาคณิตหรือทางวิทยาศาสตร์doubleใช้บ่อยเมื่อสร้างเกมที่เกี่ยวข้องกับการเคลื่อนไหว -
System.DateTimeสําหรับค่าวันที่และเวลาที่เฉพาะเจาะจง -
System.TimeSpanสําหรับช่วงของปี / เดือน / วัน / ชั่วโมง / นาที / วินาที / มิลลิวินาที
สรุป
มีข้อควรพิจารณาเมื่อเลือกชนิดข้อมูลสําหรับโค้ดของคุณและมักจะมากกว่าหนึ่งตัวเลือก คิดผ่านตัวเลือกของคุณ และเว้นแต่ว่าคุณมีเหตุผลที่ดี พยายามยึดติดกับชนิดพื้นฐานเช่น int, decimal, stringและbool