यह नहीं कहना कि Google स्टाइल गाइड पवित्र बाइबल है लेकिन एक नौसिखिया प्रोग्रामर के रूप में, यह एक अच्छा संदर्भ की तरह लगता है।Google स्टाइल गाइड आगे की घोषणा को हतोत्साहित क्यों करता है?
गूगल स्टाइल गाइड आगे घोषणा के निम्नलिखित नुकसान को सूचीबद्ध
आगे घोषणाओं निर्भरता को छुपा सकते हैं, आवश्यक रखता छोड़ जब हेडर बदलने के उपयोगकर्ता कोड की इजाजत दी।
लाइब्रेरी में आने वाले परिवर्तनों से आगे की घोषणा को तोड़ दिया जा सकता है। फ़ंक्शंस और टेम्पलेट्स की अग्रेषित घोषणाएं हेडर मालिकों को उनके एपीआई में अन्यथा-संगत परिवर्तन करने से रोक सकती हैं, जैसे कि पैरामीटर प्रकार को चौड़ा करना, डिफ़ॉल्ट मान के साथ टेम्पलेट पैरामीटर जोड़ना, या किसी नए नामस्थान में माइग्रेट करना।
नामस्थान std :: प्रतीकों को घोषित करने के लिए अग्रेषित अपरिभाषित व्यवहार पैदा करता है।
यह निर्धारित करना मुश्किल हो सकता है कि आगे की घोषणा या पूर्ण # समावेशन की आवश्यकता है या नहीं। एक आगे घोषणा के साथ एक # शामिल की जगह चुपचाप कोड के अर्थ बदल सकते हैं:
कोड:
// b.h:
struct B {};
struct D : B {};
// good_user.cc:
#include "b.h"
void f(B*);
void f(void*);
void test(D* x) { f(x); } // calls f(B*)
# शामिल आगे से बदला गया तो बी और डी, परीक्षण के लिए decls() होगा कॉल एफ (शून्य *)।
आगे बढ़ने के लिए हेडर से एकाधिक प्रतीकों की घोषणा करना शीर्षलेख को शामिल करने से अधिक वर्बोज़ हो सकता है।
आगे की घोषणाओं को सक्षम करने के लिए संरचना कोड (उदाहरण के लिए ऑब्जेक्ट सदस्यों के बजाय पॉइंटर सदस्यों का उपयोग करके) कोड को धीमा और अधिक जटिल बना सकता है।
हालांकि, एसओ पर कुछ खोज यह सुझाव देती थी कि आगे की घोषणा सार्वभौमिक रूप से एक बेहतर समाधान है।
तो इन प्रतीत होता है कि गैर-मामूली नुकसान, क्या कोई इस विसंगति को समझा सकता है?
और इनमें से कुछ या सभी नुकसानों को अनदेखा करना कब सुरक्षित है?
कॉर्पोरेट शैली गाइड मन में कम से कम कुशल कॉर्पोरेट कोड बंदर के साथ लिखा जाता है। उन्हें पढ़ते समय ध्यान में रखें। बिंदु 4 में दिया गया उदाहरण थोड़ा सा बिंदु खींच रहा है। प्रकार 'शून्य *' के तर्क के साथ एक समारोह एक टूटा हुआ कार्य है। –
"हालांकि, एसओ पर कुछ खोज यह सुझाव देती थी कि आगे की घोषणा सार्वभौमिक रूप से एक बेहतर समाधान है।" [उद्धरण वांछित] – Mat
Google शैली मार्गदर्शिका Google के लिए बनाई गई है। जब तक कि आप Google या तुलनीय कंपनी न हों, नियम आपके लिए लागू नहीं हो सकते हैं। आपको यह ध्यान रखना होगा कि Google को सी ++ कोड की ~ 10 मिलियन लाइनों को बनाए रखने की आवश्यकता है, इसलिए "अपवादों का उपयोग न करें" जैसे कुछ नियम रखरखाव के लिए हैं क्योंकि अपवाद सुरक्षित होने के लिए कोड की 10 मिलियन लाइनों को फिर से लिखना संभव नहीं है। अगर वे खरोंच से शुरू करना चाहते थे तो वे अलग-अलग विकल्प बनायेंगे। – nwp