GNU coding standards
জি. এন. ইউ কোডিং মান হল প্রোগ্রাম লেখার জন্য নিয়ম এবং নির্দেশিকাগুলির একটি সেট যা জি. এন. ইউ সিস্টেমের মধ্যে ধারাবাহিকভাবে কাজ করে। জি. এন. ইউ কোডিং স্ট্যান্ডার্ডগুলি রিচার্ড স্টলম্যান এবং অন্যান্য জি. এন. ইউ প্রকল্পের স্বেচ্ছাসেবীরা লিখেছিলেন। স্ট্যান্ডার্ড ডকুমেন্টটি জিএনইউ প্রকল্পের অংশ এবং জিএনইউ ওয়েবসাইট থেকে পাওয়া যায়। যদিও এটি সি-তে জি. এন. ইউ-এর জন্য বিনামূল্যে সফ্টওয়্যার লেখার উপর দৃষ্টি নিবদ্ধ করে, তবে এর বেশিরভাগই আরও সাধারণভাবে প্রয়োগ করা যেতে পারে। বিশেষত, জি. এন. ইউ প্রকল্প তার অবদানকারীদের সর্বদা মানগুলি অনুসরণ করার চেষ্টা করতে উৎসাহিত করে-তাদের প্রোগ্রামগুলি সি. কোড বিন্যাসে প্রয়োগ করা হোক বা না হোক জি. এন. ইউ কোডিং মানগুলি বেশিরভাগ সি প্রোগ্রামিং ভাষার গঠনগুলি ঠিক কীভাবে বিন্যাস করতে হয় তা নির্দিষ্ট করে। এখানে একটি চরিত্রগত উদাহরণ রয়েছেঃ ইন্ট মেইন (ইন্ট আরগসি, চার * আরগভি []) {স্ট্রাক গিজমো ফু; ফেচ _ গিজমো (& ফু, আরগভি [1]); চেক করুনঃ যদি (foo.type = = এমওএমআইএন) রাখে ("এটি একটি মুমিন। "); অন্যথায় যদি (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 & & বার> উইন (x, y, z) এবং বাকি শর্ত) মন্তব্য মানগুলি ইংরেজি ভাষার মন্তব্যের গুরুত্বের উপর ব্যাপকভাবে জোর দেয়ঃ দয়া করে ইংরেজিতে একটি জি. এন. ইউ প্রোগ্রামে মন্তব্য লিখুন, কারণ ইংরেজি হল এমন একটি ভাষা যা সমস্ত দেশের প্রায় সমস্ত প্রোগ্রামার পড়তে পারেন। আপনি যদি ভাল ইংরেজি না লেখেন, তবে দয়া করে যতটা সম্ভব ইংরেজিতে মন্তব্য লিখুন, তারপরে অন্য লোকেদের তাদের পুনর্লিখন করতে সাহায্য করতে বলুন। আপনি যদি ইংরেজিতে মন্তব্য লিখতে না পারেন, তাহলে দয়া করে আপনার সাথে কাজ করার জন্য কাউকে খুঁজে বের করুন এবং আপনার মন্তব্যগুলি ইংরেজিতে অনুবাদ করুন। মন্তব্যগুলি সম্পূর্ণ, বড় হাতের বাক্য নিয়ে গঠিত হওয়া উচিত, যার প্রত্যেকটির পরে দুটি ফাঁক থাকবে (যাতে ইম্যাকস বলতে পারে যে একটি বাক্য কোথায় শেষ হয় এবং পরেরটি কোথায় শুরু হয়)। দীর্ঘ বা জটিল প্রিপ্রোসেসর শর্তাবলীর জন্য, প্রতিটি #else এবং #endif-এর নীচের কোডের (#else-এর জন্য) বা তার উপরে (#endif-এর জন্য) শর্ত ব্যাখ্যা করে একটি মন্তব্য থাকা উচিত। ফাইল মানগুলির জন্য প্রয়োজন যে সমস্ত প্রোগ্রামগুলি যখন/usr এবং/ইত্যাদি কেবল পঠনযোগ্যভাবে মাউন্ট করা থাকে তখন কাজ করতে সক্ষম হয়। অতএব, অভ্যন্তরীণ উদ্দেশ্যে পরিবর্তিত ফাইলগুলি (লগ ফাইল, লক ফাইল, অস্থায়ী ফাইল ইত্যাদি) / ইউএসআর বা/ইত্যাদিতে সংরক্ষণ করা উচিত নয়। একটি ব্যতিক্রম করা হয়েছে সেইসব প্রোগ্রামের জন্য যাদের কাজ হল/ইত্যাদিতে সিস্টেম কনফিগারেশন ফাইলগুলি আপডেট করা। একটি ডিরেক্টরিতে ফাইল সংরক্ষণের জন্য আরেকটি ব্যতিক্রম করা হয় যখন ব্যবহারকারী স্পষ্টভাবে একই ডিরেক্টরিতে একটি ফাইল সংশোধন করতে বলে। জি. এন. ইউ কোডিং স্ট্যান্ডার্ডগুলি বহনযোগ্যতার বিষয়টিকে এইভাবে সংজ্ঞায়িত করেঃ ইউনিক্স বিশ্বে বহনযোগ্যতা মানে 'ইউনিক্সের মধ্যে'; একটি জি. এন. ইউ প্রোগ্রামে এই ধরনের বহনযোগ্যতা কাম্য, তবে অত্যন্ত গুরুত্বপূর্ণ নয়। মান অনুযায়ী, বহনযোগ্যতার সমস্যাগুলি খুব সীমিত কারণ জি. এন. ইউ প্রোগ্রামগুলি একটি কম্পাইলার, জি. এন. ইউ সি কম্পাইলারের সাথে সংকলিত করার জন্য ডিজাইন করা হয়েছে এবং শুধুমাত্র একটি সিস্টেমে চলে, যা জি. এন. ইউ সিস্টেম। যদিও বহনযোগ্যতা সমস্যার একটি রূপ রয়েছে এবং এটি হল যে মানটি এটি স্পষ্ট করে দেয় যে একটি প্রোগ্রাম বিভিন্ন সিপিইউ প্রকারের উপর চালানো উচিত। মানটি বলে যে জিএনইউ 16-বিট সিস্টেম সমর্থন করে না এবং করবে না, তবে সমস্ত বিভিন্ন 32-এবং 64-বিট সিস্টেম পরিচালনা করা একেবারে প্রয়োজনীয়। সমালোচনা জি. এন. ইউ কোডিং মানগুলি প্রাথমিকভাবে জি. এন. ইউ প্রকল্পগুলির দ্বারা ব্যবহৃত হয়, যদিও এর ব্যবহার শুধুমাত্র জি. এন. ইউ প্রকল্পগুলির মধ্যে সীমাবদ্ধ নয়। লিনাক্স কার্নেল কার্নেল কোডের জন্য এই শৈলীকে দৃঢ়ভাবে নিরুৎসাহিত করে এবং শৈলীটিকে অপমানজনকভাবে উল্লেখ করেঃ "প্রথমত, আমি জিএনইউ কোডিং মানগুলির একটি অনুলিপি মুদ্রণ করার পরামর্শ দেব, এবং এটি না পড়ার পরামর্শ দেব। এগুলি পুড়িয়ে ফেলুন, এটি একটি দুর্দান্ত প্রতীকী অঙ্গভঙ্গি "। স্টিভ ম্যাককনেল তাঁর বই কোড কমপ্লিট-এ এই শৈলী ব্যবহার না করার পরামর্শও দিয়েছেন; তিনি একটি কোড নমুনা চিহ্নিত করেছেন যা এটিকে একটি "কোডিং হরর" আইকন দিয়ে ব্যবহার করে, বিশেষত বিপজ্জনক কোডের প্রতীক, এবং বলেছেন যে এটি ধনুর্বন্ধনীগুলির জন্য অতিরিক্ত স্তরের ইন্ডেন্টেশনের প্রয়োজন দ্বারা পাঠযোগ্যতাকে বাধা দেয়। আরও দেখুন জিনিটস স্ট্যান্ডার্ড রেফারেন্স এক্সটার্নাল লিঙ্ক জিএনইউ ওয়েবসাইটে জিএনইউ কোডিং স্ট্যান্ডার্ডস জিএনইউ কোডিং স্ট্যান্ডার্ডের জন্য ইক্লিপস কোড স্টাইল ফরম্যাটার ফ্রি সফ্টওয়্যার কালচার এবং ডকুমেন্টস কোডিং স্ট্যান্ডার্ডস সোর্স কোড নিবন্ধ উদাহরণস্বরূপ সি কোড সহ