Як виміряти складність коду програми при програмуванні?

Привіт! Продовжуємо освоювати принципи створення якісного ПЗ! І сьогодні ми поговоримо про те, як можна виміряти складність вихідного коду програми, який Ви написали, а також про те, навіщо взагалі потрібно вимірювати складність коду.

Раніше в матеріалі «Етапи розробки програми – як створюються і проектуються програми?»Ми розглянули загальні етапи створення якісних і великих програм. Зараз ми поговоримо, насправді, про одне з найголовніших аспектів створення якісного ПЗ, а саме про управління складністю внутрішньої реалізації програми, а точніше про складність коду, тобто наскільки складний код Ви пишіть.

Навіщо вимірювати складність коду програми?

Як я вже зазначив, управління складністю – це важлива частина створення якісної програми, даний процес полягає в зниженні складності внутрішньої реалізації програми, включаючи зменшення складності коду. Якщо Ви будете зменшувати складність коду програми, Вам буде легше супроводжувати цей код, і тим самим в ньому буде менше помилок, що як раз і сприяє підвищенню якості розроблюваної програми.

Зниження складності коду – це дії, спрямовані на зведення до мінімуму обсягу складного коду, з яким Вам необхідно працювати в кожен конкретний момент часу. З практичного боку це виглядає, як, наприклад, розбиття великих процедур або методів, в яких багато коду, на більш дрібні. Іншими словами, ті ділянки коду, які можна винести в окремі функції, процедури або методи, необхідно замінювати на виклик відповідних функцій, процедур і методів, які були створені спеціально для виконання цієї ділянки коду. Крім того, існують і інші прийоми зменшення складності коду.

Звідси і виникає це очевидне запитання – як виміряти складність коду, який ми написали в процесі програмування, щоб дізнатися, складний він чи ні?

Способи вимірювання складності вихідного коду програми

Одним з основних і, головне, простих способів оцінки складності коду є спосіб, який полягає в простому підрахунку в коді конкретних методів і процедур, так званих «Точок прийняття рішення».

Суть в наступному, Ви вважаєте, скільки в окремо взятому методі або процедурі «Точок прийняття рішення», І якщо підсумкове кількість перевищує рамки допустимого рівня, то код підлягає переконструювання.

До «Точкам прийняття рішення» належать такі оператори:

  • if
  • while
  • repeat
  • for
  • and
  • or
  • Кожен варіант CASE в SWITCH або в SELECT CASE.

Так ось, орієнтуйтеся на наступні діапазони значень кількості точок прийняття рішення:

  • До 5 – все добре;
  • Від 5 до 10 – можна почати думати про способи спрощення коду;
  • Більше 10 – необхідно винести частину коду в окремі функції, процедури і методи.

Звідси випливає, що якщо Ваш метод або процедура містить, наприклад:

  • 10 – if;
  • 5 – while;
  • 3 – and;
  • 2 – or.

Разом 10 + 5 + 3 + 2 = 20, значить, цей метод або процедуру необхідно переробити, створити для певних ділянок коду окремі функції, процедури і методи, а в поточному коді просто викликати їх.

Тим самим, Ви зменшуєте складність коду, з яким Ви маєте справу в кожен момент часу.

Однак допускається і більше 10 точок прийняття рішення в окремому методі або процедурі, тобто це не суворе обмеження, так як дійсно бувають випадки, коли скоротити кількість точок прийняття рішення неможливо (але це виняткові випадки), Тому їх може бути і більше, але число 10 має стати для Вас попереджає повідомленням про те, що код потрібно переглянути.

Ще одним прийомом зменшення складності коду є використання допустимої глибини укладення таких конструкцій як: if або while. Адже багатьом програмістам досить важко зрозуміти умовні конструкції та цикли, які містять більше 3-4 рівнів вкладеності, тобто, наприклад, всередині if є ще один if, а всередині цього ще один, і так далі.

Таким чином, щоб виміряти складність коду, можна також підрахувати і кількість рівнів вкладеності if і while, і, якщо умовні конструкції або цикли містять більше 3 рівнів вкладеності, значить, ці конструкції складні, і їх необхідно переконструювати.

Якщо Вас цікавлять питання управління складністю, правильного конструювання ПО з використанням об’єктно-орієнтованої мови програмування (C ++, Java, Visual Basic), То я Вам рекомендую почитати книгу Стіва Макконела «Досконалий код», але відразу скажу, що вона для програмістів, які вже мають базові знання програмування, іншими словами, вона не для новачків, і вона не вчить Вас тій чи іншій мові.

Також користуючись нагодою, хочу порекомендувати свою книгу «Як стати програмістом? 14 порад по досягненню поставленої мети », вона для тих, хто тільки збирається стати програмістом, але не знає з чого почати, в ній розглянуто конкретний план дій, який допоможе Вам стати програмістом.

Ссылка на основную публикацию