GNU kodlash standartlari - GNU coding standards

The GNU kodlash standartlari yozish uchun qoidalar va ko'rsatmalar to'plamidir dasturlar ichida doimiy ravishda ishlaydigan GNU tizim. GNU kodlash standartlari tomonidan yozilgan Richard Stallman va boshqa GNU loyihasining ko'ngillilari. Standartlar hujjati GNU loyihasi va GNU veb-saytida mavjud. Garchi u yozishga qaratilgan bo'lsa-da bepul dasturiy ta'minot GNU uchun C, uning ko'p qismi umuman umuman qo'llanilishi mumkin. Xususan, GNU loyihasi o'z ishtirokchilarini har doim standartlarga rioya qilishga harakat qiladi - ularning dasturlari C da bajariladimi yoki yo'qmi.

Kodni formatlash

GNU kodlash standartlari qanday qilib formatlashni aniq belgilaydi C dasturlash tili konstruktsiyalar. Mana xarakterli misol:

intasosiy (int arg, char *argv[]){  tuzilmaviy gizmo foo;  fetch_gizmo (&foo, argv[1]); tekshirish:  agar (foo.turi == MOOMIN)    qo'yadi (- Bu moomin.);  boshqa agar (foo.bar < GIZMO_SNUFKIN_THRESHOLD / 2           || (strcmp (foo.sinf nomi, "snufkin") == 0)               && foo.bar < GIZMO_SNUFKIN_THRESHOLD)    qo'yadi (- Bu snufkin.);  boshqa    {      char *barney;  / * Keyin birinchi belgiga ishora                        fayl nomidagi so'nggi chiziq. * /      int wilma;     / * Koinotning taxminiy kattaligi. * /      int fred;      / * "Satr" maydonining maksimal qiymati. * /      qil        {          frobnikat (&foo, GIZMO_SNUFKIN_THRESHOLD,                      &barney, &wilma, &fred);          twiddle (&foo, barney, wilma + fred);        }      esa (foo.bar >= GIZMO_SNUFKIN_THRESHOLD);      do'kon hajmi (wilma);      bordi tekshirish;    }  qaytish 0;}

Bloklarni bayonot sifatida izchil davolash (indentatsiya maqsadida) GNU C kodini formatlash uslubining juda o'ziga xos xususiyati; Qavslar oldidagi majburiy bo'sh joy kabi. GNU uslubida formatlangan barcha kodlar har bir yopuvchi qavs, qavs yoki qavs paydo bo'lish xususiyatiga ega O'ngga uning ochilish chegarasini yoki xuddi shu ustunda.

Umumiy printsip sifatida GNU Emacs ko'rib chiqilishi mumkin[kim tomonidan? ] GNU kodini formatlash uslubi bo'yicha ishonchli vakolat. Shunday qilib, bu maqsadga muvofiqdir[kimga ko'ra? ] Emacs tomonidan chizilganida chirkin ko'rinadigan har qanday kod qismi Emacs uchun qulayroq shaklga o'zgartirilganligi, masalan, qo'shimcha qavslarni kiritish orqali.

Uzoq chiziqlarni ajratish

"Ifodani bir nechta qatorga ajratganda, uni bitta emas, balki operator oldida bo'ling."[1]

Masalan:

agar (uzun_bu && bar > g'alaba qozonish (x, y, z)    && qolgan_shart)

Izohlar

Standartlar juda muhimligini ta'kidlaydi Ingliz tili Izohlar:

Iltimos, sharhlarni GNU dasturida ingliz tilida yozing, chunki ingliz tili barcha mamlakatlardagi deyarli barcha dasturchilar o'qishi mumkin bo'lgan tildir. Agar siz ingliz tilini yaxshi yozmasangiz, iltimos, iloji boricha ingliz tilida sharhlar yozing, so'ngra boshqa odamlardan ularni qayta yozishda yordam berishlarini so'rang. Agar siz ingliz tilida sharhlar yozolmasangiz, iltimos, siz bilan ishlaydigan odam toping va sharhlaringizni ingliz tiliga tarjima qiling.

Izohlar to'liq, katta harflar bilan yozilgan jumlalardan iborat bo'lishi kerak, ularning har biri ikkita bo'shliqdan iborat bo'lishi kerak (shunda Emacs bitta jumla qaerda tugashi va keyingisi qaerda boshlanishini aytib berishi mumkin).

Uzoq yoki murakkab preprocessor shartli uchun har biri #else va #endif quyidagi kodning shartini tushuntirib beradigan izohga ega bo'lishi kerak (uchun #else) yoki yuqorida (uchun #endif).

Fayllar

Standartlar barcha dasturlarning qachon ishlashi mumkinligini talab qiladi / usr va /va boshqalar bor o'rnatilgan faqat o'qish. Shuning uchun ichki maqsadlar uchun o'zgartirilgan fayllar (jurnal fayllari, blokirovka fayllari, vaqtinchalik fayllar va boshqalar) ikkalasida ham saqlanmasligi kerak / usr yoki /va boshqalar. Tizimning konfiguratsiya fayllarini yangilash vazifasi bo'lgan dasturlar uchun istisno mavjud /va boshqalar. Boshqa bir istisno, foydalanuvchi xuddi shu katalogdagi faylni o'zgartirishni aniq so'raganda, fayllarni katalogda saqlash uchun amalga oshiriladi.

Portativlik

GNU kodlash standartlari portativlikni quyidagi tarzda belgilaydi: Unix dunyo "Unixlar orasidagi" degan ma'noni anglatadi; GNU dasturida bunday ko'chirish maqsadga muvofiqdir, ammo hayotiy ahamiyatga ega emas.

Standartga ko'ra, portativlik muammolari juda cheklangan, chunki GNU dasturlari bitta kompilyator bilan tuzilishga mo'ljallangan GNU C kompilyatori va faqat bitta tizimda ishlaydi, ya'ni GNU tizimi.

Taşınabilirlik muammosining bir shakli mavjud, va bu standart dasturning boshqacha ishlashi kerakligini aniq ko'rsatib beradi Markaziy protsessor turlari. Standartda GNU 16 bitli tizimlarni qo'llab-quvvatlamaydi va qo'llab-quvvatlamaydi, ammo har xil 32 va 64 bitli tizimlar bilan ishlash juda zarur.

Tanqid

GNU kodlash standartlari asosan GNU loyihalari tomonidan qo'llaniladi, ammo ulardan foydalanish faqat GNU loyihalari bilan chegaralanmaydi.

The Linux yadrosi yadro kodi uchun ushbu uslubdan qat'iyan voz kechadi va uslubni pejorativ tarzda nazarda tutadi: "Birinchidan, men GNU kodlash standartlarining nusxasini chop etishni taklif qilaman va o'qimAYMAN. Ularni yoqing, bu ajoyib ramziy ishora."[2]. Stiv Makkonnell, uning kitobida Kod tugallandi, shuningdek, ushbu uslubni ishlatmaslikka maslahat beradi; u "xavfli dahshatli kod" belgisi bilan foydalanadigan kod namunasini belgilaydi va bu juda xavfli kodni anglatadi va u o'qishga xalaqit beradi.[3]

Shuningdek qarang

Adabiyotlar

  1. ^ "GNU kodlash standartlari". www.gnu.org. Olingan 2020-11-29.
  2. ^ "Linux yadrosini kodlash uslubi - Linux yadrosi hujjatlari". www.kernel.org. Olingan 2017-10-12.
  3. ^ Makkonnell, Stiv (2004). To'liq kod: dasturiy ta'minotni yaratish bo'yicha amaliy qo'llanma. Redmond, WA: Microsoft Press. pp.746–747. ISBN  0-7356-1967-0.

Tashqi havolalar