โครงสร้างและฟิลด์เปล่าจะช่วยลดความสามารถในการทำงานร่วมกันกับ API ที่ไม่ได้รับการจัดการ บ่อยครั้งที่คุณจะพบว่า API ระดับต่ำต้องการเข้าถึงค่าโดยการอ้างอิงซึ่งเป็นผลดีต่อประสิทธิภาพ (เนื่องจากเราหลีกเลี่ยงการคัดลอกที่ไม่จำเป็น) การใช้คุณสมบัติเป็นอุปสรรคต่อสิ่งนั้นและบ่อยครั้งที่ไลบรารีของ wrapper จะทำสำเนาเพื่อความสะดวกในการใช้งานและบางครั้งเพื่อความปลอดภัย
ด้วยเหตุนี้คุณมักจะได้รับประสิทธิภาพที่ดีขึ้นโดยมีเวกเตอร์และเมทริกซ์ประเภทที่ไม่มีคุณสมบัติ แต่เป็นฟิลด์เปล่า
แนวปฏิบัติที่ดีที่สุดไม่ได้สร้างขึ้นในวัคซีน แม้จะมีลัทธิขนส่งสินค้าอยู่บ้าง แต่โดยทั่วไปแล้ววิธีปฏิบัติที่ดีที่สุดก็อยู่ที่นั่นด้วยเหตุผลที่ดี
ในกรณีนี้เรามีคู่:
คุณสมบัติช่วยให้คุณสามารถเปลี่ยนการใช้งานโดยไม่ต้องเปลี่ยนรหัสลูกค้า (ในระดับไบนารีมันเป็นไปได้ที่จะเปลี่ยนเขตข้อมูลไปยังสถานที่ให้บริการโดยไม่ต้องเปลี่ยนรหัสลูกค้าในระดับแหล่งที่มาอย่างไรก็ตามมันจะรวบรวมเป็นสิ่งที่แตกต่างกันหลังจากการเปลี่ยนแปลง) . นั่นหมายความว่าโดยการใช้คุณสมบัติตั้งแต่เริ่มต้นรหัสที่อ้างอิงของคุณจะไม่ต้องถูกคอมไพล์ใหม่เพียงเพื่อเปลี่ยนสิ่งที่คุณสมบัติทำภายใน
หากไม่ใช่ค่าที่เป็นไปได้ทั้งหมดของเขตข้อมูลในประเภทของคุณเป็นสถานะที่ถูกต้องแล้วคุณไม่ต้องการเปิดเผยให้รหัสลูกค้าที่รหัสแก้ไข ดังนั้นหากการรวมกันของค่าบางอย่างไม่ถูกต้องคุณต้องการให้ฟิลด์เป็นส่วนตัว (หรือภายใน)
ฉันพูดรหัสลูกค้า นั่นหมายถึงรหัสที่โทรเข้ามาหาคุณ หากคุณไม่ได้สร้างห้องสมุด (หรือแม้กระทั่งสร้างห้องสมุด แต่ใช้ภายในแทนสาธารณะ) คุณมักจะได้รับมันและมีระเบียบวินัยที่ดี ในสถานการณ์เช่นนี้มีวิธีปฏิบัติที่ดีที่สุดในการใช้งานคุณสมบัติเพื่อป้องกันไม่ให้คุณยิงตัวเองด้วยการเดินเท้า นอกจากนี้มันง่ายกว่ามากที่จะให้เหตุผลเกี่ยวกับรหัสหากคุณสามารถดูสถานที่ทั้งหมดที่เขตข้อมูลสามารถเปลี่ยนแปลงในไฟล์เดียวแทนที่จะต้องกังวลว่าจะมีการแก้ไขอะไรหรือไม่ ในความเป็นจริงคุณสมบัติยังดีที่จะนำเบรกพอยต์เมื่อคุณค้นหาสิ่งที่ผิดพลาด
ใช่มีคุณค่าคือการเห็นสิ่งที่กำลังทำอุตสาหกรรม int อย่างไรก็ตามคุณมีแรงจูงใจที่จะต่อต้านแนวปฏิบัติที่ดีที่สุดหรือไม่? หรือคุณแค่ขัดกับแนวปฏิบัติที่ดีที่สุด - ทำให้รหัสยากขึ้นเพื่อให้เหตุผล - เพียงเพราะมีคนอื่นทำหรือไม่ อ่า "คนอื่นทำ" เป็นวิธีที่คุณเริ่มลัทธิขนส่งสินค้า
ดังนั้น ... เกมของคุณทำงานช้าหรือไม่ คุณควรทุ่มเทเวลาในการคิดหาจุดคอขวดและแก้ไขให้ดีกว่าแทนที่จะคิดว่ามันควรเป็นอะไร คุณสามารถมั่นใจได้ว่าคอมไพเลอร์จะทำการปรับให้เหมาะสมอย่างมากเพราะเหตุนี้คุณจึงมองปัญหาที่ผิด
ในทางกลับกันหากคุณตัดสินใจว่าจะเริ่มต้นอย่างไรคุณควรกังวลว่าอัลกอริธึมและโครงสร้างข้อมูลใดเป็นอันดับแรกแทนที่จะต้องกังวลกับรายละเอียดเล็ก ๆ เช่นคุณสมบัติเทียบกับคุณสมบัติ
ในที่สุดคุณจะได้รับบางสิ่งบางอย่างจากการต่อต้านแนวปฏิบัติที่ดีที่สุดหรือไม่?
สำหรับรายละเอียดของกรณีของคุณ (Unity และ Mono สำหรับ Android) Unity รับค่าโดยการอ้างอิงหรือไม่? หากไม่เป็นเช่นนั้นก็จะคัดลอกค่าอยู่ดีไม่มีประสิทธิภาพเพิ่มขึ้น
ถ้าเป็นเช่นนั้นหากคุณส่งข้อมูลนี้ไปยัง API ที่อ้างอิง มันสมเหตุสมผลไหมที่จะทำให้ฟิลด์นั้นเป็นสาธารณะหรือคุณสามารถทำให้ชนิดนั้นสามารถเรียก API ได้โดยตรง?
ใช่แน่นอนอาจมีการเพิ่มประสิทธิภาพที่คุณสามารถทำได้โดยใช้ structs กับฟิลด์เปล่า ตัวอย่างเช่นคุณเข้าถึงด้วยพอย Span<T>
น์เตอร์หรือคล้ายกัน พวกเขายังมีขนาดกะทัดรัดในหน่วยความจำทำให้พวกเขาเป็นเรื่องง่ายที่จะทำให้เป็นอนุกรมเพื่อส่งผ่านเครือข่ายหรือใส่ในที่เก็บถาวร (และใช่เหล่านั้นเป็นสำเนา)
ทีนี้คุณได้เลือกอัลกอริธึมและโครงสร้างที่ถูกต้องแล้วหรือไม่หากพวกเขากลายเป็นคอขวดแล้วคุณตัดสินใจว่าอะไรคือวิธีที่ดีที่สุดในการแก้ไข ... ซึ่งอาจเป็นโครงสร้างที่มีฟิลด์เปล่าหรือไม่ก็ได้ คุณจะสามารถกังวลเกี่ยวกับว่าถ้าและเมื่อมันเกิดขึ้น ในขณะเดียวกันคุณสามารถกังวลเกี่ยวกับเรื่องที่สำคัญมากขึ้นเช่นการสร้างเกมที่ดีหรือน่าเล่น