अच्छा अभ्यास यह है कि जब तक यह संकलित हो जाता है तब तक अपनी हेडर रणनीति के बारे में चिंता न करें।
आपके कोड का हेडर सेक्शन सिर्फ लाइनों का एक ब्लॉक है जिसे तब तक किसी को भी नहीं देखना चाहिए जब तक कि आप आसानी से हल की गई संकलन त्रुटि प्राप्त न करें। मैं 'सही' शैली की इच्छा को समझता हूं, लेकिन न तो वास्तव में सही तरीके से वर्णित किया जा सकता है। हर वर्ग के लिए हेडर शामिल करना कष्टप्रद आदेश-आधारित संकलन त्रुटियों के कारण होने की अधिक संभावना है, लेकिन वे संकलन त्रुटियां उन समस्याओं को भी दर्शाती हैं जो सावधान कोडिंग को ठीक कर सकती हैं (हालांकि यकीनन वे ठीक करने के लिए समय के लायक नहीं हैं)।
और हाँ, आपके पास भूमि में शामिल होने के बाद उन आदेश-आधारित समस्याएं होंगीfriend
।
आप दो मामलों में समस्या के बारे में सोच सकते हैं।
केस 1: आपके पास एक दूसरे के साथ बातचीत करने वाली कक्षाओं की एक छोटी संख्या है, एक दर्जन से भी कम। आप नियमित रूप से इन हेडर को जोड़ते हैं, हटाते हैं, और अन्यथा इन तरीकों को संशोधित करते हैं, जो एक-दूसरे पर उनकी निर्भरता को प्रभावित कर सकते हैं। यह वह मामला है जो आपका कोड उदाहरण बताता है।
हेडर का सेट काफी छोटा है कि यह किसी भी समस्या को हल करने के लिए जटिल नहीं है जो फसल होती है। एक या दो हेडर को फिर से लिखने से कोई भी मुश्किल समस्या तय होती है। आपकी हेडर रणनीति के बारे में चिंता करना उन समस्याओं को हल कर रहा है जो मौजूद नहीं हैं।
केस 2: आपके पास दर्जनों कक्षाएं हैं। कुछ कक्षाएं आपके प्रोग्राम की रीढ़ का प्रतिनिधित्व करती हैं, और उनके हेडर को फिर से लिखना आपको अपने कोड बेस की एक बड़ी मात्रा को फिर से लिखने / फिर से लिखने के लिए मजबूर करेगा। अन्य वर्ग चीजों को पूरा करने के लिए इस रीढ़ का उपयोग करते हैं। यह एक विशिष्ट व्यवसाय सेटिंग का प्रतिनिधित्व करता है। हेडर निर्देशिकाओं में फैले हुए हैं और आप हर चीज के नाम को वास्तविक रूप से याद नहीं रख सकते हैं।
समाधान: इस बिंदु पर, आपको अपनी कक्षाओं को तार्किक समूहों में सोचने और उन समूहों को हेडर में इकट्ठा करने की आवश्यकता है जो आपको #include
अधिक से अधिक होने से रोकते हैं । यह न केवल जीवन को सरल बनाता है, बल्कि पूर्वनिर्धारित हेडर का लाभ उठाने के लिए भी यह एक आवश्यक कदम है ।
आप अंत में उन #include
कक्षाओं को समाप्त करते हैं जिनकी आपको आवश्यकता नहीं है लेकिन कौन परवाह करता है ?
इस स्थिति में, आपका कोड ऐसा दिखेगा ...
#include <Graphics.hpp>
struct Entity {
Texture texture;
RenderObject render();
}