Норми кодування (англ. Coding conventions) — це сукупність вказівок, що стосуються певної конкретної мови програмування і встановлюють правила стильового оформлення коду, практики та методи написання програм цією мовою. Ці норми зазвичай охоплюють організацію файлів, відступи, коментарі, оголошення, інструкції, пропуски, норми найменування, практики та принципи програмування, емпіричні правила програмування, найкращі архітектурні практики та ін. Це поради стосовно структурної якості програмного забезпечення. Розробникам програмного забезпечення наполегливо рекомендується слідувати цим вказівкам, щоб покращити читабельність їхнього коду та полегшити підтримку програмного забезпечення. Норми кодування застосовні лише до людей-підтримувачів та рецензентів програмного забезпечення. Норми можуть бути формалізовані в документованому наборі правил, яких дотримується ціла команда чи компанія, або бути такими ж неформальними, як звичні індивідуальні практики кодування. Норми кодування не нав'язуються компіляторами. А отже, не дотримання деяких, чи навіть всіх правил не впливає на ефективність виконання програмного коду.
Підтримка програмного забезпечення ред.
Зменшення затратності підтримки програмного забезпечення є найбільш поширеною причиною дотримання норм кодування. У своїй передмові до норм програмування мовою Java, Sun Microsystems наводить такі міркування:
Норми кодування важливі для розробників програмного забезпечення з кількох причин:
- 40 %–80 % загальної вартості програмного забезпечення витрачається на його утримання.
- Майже ніколи програмне забезпечення не підтримується до самого кінця своїм початковим автором.
- Норми кодування покращують читабельність програмного забезпечення, дозволяючи розробникам швидше й краще розбиратись в новому коді.
- Подібно до всякого іншого продукту, програмне забезпечення має бути «добре упакованим» і чистим.
Програмна інженерія ред.
Програмна інженерія це процес розробки змісту та дизайну проєкту. Вона є визначальною в питаннях успіху проєктів, зокрема й великих. Процес програмної інженерії — це те, що доводить процес кодування до успішного завершення. Хороша програмна інженерія задає різницю між проєктами успішним — у фінансовому й технічному розумінні — та такими, що, в найгіршому випадку, перебувають у стані «клінічної смерті». Хороша програмна інженерія зведе до мінімуму подальші витрати і підвищить успіх проєкту на ринку.
Документація проєкту ред.
Згідно з нормами кодування, проєкт повинен містити наступні документи:
- Досьє проєкту (англ. The project brief). Процес розробки починається зі створення цього документу. Строго кажучи, це лише короткий опис проєкту, що входить до ланцюга його офіційних документів.
- Опис вимог (англ. The requirements specification). В цьому документі вказується, що саме робить проєкт. Він є найважливішим в ланцюгу документів, усі інші документи тісно пов'язані з ним.
- Дизайн проєкту (англ. The project design). Це офіційний документ з описом дизайну. Він перелічує модулі й компоненти, описує їх інтерфейси та пояснює зв'язки між ними. Програмний інженер, що працює над цим документом, переглядає різні варіанти дизайну й обирає з них найкращий. Він (вона) враховує всі аспекти, зокрема технічні, комерційні, питання якості, адміністрування й логістики. Це передбачає й час та вартість розробки, утримання, підтримки й використання — як поточні, так і подальші. Насправді ця робота не обмежується архітектурним дизайном, вона передбачає багато інших важливих нюансів.
- Опис тестів (англ. The test specification). Цей документ описує всі тести, які має пройти проєкт, та результати, яких варто чекати від такого тестування. Дуже часто тестування виконується спеціальними програмними пакетами, а отже ці тести описуються відповідними файлами.
- Результати тестів (англ. The test results).
Опис проєкту від досьє до результатів тестування становить так званий ланцюг документів. Кожен документ пов'язаний з попереднім відношенням «один до одного». Крім того, опис тестів пов'язаний з описом вимог. Ланцюг документів двонапрямний — опис іде вниз, результати повертаються нагору.
Ці методи називаються формальними.
Примітки ред.
- . Sun Microsystems, Inc. 20 квітня 1999. Архів оригіналу за 24 вересня 2015. Процитовано 12 вересня 2015.
- Robert L. Glass: Facts and Fallacies of Software Engineering; Addison Wesley, 2003.
Посилання ред.
Норми кодування для мов ред.
- 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++: High Integrity 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.]
- GNU Coding Standards
- 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.])