ยังมีคนในโลกที่ไม่ใช้ generics jave ใน "รหัสธรรมดา" ฉันเชื่อด้วยเทมเพลต C ++ แต่เป็นชื่อสามัญ? พวกเขาไม่ได้เรียนรู้ / ใช้งานได้ยาก คุณลักษณะที่ดีที่สุดของ Java และ C ++ อย่างจริงจังคือลำดับทั่วไปและแม่แบบ
วิธีที่ดีที่สุดในการโน้มน้าวใจผู้คนในเรื่องต่าง ๆ คือการโต้แย้งที่น่าสนใจไม่ขู่เข็ญและถูกต้อง
ตราบใดที่คุณไม่ได้ทำอะไรบางอย่างเหมือนกับการใช้เทมเพลตเป็นภาษาการเขียนโปรแกรมของคุณพาราเมตริกแบบ polymorphism (generics / template) ก็ค่อนข้างดี
1. หลีกเลี่ยงการทำสำเนารหัส
นี่คือชัดเจน แต่รหัส polymorphic เป็นรหัสทั่วไป นั่นคือเหตุผลที่เรียกว่ายาชื่อสามัญ
2. รองรับการตรวจสอบแบบคงที่ดีขึ้น
คุณจะต้องเขียนสิ่งต่าง ๆ เช่นpublic Object clone()
หรือpublic boolean equals(object b)
ซึ่งไม่ได้เป็นแค่สิ่งที่น่ารังเกียจพวกเขามีประเภทที่ไม่ให้ข้อมูลเกี่ยวกับสิ่งที่พวกเขาทำ ทางเลือกสำหรับพาราเมทริกโพลิมอร์ฟิซึมนั้นมีอยู่ทั่วทุกที่
3. รหัส OOP แบบหลายพารามิเตอร์ที่ไม่ใช่พารามิเตอร์นั้นไม่สามารถจัดการกับ "วิธีการแบบไบนารี" ได้ในวิธีที่ถูกต้อง
คุณใช้สิ่งเหล่านี้บ่อยครั้ง
4. เป็นการปฏิบัติที่ดีที่สุด
ใน Java การใช้ generics ถือเป็นแนวปฏิบัติที่ดีที่สุด (ดู Java ที่มีประสิทธิภาพโดย Josh Bloch) นักคิดหลัก C ++ เช่น Sutter และ Alexandrescu ยังสนับสนุนให้ใช้เทมเพลตเพื่อแก้ไขปัญหาที่หลากหลาย
5. มันเหมาะกับกระบวนทัศน์ OO
ผู้คนมักจะไม่สังเกตเห็นสิ่งนี้ แต่การรวมกันของการพิมพ์ย่อยและข้อมูลทั่วไปทำให้เกิดระบบที่มีประสิทธิภาพมากขึ้นในการแสดงออกและวัตถุที่มุ่งเน้นกว่าระบบใด ๆ ที่มีเพียงหนึ่งของพวกเขา
พิจารณามิกซ์อินของสกาล่า นี่เป็นคุณสมบัติที่ดีที่ช่วยให้คุณดึงวัตถุของคุณเข้าด้วยกันจากชิ้นส่วนต่างๆ Generics และแม่แบบสามารถจำลองประโยชน์เหล่านี้บางอย่าง ตัวอย่างเช่นสมมติว่าหนึ่งในวัตถุของคุณใช้ฐานข้อมูล การออกแบบที่ดีจะช่วยให้คุณสรุปการเข้าถึงฐานข้อมูลในคลาสอื่น หากทำถูกต้องสิ่งนี้ไม่เพียง แต่จะช่วยให้คุณจำลองคลังข้อมูลของคุณ (กุญแจสู่การทดสอบได้) ก็หมายความว่าคุณสามารถเพิ่มการใช้งานทางเลือกเช่นฐานข้อมูล no-sql ใหม่ อย่างไรก็ตามที่นี่คุณอาจมีปัญหาไม่ว่าการใช้งานแบบใดที่คุณจะได้รับคือความสามารถที่แตกต่างกันของวัตถุธุรกิจของคุณ
ยาสามัญเพื่อช่วยชีวิต!
public class Business<S extends Datastore>{
private S store; ...
}
ตอนนี้คุณสามารถเริ่มสร้างความแตกต่างแบบคงที่Business
วัตถุของคุณตามความสามารถในการใช้คุณสมบัติเฉพาะของฐานข้อมูล คุณยังต้องมีการตรวจสอบและการตรวจสอบรันไทม์ แต่คุณสามารถเริ่มสร้างโค้ดที่ดีขึ้นได้
และ
6. ไม่มีรหัสปกติ
มีเพียงสามสิ่งในเอกภพการเขียนโปรแกรม:
- ห้องสมุด
- การกำหนดค่าและ
- รหัสไม่ดี
หากคุณไม่คิดว่ารหัสของคุณเป็นห้องสมุดคุณกำลังมีปัญหาร้ายแรงเมื่อข้อกำหนดสำหรับโครงการของคุณเปลี่ยนไป สถาปัตยกรรมคือศิลปะในการออกแบบ API ที่ดี
ฉันพบว่าทัศนคตินี้น่าทึ่ง หลังจากที่คุณคุ้นเคยกับการเขียนโปรแกรมประเภท parametrized แล้วการไม่ใช้มันก็ทำให้ทุกอย่างเจ็บปวด และ Java และ C ++ มีจุดหยาบ ๆ ซึ่งช่วยแก้ไขได้