GNU coding standards
جی این یو کوڈنگ کے معیارات ایسے پروگرام لکھنے کے لیے اصولوں اور رہنما اصولوں کا ایک مجموعہ ہیں جو جی این یو سسٹم کے اندر مستقل طور پر کام کرتے ہیں۔ جی این یو کوڈنگ کے معیارات رچرڈ اسٹالمین اور جی این یو پروجیکٹ کے دیگر رضاکاروں نے لکھے تھے۔ معیارات کی دستاویز جی این یو پروجیکٹ کا حصہ ہے اور جی این یو ویب سائٹ سے دستیاب ہے۔ اگرچہ یہ سی میں جی این یو کے لیے مفت سافٹ ویئر لکھنے پر مرکوز ہے، لیکن اس کا زیادہ تر اطلاق عام طور پر کیا جا سکتا ہے۔ خاص طور پر، جی این یو پروجیکٹ اپنے شراکت داروں کی حوصلہ افزائی کرتا ہے کہ وہ ہمیشہ معیارات پر عمل کرنے کی کوشش کریں-چاہے ان کے پروگرام سی کوڈ فارمیٹنگ میں نافذ ہوں یا نہ ہوں۔ جی این یو کوڈنگ اسٹینڈرڈز بالکل واضح کرتے ہیں کہ زیادہ تر سی پروگرامنگ زبان کی تعمیرات کو کس طرح فارمیٹ کیا جائے۔ یہاں ایک خاص مثال ہے: انٹی مین (انٹی آرگسی، چار * آرگوی []) {اسٹرکٹ گیزمو فو ؛ fetch _ gizmo (& foo, argv [1]) ؛ چیک کریں: اگر (foo.type = = MOOMIN) ڈالتا ہے ("یہ ایک مومین ہے۔ ") ؛ ورنہ اگر (foo.bar <GIZMO _ SNUFKIN _ ThRESHOLD/2 | | (اسٹریکمپ (foo.class_name،" سنوفکن ") = = 0) & & foo.bar <GIZMO _ SNUFKIN _ ThRESHOLD) ڈالتا ہے (" یہ ایک سنوفکن ہے۔ ") ؛ بصورت دیگر {چار * بارنی ؛/* فائل کے نام میں آخری سلیش کے بعد پہلے کردار کی طرف اشارہ کریں۔ */انٹ ولما ؛/* کائنات کا لگ بھگ سائز۔ */int fred ؛/* 'بار' فیلڈ کی زیادہ سے زیادہ قیمت۔ */(foo.bar = GIZMO _ SNUFKIN _ TRESHOLD) ؛ اسٹور _ سائز (ولما) ؛ گوٹو چیک ؛) ریٹرن 0 ؛} بلاکس کو بیانات کے طور پر مستقل سلوک (انڈینٹیشن کے مقصد کے لیے) گنو سی کوڈ فارمیٹنگ سٹائل کی ایک بہت ہی مخصوص خصوصیت ہے ؛ جیسا کہ قوسین سے پہلے لازمی جگہ ہے۔ جی این یو سٹائل میں فارمیٹ کیے گئے تمام کوڈ میں یہ خاصیت ہوتی ہے کہ ہر اختتامی کڑا، بریکٹ یا قوسین اس کے متعلقہ افتتاحی حد بندی کے دائیں طرف، یا اسی کالم میں ظاہر ہوتا ہے۔ ایک عام اصول کے طور پر، جی این یو ایمیکس کو جی این یو کوڈ فارمیٹنگ سٹائل پر ایک قابل اعتماد اتھارٹی سمجھا جا سکتا ہے۔ اس طرح، یہ مطلوب ہے کہ کوڈ کا کوئی بھی ٹکڑا جو ایمیکس کے ذریعہ انڈینٹ ہونے پر بدصورت نظر آتا ہے اسے زیادہ ایمیکس دوستانہ شکل میں تبدیل کر دیا جائے-مثال کے طور پر، اضافی قوسین ڈال کر۔ لمبی لائنوں کو تقسیم کرنا "جب آپ کسی اظہار کو متعدد لائنوں میں تقسیم کرتے ہیں، تو اسے آپریٹر کے سامنے تقسیم کریں، نہ کہ ایک کے بعد"۔ مثال کے طور پر: اگر (foo _ this _ is _ long & & b) تبصرے معیارات انگریزی زبان کے تبصروں کی اہمیت پر بہت زور دیتے ہیں: براہ کرم انگریزی میں جی این یو پروگرام میں تبصرے لکھیں، کیونکہ انگریزی ایک ایسی زبان ہے جسے تمام ممالک کے تقریبا تمام پروگرامر پڑھ سکتے ہیں۔ اگر آپ انگریزی اچھی طرح سے نہیں لکھتے ہیں، تو براہ کرم جتنا ہو سکے انگریزی میں تبصرے لکھیں، پھر دوسرے لوگوں سے کہیں کہ وہ انہیں دوبارہ لکھنے میں مدد کریں۔ اگر آپ انگریزی میں تبصرے نہیں لکھ سکتے ہیں، تو براہ کرم اپنے ساتھ کام کرنے کے لیے کسی کو تلاش کریں اور اپنے تبصرے کا انگریزی میں ترجمہ کریں۔ تبصرے مکمل، بڑے حروف والے جملوں پر مشتمل ہونے چاہئیں، جن میں سے ہر ایک کے بعد دو خالی جگہیں ہوں (تاکہ ایمیکس بتا سکے کہ ایک جملہ کہاں ختم ہوتا ہے اور اگلا کہاں شروع ہوتا ہے)۔ طویل یا پیچیدہ پری پروسیسر شرائط کے لیے، ہر #else اور #endif کے پاس ایک تبصرہ ہونا چاہیے جس میں نیچے (#else کے لیے) یا اس سے اوپر (#endif کے لیے) کوڈ کی شرط کی وضاحت کی گئی ہو۔ فائلیں معیارات کے لیے ضروری ہے کہ تمام پروگرام اس وقت کام کر سکیں جب/usr اور/وغیرہ صرف پڑھنے کے لیے نصب ہوں۔ لہذا، وہ فائلیں جن میں اندرونی مقاصد کے لیے ترمیم کی گئی ہے (لاگ فائلیں، لاک فائلیں، عارضی فائلیں وغیرہ)۔ اسے/یو ایس آر یا/وغیرہ میں محفوظ نہیں کیا جانا چاہیے۔ ان پروگراموں کے لیے ایک رعایت دی گئی ہے جن کا کام سسٹم کنفیگریشن فائلوں کو/وغیرہ میں اپ ڈیٹ کرنا ہے۔ ڈائرکٹری میں فائلوں کو ذخیرہ کرنے کے لیے ایک اور رعایت اس وقت دی جاتی ہے جب صارف نے واضح طور پر اسی ڈائرکٹری میں کسی فائل میں ترمیم کرنے کو کہا ہو۔ پورٹیبلٹی جی این یو کوڈنگ اسٹینڈرڈز پورٹیبلٹی کے مسئلے کو اس طرح بیان کرتے ہیں: یونکس کی دنیا میں پورٹیبلٹی کا مطلب ہے 'یونکسس کے درمیان' ؛ جی این یو پروگرام میں اس قسم کی پورٹیبلٹی مطلوب ہے، لیکن انتہائی اہم نہیں ہے۔ معیار کے مطابق، پورٹیبلٹی کے مسائل بہت محدود ہیں کیونکہ جی این یو پروگراموں کو ایک مرتب، جی این یو سی مرتب کے ساتھ مرتب کرنے کے لیے ڈیزائن کیا گیا ہے، اور صرف ایک سسٹم پر چلتے ہیں، جو کہ جی این یو سسٹم ہے۔ تاہم پورٹیبلٹی کے مسئلے کی ایک شکل ہے، اور یہ حقیقت ہے کہ معیار یہ واضح کرتا ہے کہ ایک پروگرام کو مختلف سی پی یو اقسام پر چلنا چاہیے۔ معیار کا کہنا ہے کہ جی این یو 16 بٹ سسٹمز کو سپورٹ نہیں کرتا اور نہ ہی کرے گا، لیکن تمام مختلف 32 اور 64 بٹ سسٹمز کو ہینڈل کرنا بالکل ضروری ہے۔ تنقید جی این یو کوڈنگ کے معیارات بنیادی طور پر جی این یو پروجیکٹس استعمال کرتے ہیں، حالانکہ اس کا استعمال صرف جی این یو پروجیکٹس تک محدود نہیں ہے۔ لینکس دانا دانا کوڈ کے لیے اس انداز کی سختی سے حوصلہ شکنی کرتا ہے، اور اس انداز کو توہین آمیز انداز میں حوالہ دیتا ہے: "سب سے پہلے، میں تجویز کروں گا کہ جی این یو کوڈنگ معیارات کی ایک کاپی پرنٹ کریں، اور اسے نہ پڑھیں۔ انہیں جلا دیں، یہ ایک عظیم علامتی اشارہ ہے۔ " اسٹیو میک کونل، اپنی کتاب کوڈ کمپلیٹ میں، اس انداز کو استعمال کرنے کے خلاف بھی مشورہ دیتے ہیں۔ وہ ایک کوڈ کے نمونے کو نشان زد کرتے ہیں جو اسے "کوڈنگ ہارر" آئیکن کے ساتھ استعمال کرتا ہے، جو خاص طور پر خطرناک کوڈ کی علامت ہے، اور کہتا ہے کہ یہ بریس کے لیے اضافی سطح کے انڈینٹیشن کی ضرورت کے ذریعے پڑھنے کی اہلیت کو روکتا ہے۔ یہ بھی دیکھیں جینیٹس کے معیارات حوالہ جات بیرونی لنکس جی این یو ویب سائٹ پر جی این یو کوڈنگ معیارات جی این یو کوڈنگ معیارات کے لیے ایکلپس کوڈ اسٹائل فارمیٹر مفت سافٹ ویئر کلچر اور دستاویزات کوڈنگ معیارات ماخذ کوڈ مضامین مثال کے طور پر سی کوڈ کے ساتھ