मैं टाइपस्क्रिप्ट में एक गेम लिख रहा हूं, और यह तय किया है कि मैं " इंटरफ़ेस आधारित प्रोग्रामिंग " के विचार का पालन करने की कोशिश करने जा रहा हूं , जहां आप एक वस्तु के कार्यान्वयन के बजाय एक इंटरफ़ेस के आधार पर कोड लिखते हैं।
मैंने इंटरफेस की एक अच्छी संख्या लिखी, और कक्षाएं जो उन्हें लागू करती हैं, फिर एक कदम पीछे ले गए और महसूस किया कि कक्षाएं सरल थीं कि मुझे संभवतः कार्यान्वयन को बदलने की आवश्यकता नहीं होगी, क्योंकि वास्तव में केवल एक ही तरीका है कि क्या करना है वर्ग करता है ( Phaser.Sprite
टैंक की तरह कार्य करने के लिए एक प्रतिबंधित तरीके से आगे बढ़ना )।
फिर मुझे याद है कि कुछ साल पहले YAGNI के विचार के बारे में पढ़ना , जो कि मूल रूप से है कि आपको उन चीजों को शामिल करने के लिए अपने कोड को ओवर-इंजीनियर नहीं करना चाहिए जिन्हें आप कभी उपयोग नहीं कर सकते हैं।
सर्वोत्तम प्रथाओं का पालन करते हुए, क्या प्रत्येक वर्ग को एक इंटरफ़ेस लागू करना चाहिए, या क्या आपको इसे उन कक्षाओं तक सीमित करना चाहिए, जिनकी आपको भविष्य में संभावित रूप से अदला-बदली होने की उम्मीद है?