Норми кодування (англ. Coding conventions) — це сукупність вказівок, що стосуються певної конкретної мови програмування і встановлюють правила стильового оформлення коду, практики та методи написання програм цією мовою. Ці норми зазвичай охоплюють організацію файлів, відступи, коментарі, , інструкції, пропуски, , та , , найкращі архітектурні практики та ін.. Це поради стосовно структурної якості програмного забезпечення. Розробникам програмного забезпечення наполегливо рекомендується слідувати цим вказівкам, щоб покращити читабельність їхнього коду та полегшити підтримку програмного забезпечення. Норми кодування застосовні лише до людей-підтримувачів та рецензентів програмного забезпечення. Норми можуть бути формалізовані в документованому наборі правил, яких дотримується ціла команда чи компанія, або бути такими ж неформальними, як звичні індивідуальні практики кодування. Норми кодування не нав'язуються компіляторами. А отже, не дотримання деяких, чи навіть всіх правил не впливає на ефективність виконання програмного коду.
Підтримка програмного забезпечення
Зменшення затратності підтримки програмного забезпечення є найбільш поширеною причиною дотримання норм кодування. У своїй передмові до норм програмування мовою Java, Sun Microsystems наводить такі міркування:
Норми кодування важливі для розробників програмного забезпечення з кількох причин:
- 40 %–80 % загальної вартості програмного забезпечення витрачається на його утримання.
- Майже ніколи програмне забезпечення не підтримується до самого кінця своїм початковим автором.
- Норми кодування покращують читабельність програмного забезпечення, дозволяючи розробникам швидше й краще розбиратись в новому коді.
- Подібно до всякого іншого продукту, програмне забезпечення має бути «добре упакованим» і чистим.
Програмна інженерія
Програмна інженерія це процес розробки змісту та дизайну проєкту. Вона є визначальною в питаннях успіху проєктів, зокрема й великих. Процес програмної інженерії — це те, що доводить процес кодування до успішного завершення. Хороша програмна інженерія задає різницю між проєктами успішним — у фінансовому й технічному розумінні — та такими, що, в найгіршому випадку, перебувають у стані «клінічної смерті». Хороша програмна інженерія зведе до мінімуму подальші витрати і підвищить успіх проєкту на ринку.
Документація проєкту
Згідно з нормами кодування, проєкт повинен містити наступні документи:
- Досьє проєкту (англ. The project brief). Процес розробки починається зі створення цього документу. Строго кажучи, це лише короткий опис проєкту, що входить до ланцюга його офіційних документів.
- Опис вимог (англ. The requirements specification). В цьому документі вказується, що саме робить проєкт. Він є найважливішим в ланцюгу документів, усі інші документи тісно пов'язані з ним.
- Дизайн проєкту (англ. The project design). Це офіційний документ з описом дизайну. Він перелічує модулі й компоненти, описує їх інтерфейси та пояснює зв'язки між ними. Програмний інженер, що працює над цим документом виконує такі завдання:
- Вибір найкращого варіанту дизайну з наявних опцій на основі їх аналізу.
- Ананіз всі аспекти, зокрема технічні, комерційні, питання якості, адміністрування й логістики. Це передбачає й час та вартість розробки, утримання, підтримки й використання — як поточні, так і подальші.
- Опис тестів (англ. The test specification). Цей документ описує всі тести, які має пройти проєкт, та результати, яких варто чекати від такого тестування. Дуже часто тестування виконується спеціальними програмними пакетами, а отже ці тести описуються відповідними файлами.
- Результати тестів (англ. The test results).
Опис проєкту від досьє до результатів тестування становить так званий ланцюг документів. Кожен документ пов'язаний з попереднім відношенням «один до одного». Крім того, опис тестів пов'язаний з описом вимог. Ланцюг документів двонапрямний — опис іде вниз, результати повертаються нагору.
Ці методи називаються формальними.
Рефакторинг
Рефакторинг — це процес зміни існуючого коду для його вдосконанлення та відповідності існуючим домовленостям про стиль коду без зміни його поведінки. Рефакторинг існуючого коду є важливою складовою його підтримки та потенційно переслідує такі цілі:
- Вдосконалення дизайну, структури та імплементації програмного забезпечення.
- Збільшення читабельності та спрощення сирцевого коду.
- Сприяння ефективній підтримці програмного забезпечення — пришвидшення додавання нового функціоналу.
- Ефективне використання апаратного забезпечення, збільшення швидкості виконання коду.[]
Практика норм кодування
Існують декілька підходів до покращення читабельності коду, серед них такі:
- Домовленості з найменування змінних, функцій та класів.
- Дотримання правил відступів, пробілів та знаків табуляції.
- Додавання коментарів в код для сприяння розумінню функціоналу.
Домовленості з найменування
Першочергова ціль правил найменування змінних значно спрощує розуміння сирцевого коду та ролі конкретної змінної. Кожна змінна повинна мати чітку та лаконічну назву, що надає семантики кінцевому коду.
Вибране правило найменування змінних має бути дотриманим в усьому коді
Різні мови програмування можуть мати різні норми найменування змінних, що дозволяє розрізняти операнди та ключові слова.
В свою чергу, найменування змінних підрозділяються на такі варіанти:
Зміїний регістр
У формі нотації "зміїний регістр" (англ. Snake case) використовується знак підкреслення для виділення окремих слів в назві змінної:
var_one
var_two
регістр Паскаля
Регістр Паскаля (англ. Pascal case) передбачає виділення окремих слів за рахунок перших букв кожного з них в верхньому регістрі:
VarOne
VarTwo
Верблюжий регістр
Верблюжий регістр (англ. Camel case) повторює Pascalcase - кожне слово виділяєтья першою буквою у верхньому регістрі за винятком першої букви:
varOne
varTwo
Шашличний регістр
Шашличний регістр (англ. kebab case) повторює підхід зміїного регістру з розділенням слів в найменуванні знаками пунктуаціями, для цього використовуються знаки тире (dash, '-'):
var-one
var-two
Угорська нотація
В Hungarian Notation (Угорській нотації) виділяється перше слово найменування, що визначає тип змінної, а решта слів визначає її функцію. Приклад такої нотації в Camel case:
arrExpVarOne // букв. "масив, приклад змінної 1"
intExpVarTwo // букв. "ціле число, приклад змінної 2"
All caps
All caps (All capitals, всі великі) має всі літери в верхньому регістрі та застосовується для позначення констант у коді:
CONST_ONE
CONST_TWO
Примітки
- . Sun Microsystems, Inc. 20 квітня 1999. Архів оригіналу за 24 вересня 2015. Процитовано 12 вересня 2015.
- Robert L. Glass: Facts and Fallacies of Software Engineering; Addison Wesley, 2003.
- Coding best practices — Research Computing University of Colorado Boulder documentation. curc.readthedocs.io. Процитовано 16 лютого 2024.
- Snake Case VS Camel Case VS Pascal Case VS Kebab Case – What's the Difference Between Casings?. freeCodeCamp.org (англ.). 29 листопада 2022. Процитовано 16 лютого 2024.
- Guidelines for naming variables, subroutines, and scripts. www.ibm.com (англ.). 12 січня 2022. Процитовано 16 лютого 2024.
Посилання
Норми кодування для мов
- ActionScript:
- Ada: Ada 95 Quality and Style Guide: Guidelines for Professional Programmers [ 12 грудня 2010 у Wayback Machine.]
- Ada: Guide for the use of the Ada programming language in high integrity systems[недоступне посилання з квітня 2019] (ISO/IEC TR 15942:2000)
- Ada:
- Ada: European Space Agency's Ada Coding Standard[недоступне посилання з квітня 2019] (BSSC(98)3)
- C: Ganssle Group's Firmware Development Standard [ 22 вересня 2015 у Wayback Machine.]
- C: Netrino Embedded C Coding Standard [ 3 липня 2011 у Wayback Machine.]
- C: Install Java On Windows
- C++: Quantum Leaps C/C++ Coding Standard [ 24 вересня 2015 у Wayback Machine.]
- C++: C++ Programming/Programming Languages/C++/Code/Style Conventions
- C++: GeoSoft's C++ Programming Style Guidelines [Архівовано 27 серпня 2011 у WebCite]
- C++:
- C++:
- C#: C# Coding Conventions (C# Programming Guide) [ 17 серпня 2015 у Wayback Machine.]
- C#: Design Guidelines for Developing Class Libraries [ 1 березня 2015 у Wayback Machine.]
- C#: Brad Abrams [ 16 березня 2010 у Wayback Machine.]
- C#: Philips Healthcare [ 5 липня 2008 у Wayback Machine.]
- D: The D Style [ 23 вересня 2015 у Wayback Machine.]
- Dart: The Dart Style Guide [ 3 липня 2015 у Wayback Machine.]
- Erlang: Erlang Programming Rules and Conventions [ 4 вересня 2010 у Wayback Machine.]
- Flex: Code conventions for the Flex SDK [ 8 серпня 2015 у Wayback Machine.]
- Java: Ambysoft's Coding Standards for Java [ 20 серпня 2020 у Wayback Machine.]
- Java: Code Conventions for the Java Programming Language [ 24 вересня 2015 у Wayback Machine.]
- Java: GeoSoft's Java Programming Style Guidelines [ 15 вересня 2015 у Wayback Machine.]
- Java: Java Coding Standards, каталог посилань Open Directory Project
- Java: SoftwareMonkey's Coding Standards for Java and other C-like languages[недоступне посилання з липня 2019]
- JavaScript: Code Conventions for the JavaScript Programming Language [ 5 березня 2012 у Wayback Machine.]
- Lisp: Riastradh's Lisp Style Rules [ 2 жовтня 2015 у Wayback Machine.]
- MATLAB: Neurobat Coding Conventions for MATLAB [ 14 жовтня 2014 у Wayback Machine.]
- Mono: Programming style for Mono [ 23 вересня 2015 у Wayback Machine.]
- Object Pascal: Object Pascal Style Guide [ 9 липня 2015 у Wayback Machine.]
- Perl: Perl Style Guide [ 26 червня 2013 у Wayback Machine.]
- PHP::PEAR: PHP::PEAR Coding Standards [ 10 березня 2017 у Wayback Machine.]
- PHP::FIG: PHP Framework Interop Group [ 17 вересня 2015 у Wayback Machine.]
- Python: Style Guide for Python Code [ 17 травня 2008 у Wayback Machine.]
- Ruby: The Unofficial Ruby Usage Guide [ 7 вересня 2015 у Wayback Machine.]
- Ruby: GitHub Ruby style guide [ 13 вересня 2015 у Wayback Machine.]
Норми кодування для проєктів
- Apache Developers' C Language Style Guide [ 8 вересня 2015 у Wayback Machine.]
- Drupal PHP Coding Standards [ 16 вересня 2015 у Wayback Machine.]
- Zend Framework Coding Standards [ 5 вересня 2015 у Wayback Machine.]
- Style guides for Google-originated open-source projects [ 10 травня 2015 у Wayback Machine.]
- (or Documentation/CodingStyle in the Linux Kernel source tree)
- Mozilla Coding Style Guide [ 2 грудня 2019 у Wayback Machine.]
- Road Intranet's C++ Guidelines [ 24 вересня 2015 у Wayback Machine.]
- The NetBSD source code style guide [ 20 червня 2021 у Wayback Machine.] (formerly known as the BSD Kernel Normal Form)
- . GCC online documentation. Free Software Foundation. Архів оригіналу за 4 березня 2016. Процитовано 19 січня 2009. (PDF [ 5 вересня 2015 у Wayback Machine.])
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Normi koduvannya angl Coding conventions ce sukupnist vkazivok sho stosuyutsya pevnoyi konkretnoyi movi programuvannya i vstanovlyuyut pravila stilovogo oformlennya kodu praktiki ta metodi napisannya program ciyeyu movoyu Ci normi zazvichaj ohoplyuyut organizaciyu fajliv vidstupi komentari instrukciyi propuski ta empirichni pravila programuvannya najkrashi arhitekturni praktiki ta in Ce poradi stosovno strukturnoyi yakosti programnogo zabezpechennya Rozrobnikam programnogo zabezpechennya napoleglivo rekomenduyetsya sliduvati cim vkazivkam shob pokrashiti chitabelnist yihnogo kodu ta polegshiti pidtrimku programnogo zabezpechennya Normi koduvannya zastosovni lishe do lyudej pidtrimuvachiv ta recenzentiv programnogo zabezpechennya Normi mozhut buti formalizovani v dokumentovanomu nabori pravil yakih dotrimuyetsya cila komanda chi kompaniya abo buti takimi zh neformalnimi yak zvichni individualni praktiki koduvannya Normi koduvannya ne nav yazuyutsya kompilyatorami A otzhe ne dotrimannya deyakih chi navit vsih pravil ne vplivaye na efektivnist vikonannya programnogo kodu Pidtrimka programnogo zabezpechennyaZmenshennya zatratnosti pidtrimki programnogo zabezpechennya ye najbilsh poshirenoyu prichinoyu dotrimannya norm koduvannya U svoyij peredmovi do norm programuvannya movoyu Java Sun Microsystems navodit taki mirkuvannya Normi koduvannya vazhlivi dlya rozrobnikiv programnogo zabezpechennya z kilkoh prichin 40 80 zagalnoyi vartosti programnogo zabezpechennya vitrachayetsya na jogo utrimannya Majzhe nikoli programne zabezpechennya ne pidtrimuyetsya do samogo kincya svoyim pochatkovim avtorom Normi koduvannya pokrashuyut chitabelnist programnogo zabezpechennya dozvolyayuchi rozrobnikam shvidshe j krashe rozbiratis v novomu kodi Podibno do vsyakogo inshogo produktu programne zabezpechennya maye buti dobre upakovanim i chistim Programna inzheneriya Programna inzheneriya ce proces rozrobki zmistu ta dizajnu proyektu Vona ye viznachalnoyu v pitannyah uspihu proyektiv zokrema j velikih Proces programnoyi inzheneriyi ce te sho dovodit proces koduvannya do uspishnogo zavershennya Horosha programna inzheneriya zadaye riznicyu mizh proyektami uspishnim u finansovomu j tehnichnomu rozuminni ta takimi sho v najgirshomu vipadku perebuvayut u stani klinichnoyi smerti Horosha programna inzheneriya zvede do minimumu podalshi vitrati i pidvishit uspih proyektu na rinku Dokumentaciya proyektu Zgidno z normami koduvannya proyekt povinen mistiti nastupni dokumenti Dosye proyektu angl The project brief Proces rozrobki pochinayetsya zi stvorennya cogo dokumentu Strogo kazhuchi ce lishe korotkij opis proyektu sho vhodit do lancyuga jogo oficijnih dokumentiv Opis vimog angl The requirements specification V comu dokumenti vkazuyetsya sho same robit proyekt Vin ye najvazhlivishim v lancyugu dokumentiv usi inshi dokumenti tisno pov yazani z nim Dizajn proyektu angl The project design Ce oficijnij dokument z opisom dizajnu Vin perelichuye moduli j komponenti opisuye yih interfejsi ta poyasnyuye zv yazki mizh nimi Programnij inzhener sho pracyuye nad cim dokumentom vikonuye taki zavdannya Vibir najkrashogo variantu dizajnu z nayavnih opcij na osnovi yih analizu Ananiz vsi aspekti zokrema tehnichni komercijni pitannya yakosti administruvannya j logistiki Ce peredbachaye j chas ta vartist rozrobki utrimannya pidtrimki j vikoristannya yak potochni tak i podalshi Opis testiv angl The test specification Cej dokument opisuye vsi testi yaki maye projti proyekt ta rezultati yakih varto chekati vid takogo testuvannya Duzhe chasto testuvannya vikonuyetsya specialnimi programnimi paketami a otzhe ci testi opisuyutsya vidpovidnimi fajlami Rezultati testiv angl The test results Opis proyektu vid dosye do rezultativ testuvannya stanovit tak zvanij lancyug dokumentiv Kozhen dokument pov yazanij z poperednim vidnoshennyam odin do odnogo Krim togo opis testiv pov yazanij z opisom vimog Lancyug dokumentiv dvonapryamnij opis ide vniz rezultati povertayutsya nagoru Ci metodi nazivayutsya formalnimi Refaktoring Refaktoring ce proces zmini isnuyuchogo kodu dlya jogo vdoskonanlennya ta vidpovidnosti isnuyuchim domovlenostyam pro stil kodu bez zmini jogo povedinki Refaktoring isnuyuchogo kodu ye vazhlivoyu skladovoyu jogo pidtrimki ta potencijno peresliduye taki cili Vdoskonalennya dizajnu strukturi ta implementaciyi programnogo zabezpechennya Zbilshennya chitabelnosti ta sproshennya sircevogo kodu Spriyannya efektivnij pidtrimci programnogo zabezpechennya prishvidshennya dodavannya novogo funkcionalu Efektivne vikoristannya aparatnogo zabezpechennya zbilshennya shvidkosti vikonannya kodu dzherelo Praktika norm koduvannyaIsnuyut dekilka pidhodiv do pokrashennya chitabelnosti kodu sered nih taki Domovlenosti z najmenuvannya zminnih funkcij ta klasiv Dotrimannya pravil vidstupiv probiliv ta znakiv tabulyaciyi Dodavannya komentariv v kod dlya spriyannya rozuminnyu funkcionalu Domovlenosti z najmenuvannya Pershochergova cil pravil najmenuvannya zminnih znachno sproshuye rozuminnya sircevogo kodu ta roli konkretnoyi zminnoyi Kozhna zminna povinna mati chitku ta lakonichnu nazvu sho nadaye semantiki kincevomu kodu Vibrane pravilo najmenuvannya zminnih maye buti dotrimanim v usomu kodi Rizni movi programuvannya mozhut mati rizni normi najmenuvannya zminnih sho dozvolyaye rozriznyati operandi ta klyuchovi slova V svoyu chergu najmenuvannya zminnih pidrozdilyayutsya na taki varianti Zmiyinij registr Dokladnishe Zmiyinij registr U formi notaciyi zmiyinij registr angl Snake case vikoristovuyetsya znak pidkreslennya dlya vidilennya okremih sliv v nazvi zminnoyi var one var two registr Paskalya Registr Paskalya angl Pascal case peredbachaye vidilennya okremih sliv za rahunok pershih bukv kozhnogo z nih v verhnomu registri VarOne VarTwo Verblyuzhij registr Dokladnishe Verblyudyachij registr Verblyuzhij registr angl Camel case povtoryuye Pascalcase kozhne slovo vidilyayetya pershoyu bukvoyu u verhnomu registri za vinyatkom pershoyi bukvi varOne varTwo Shashlichnij registr Dokladnishe Shashlichnij registr Shashlichnij registr angl kebab case povtoryuye pidhid zmiyinogo registru z rozdilennyam sliv v najmenuvanni znakami punktuaciyami dlya cogo vikoristovuyutsya znaki tire dash var one var two Ugorska notaciya Dokladnishe Ugorska notaciya V Hungarian Notation Ugorskij notaciyi vidilyayetsya pershe slovo najmenuvannya sho viznachaye tip zminnoyi a reshta sliv viznachaye yiyi funkciyu Priklad takoyi notaciyi v Camel case arrExpVarOne bukv masiv priklad zminnoyi 1 intExpVarTwo bukv cile chislo priklad zminnoyi 2 All caps All caps All capitals vsi veliki maye vsi literi v verhnomu registri ta zastosovuyetsya dlya poznachennya konstant u kodi CONST ONE CONST TWOPrimitki Sun Microsystems Inc 20 kvitnya 1999 Arhiv originalu za 24 veresnya 2015 Procitovano 12 veresnya 2015 Robert L Glass Facts and Fallacies of Software Engineering Addison Wesley 2003 Coding best practices Research Computing University of Colorado Boulder documentation curc readthedocs io Procitovano 16 lyutogo 2024 Snake Case VS Camel Case VS Pascal Case VS Kebab Case What s the Difference Between Casings freeCodeCamp org angl 29 listopada 2022 Procitovano 16 lyutogo 2024 Guidelines for naming variables subroutines and scripts www ibm com angl 12 sichnya 2022 Procitovano 16 lyutogo 2024 PosilannyaNormi koduvannya dlya mov ActionScript Ada Ada 95 Quality and Style Guide Guidelines for Professional Programmers 12 grudnya 2010 u Wayback Machine Ada Guide for the use of the Ada programming language in high integrity systems nedostupne posilannya z kvitnya 2019 ISO IEC TR 15942 2000 Ada Ada European Space Agency s Ada Coding Standard nedostupne posilannya z kvitnya 2019 BSSC 98 3 C Ganssle Group s Firmware Development Standard 22 veresnya 2015 u Wayback Machine C Netrino Embedded C Coding Standard 3 lipnya 2011 u Wayback Machine C Install Java On Windows C Quantum Leaps C C Coding Standard 24 veresnya 2015 u Wayback Machine C C Programming Programming Languages C Code Style Conventions C GeoSoft s C Programming Style Guidelines Arhivovano 27 serpnya 2011 u WebCite C C C C Coding Conventions C Programming Guide 17 serpnya 2015 u Wayback Machine C Design Guidelines for Developing Class Libraries 1 bereznya 2015 u Wayback Machine C Brad Abrams 16 bereznya 2010 u Wayback Machine C Philips Healthcare 5 lipnya 2008 u Wayback Machine D The D Style 23 veresnya 2015 u Wayback Machine Dart The Dart Style Guide 3 lipnya 2015 u Wayback Machine Erlang Erlang Programming Rules and Conventions 4 veresnya 2010 u Wayback Machine Flex Code conventions for the Flex SDK 8 serpnya 2015 u Wayback Machine Java Ambysoft s Coding Standards for Java 20 serpnya 2020 u Wayback Machine Java Code Conventions for the Java Programming Language 24 veresnya 2015 u Wayback Machine Java GeoSoft s Java Programming Style Guidelines 15 veresnya 2015 u Wayback Machine Java Java Coding Standards katalog posilan Open Directory Project Java SoftwareMonkey s Coding Standards for Java and other C like languages nedostupne posilannya z lipnya 2019 JavaScript Code Conventions for the JavaScript Programming Language 5 bereznya 2012 u Wayback Machine Lisp Riastradh s Lisp Style Rules 2 zhovtnya 2015 u Wayback Machine MATLAB Neurobat Coding Conventions for MATLAB 14 zhovtnya 2014 u Wayback Machine Mono Programming style for Mono 23 veresnya 2015 u Wayback Machine Object Pascal Object Pascal Style Guide 9 lipnya 2015 u Wayback Machine Perl Perl Style Guide 26 chervnya 2013 u Wayback Machine PHP PEAR PHP PEAR Coding Standards 10 bereznya 2017 u Wayback Machine PHP FIG PHP Framework Interop Group 17 veresnya 2015 u Wayback Machine Python Style Guide for Python Code 17 travnya 2008 u Wayback Machine Ruby The Unofficial Ruby Usage Guide 7 veresnya 2015 u Wayback Machine Ruby GitHub Ruby style guide 13 veresnya 2015 u Wayback Machine Normi koduvannya dlya proyektiv Apache Developers C Language Style Guide 8 veresnya 2015 u Wayback Machine Drupal PHP Coding Standards 16 veresnya 2015 u Wayback Machine Zend Framework Coding Standards 5 veresnya 2015 u Wayback Machine Style guides for Google originated open source projects 10 travnya 2015 u Wayback Machine or Documentation CodingStyle in the Linux Kernel source tree Mozilla Coding Style Guide 2 grudnya 2019 u Wayback Machine Road Intranet s C Guidelines 24 veresnya 2015 u Wayback Machine The NetBSD source code style guide 20 chervnya 2021 u Wayback Machine formerly known as the BSD Kernel Normal Form GCC online documentation Free Software Foundation Arhiv originalu za 4 bereznya 2016 Procitovano 19 sichnya 2009 PDF 5 veresnya 2015 u Wayback Machine Cya stattya ye zagotovkoyu Vi mozhete dopomogti proyektu dorobivshi yiyi Ce povidomlennya varto zaminiti tochnishim