ตัวอย่างเช่นสมมติว่าคุณกำลังเขียนแอปในJava
ของแอปสื่อสารกับเซิร์ฟเวอร์ API เขียนในหลาม
เซิร์ฟเวอร์ Python สื่อสารกับฐานข้อมูลSQL
นอกจากนี้คุณยังมีเว็บไซต์ของแอปเขียนในJavaScript
ด้วย 4 ภาษาที่แตกต่างกันมันง่ายที่จะจบลงด้วยการทำซ้ำโครงสร้างข้อมูลเดิม 4 ครั้ง
ตัวอย่างเช่นUser
ประเภทอาจมีลักษณะเช่นนี้ (pseudocode):
type User {
integer id;
string name;
timestamp birthday;
}
User
ส่วนหนึ่งของโครงการทุกคนจะต้องชนิดของการแสดงบางอย่างสำหรับ ส่วนของ Java และ Python ต้องการclass
การประกาศสองแบบที่ต่างกัน ฐานข้อมูลจะต้องมีUser
การประกาศตาราง และเว็บไซต์ส่วนหน้าจะต้องเป็นตัวแทนUser
ด้วย
การทำซ้ำประเภทนี้ 4 ครั้งแตกต่างกันจริงๆแบ่งห้ามทำซ้ำ-Yourselfหลักการ นอกจากนี้ยังมีปัญหาที่หากUser
มีการเปลี่ยนแปลงประเภทการเปลี่ยนแปลงเหล่านี้จำเป็นต้องทำซ้ำในทุกส่วนของโครงการ
ฉันรู้ว่าห้องสมุดprotobufของ Google นำเสนอวิธีการแก้ปัญหาที่คุณเขียนโครงสร้างข้อมูลโดยใช้ไวยากรณ์พิเศษจากนั้นห้องสมุดจะสร้างการประกาศโครงสร้างสำหรับคุณในภาษาการเขียนโปรแกรมหลายภาษา แต่สิ่งนี้ยังไม่ได้จัดการกับปัญหาของการต้องตรวจสอบตรรกะการตรวจสอบซ้ำสำหรับประเภทของคุณ
ไม่มีใครมีคำแนะนำหรือลิงค์ไปยังหนังสือ / บล็อกโพสต์เกี่ยวกับเรื่องนี้หรือไม่?
Repeating this type 4 different times really breaks the Don't-Repeat-Yourself principle
. ไม่มันไม่ได้ คุณมี 4 ระบบที่ต่างกันซึ่งทำสิ่งที่แตกต่างกัน คุณใช้ DRY นานเกินไป จากประสบการณ์ของฉันการเรียงลำดับของความสามารถในการนำกลับมาใช้ใหม่ที่คุณต้องการทำคือเมล็ดพันธุ์แห่งความชั่วร้ายเพราะการมีเพศสัมพันธ์อย่างแน่นหนา นั่นยิ่งแย่ไปกว่าการทำซ้ำUser
4 ครั้งใน 4 ภาษาที่แตกต่างกัน ในสภาพแวดล้อมแบบกระจายการมีเพศสัมพันธ์เป็นปัญหา ไม่ใช่ DRY