10 основних принципів програмування, які повинен знати кожен програміст
Ваш код має бути зрозумілим і простим у супроводі. Ось кілька інших принципів програмування, які допоможуть вам очистити свою дію.
Написати код легко, але складно написати хороший код. Застосування базових принципів програмування є надійним способом написання високоякісного коду, який є ефективним, читабельним, надійним, безпечним і придатним для обслуговування, незалежно від розміру програмного проекту.
Поганий код буває у багатьох формах: безладний, масивний ланцюжок if-else, ненадійні програми, змінні, які не мають сенсу тощо. Як написати ефективний код? З дисципліною та цілеспрямованістю. Ось основні принципи програмування, які зроблять вас кращим програмістом.
1. Keep It Simple, Stupid (KISS)
Це звучить трохи жорстко, але це один із найважливіших принципів, яких слід дотримуватися під час написання комп’ютерного коду. Що означає KISS?
Це означає, що ви повинні писати код якомога простіший. Одне з правил базового програмування полягає в тому, щоб ніколи не впадати в спроби бути надмірно розумним або похизуватися товстим блоком просунутого коду. Якщо ви можете написати сценарій в один рядок, пишіть його в один рядок.
Досить просто. Його легко читати, і ви точно знаєте, що відбувається.
Одним із принципів програмування в цьому дусі є використання чітких імен змінних. Скористайтеся перевагами бібліотек кодування та використовуйте наявні інструменти. Допоможіть легко повернутися через шість місяців і відразу повернутися до роботи. Дотримання простих речей позбавить вас від багатьох непотрібних страждань.
2. Пишіть DRY Code
Принцип комп’ютерного програмування «Не повторюйся» (Don’t Repeat Yourself, DRY) означає, прямо кажучи, відсутність повторення коду. Це поширена помилка кодування. Під час написання коду уникайте дублювання даних або логіки. Якщо ви коли-небудь копіювали та вставляли код у своїй програмі, це не СУХИЙ код.
Замість того, щоб дублювати рядки, спробуйте знайти алгоритм, який використовує цикл.
Код DRY простий у догляді. Легше налагодити один цикл, який обробляє 50 повторень, ніж 50 блоків коду, які обробляють одне повторення кожен.
3. Відкритий/Закритий
Цей принцип програмування означає, що ви повинні прагнути зробити свій код відкритим для розширення, але закритим для модифікації. Це гарантує, що ви створюєте код, який не потрібно змінювати, навіть якщо вимоги змінюються. Це важливий принцип під час випуску бібліотеки чи фреймворку, який використовуватимуть інші.
Наприклад, припустімо, що ви підтримуєте структуру GUI. Ви можете випустити версію для програмістів, щоб безпосередньо змінити та інтегрувати ваш випущений код. Що станеться, коли ви випустите велике оновлення через чотири місяці?
Їхній код зламається. Це, ймовірно, зробить ваші когорти дуже нещасними. Вони не захочуть довго користуватися вашою бібліотекою, якою б корисною вона не була в період свого розквіту.
Натомість випустіть код, який запобігає прямим змінам і заохочує розширення. Основні принципи програмування, як цей, відокремлюють основну поведінку від модифікованої. Код більш стабільний і його легше підтримувати.
4. Композиція важливіше наслідування
Якщо ви пишете код за допомогою об’єктно-орієнтованого програмування, ви знайдете цей принцип програмування дуже корисним. Принцип композиції над успадкуванням стверджує, що об’єкти зі складною поведінкою повинні містити екземпляри об’єктів з індивідуальною поведінкою. Вони не повинні успадковувати клас і додавати нові моделі поведінки.
Покладання на спадкування викликає дві основні проблеми. По-перше, ієрархія успадкування може поспішно зіпсуватися.
Композиційне програмування легше писати, простіше підтримувати та забезпечує гнучкість поведінки. Кожна окрема поведінка є власним класом. Ви можете створити складну поведінку, поєднуючи індивідуальну поведінку.
5. Єдина відповідність
Принцип єдиної відповідальності стверджує, що кожен клас або модуль у програмі має надавати лише одну конкретну функціональність. Як сказав Роберт С. Мартін, «у класу повинна бути лише одна причина для змін».
Класи та модулі часто починаються таким чином. Будьте обережні, щоб не додати забагато обов’язків, оскільки заняття ускладнюються. Рефакторинг і розбиття їх на менші класи та модулі.
Наслідки перевантаження класів подвійні. По-перше, це ускладнює налагодження, коли ви намагаєтеся виділити певний модуль для усунення несправностей. По-друге, стає складніше створити додатковий функціонал для конкретного модуля. Хороші принципи програмування запобігають цим проблемам до того, як вони стануть проблемами, з якими потрібно боротися.
6. Відокремлення інтересів
Концепція поділу інтересів є абстрактною версією принципу єдиної відповідальності. Ця ідея стверджує, що ви повинні створювати програми з різними частинами, і ці частини не повинні мати доступу одна до одної.
Добре відомим прикладом цього є конструкція моделі-вид-контролера (MVC). MVC розділяє програму на три окремі області: дані (модель), логіка (контролер) і те, що відображається на сторінці (вид). Варіанти MVC поширені в найпопулярніших сьогодні веб-фреймворках.
Наприклад, коду, який обробляє базу даних, не потрібно знати, як відобразити дані в браузері. Код візуалізації приймає дані від користувача, але логічний код виконує обробку. Кожна частина коду є повністю незалежною.
Результатом є код, який легко налагодити. Якщо вам колись знадобиться переписати код візуалізації, ви можете зробити це, не турбуючись про те, як дані зберігаються чи логіка обробляється.
7. Вам це не знадобиться
Цей принцип означає, що ви ніколи не повинні кодувати функціональні можливості на випадок того, що вам щось може знадобитися в майбутньому. Один із найважливіших принципів комп’ютерного програмування, який потрібно вивчити, полягає в тому, що ви не повинні намагатися вирішити проблему, якої не існує.
Прагнучи написати СУХИЙ код, програмісти можуть порушити цей принцип. Часто недосвідчені програмісти намагаються написати максимально абстрактний і загальний код, який вони можуть. Однак занадто багато абстракцій призводить до роздутого коду, який неможливо підтримувати.
Застосовуйте принципи програмування DRY лише тоді, коли це необхідно; якщо ви помітили фрагменти коду, написані знову і знову, запровадьте рівень абстракції. Не думайте занадто далеко наперед за рахунок вашого поточного пакету коду.
8. Задокументуйте свій код
З усіма цими розмовами про принципи кодування може бути легко забути про людину з іншого боку, яка зрештою може сама проникнути у ваш код.
Будь-який старший розробник підкреслить важливість документування вашого коду з відповідними коментарями. Усі мови пропонують їх; ви повинні взяти за звичку писати їх. Залишайте коментарі, щоб пояснити об’єкти, покращити визначення змінних і зробити функції легшими для розуміння.
Залишати коментарі – це трохи більше роботи під час кодування. Це забирає час і відволікає вашу увагу від справжньої роботи. Ви все одно добре розумієте свій код, чи не так? Кому це цікаво? Варто пам’ятати, що немає нічого одноразового, навіть у світі технологій. Що таке принцип комп’ютерного програмування в кінці дня, якщо людина з іншого боку в кінцевому підсумку загубиться?
Ми рекомендуємо докладати додаткових зусиль і залишати коментарі там, де ви боїтеся, що все стане туманним або незрозумілим, особливо коли ви співпрацюєте з іншими. Не засмучуйте своїх колег-розробників, змушуючи їх розшифровувати ваш синтаксис.
Спробуйте написати програму, залишити її в спокої на шість місяців і повернутися, щоб змінити її. Ви будете раді, що задокументували свою програму замість того, щоб переповнювати кожну функцію, щоб згадати, як вона працює.
9. Рефакторинг
Це важко прийняти, але ваш код не буде ідеальним з першого разу. Рефакторинг коду означає перегляд вашого коду та пошук способів його оптимізації, щоб зробити його ефективнішим, зберігаючи результати абсолютно такими ж. Це міркування для написання чистішого та якісного коду.
Кодові бази постійно розвиваються. Одним із принципів програмування є пам’ятати, що цілком нормально переглядати, переписувати чи навіть переробляти цілі фрагменти коду.
Це не означає, що ви не досягли успіху з першого разу, коли написали програму; ви неминуче з часом ближче познайомитеся з проектом. Використовуйте ці знання, щоб налаштувати себе в міру прогресу.
10. Чистий код будь-якою ціною
Крім усіх фундаментальних принципів програмування, залиште своє его і забудьте про написання розумного коду. Коли ми говоримо це, ми маємо на увазі код, який більше схожий на загадку, ніж на рішення. Ви кодуєте не для того, щоб справити враження на незнайомців. Ви в цій професії, щоб вирішувати проблеми.
Не намагайтеся зібрати тонну логіки в один рядок. Залиште чіткі інструкції у своїх коментарях і документації. Якщо ваш код легко читати, його також легко буде підтримувати.
Хороші програмісти та читабельний код йдуть рука об руку. За потреби залишайте коментарі, дотримуйтеся вказівок зі стилю та ставте себе на місце наступного хлопця, коли це можливо.
Вивчіть принципи програмування, щоб стати хорошим програмістом
Щоб навчитися бути хорошим програмістом, потрібно чимало часу та зусиль. Ці правила базового програмування є дороговказом для того, щоб стати професійним програмістом. Дотримуючись цих перевірених часом принципів, ви налаштуєтеся на успіх у своїй майбутній кар’єрі програміста.