Англійський словник для обговорення архітектури коду

Вивчіть основний англійський словниковий запас для обговорення архітектури, перегляду коду і перегляду дизайну у професійних командах розробників програмного забезпечення.

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

Ключовий словник

Спільнота і єдність Два фундаментальних поняття завжди обговорюються разом. Сполучення описує, наскільки залежні два модулі один від одного — високе сполучення погане. Сплоченість описує, наскільки модуль зосереджений на одній меті — висока сплоченість є хорошою. Метою є «низьке з’єднання, висока когерентність»

  • Приклад: « Проблема полягає у високому рівні зв’ язку між службою замовлень і службою запасів. Зміна одного завжди руйнує іншого.»*

** Розділення питань (SoC) ** Принцип, що різні частини системи повинні виконувати різні функції і не перетинатися. Часто використовується для аргументації проти змішування бізнес- логіки з доступом до даних або кодом інтерфейсу користувача. Приклад: “Ми порушили розділення завдань, розміщуючи запити бази даних безпосередньо в контролері.”

Принцип єдиної відповідальності (ПЄО) Кожен модуль, клас або функція повинні мати лише одну причину для зміни. Частина принципів SOLID, часто цитується у переглядах коду.

  • Приклад: « Цей клас виконує перевірку, збереження і повідомлення електронною поштою — він має три обов’ язки. Ми повинні розділити його.»*

** Інверсія залежності ** Модулі високого рівня не повинні залежати від модулів низького рівня; обидва повинні залежати від абстракцій. Вмикає гнучкість і можливість перевірки за допомогою відокремлення деталей реалізації. Приклад: «Замість залежності безпосередньо від клієнта MySQL, ми повинні залежати від інтерфейсу сховища — це інверсія залежності.»

** Обмежений контекст ** Термін з Domain- Driven Design (DDD). Границя, у межах якої застосовується певна модель і термінологія. Два обмежені контексти можуть використовувати одне і те ж слово (наприклад, «замовник»), щоб означати різні речі.

  • Приклад: « У контексті обмежених рахунків, « клієнт » означає рахунок з історією платежу. У контексті CRM це означає запис контакту. Нам потрібно бути чіткими про те, в якому контексті ми знаходимося»

** Шлях захисту від пошкодження (ACL) ** Шлях перекладу, який розташовується між двома системами (або обмеженим контекстом), щоб запобігти витоку моделі однієї системи до іншої. Поширене при інтеграції зі застарілими системами.

  • Приклад: “Ми побудували антикорупційний шар між нашим новим сервісом замовлень і застарілим ERP-системою, тому нам не потрібно віддзеркалити її незграбну модель даних.” *

Дастулить фіговий малюнок Стратегія міграції, за якої навколо існуючої системи буде створено нову функціональність, поступово замінюючи її, доки стару систему не буде вилучено — подібно до інжирного дерева, яке росте навколо свого господаря і зрештою замінює його.

  • Приклад: “Ми використовуємо шаблон удушення для поступової заміни монолита без ризикованого переписування великого вибуху.” *

** Функція фізичної підготовки архітектури ** Автоматизований тест або метрика, що перевіряє чи система все ще відповідає її архітектурним цілям. Подумайте про це як про тестування одиниці для прийняття рішень щодо архітектури.

  • Приклад: « У нас є функція фітнесу, яка не збирається, якщо будь- який модуль у шарі домену імпортується з шару інфраструктури. » *

Шви Місце у коді, де можна змінити поведінку без зміни існуючого коду — зазвичай, це інтерфейс, точка абстракції або межа додатка.

  • Приклад: « Нам потрібно ввести шви, щоб ми могли ввести тестовий дублікат без зміни виробничого коду. » *

Фрази і фразеологізми

“Це порушує [принцип]” Стандартна фраза перегляду коду для позначення проблем архітектури. Приклад: «Це порушує принцип єдиної відповідальності — служба обробляє як бізнес-логіку, так і форматування відповідей HTTP.»

“Ми повинні ввести абстракцію тут” Пропонує додати інтерфейс або абстрактний шар, щоб зменшити сполучення.

  • Приклад: « Ми повинні ввести абстракцію тут — таким чином ми можемо обміняти сервер зберігання без зміни бізнес-логіки. »*

“Який радіус вибуху, якщо це зміниться?” За допомогою цього параметра можна оцінити, наскільки широко зміна буде розповсюджено у системі — це проксі для з’ єднання.

  • Приклад: « Який радіус вибуху, якщо ми змінимо схему користувача? Скільки послуг нам потрібно буде оновити?»*

** « Це витікає [деталь] у [шар] » ** Використовується для позначення випадків, коли проблема з одного шару неправильно видно на іншому. Приклад: «Це витікає назви стовпців бази даних у відповідь API — це проблема розділення питань.»

** “Ми перетинаємо обмежені межі контексту” ** Прапорець, що два домени неправильно з’ єднано.

  • Приклад: « Якщо ми викликаємо службу розрахунків безпосередньо зі служби доставки, ми перетинаємо межі обмежених контекстів. Ми повинні використовувати подію замість цього.”*

Практичні рекомендації

  1. «Сполучення між цими двома модулями занадто тісне — зміна схеми в одній службі змушує розгорнути в трьох інших»
  2. «Ми повинні визначити обмежений контекст для домену повідомлень і надати йому власну модель, а не повторно використовувати суть користувача з auth.»
  3. «Я б запропонував ввести антикорупційний шар для перекладу моделі даних API в наше внутрішнє представлення»
  4. «Ця функція фітнесу буде автоматично ловити будь-які майбутні порушення шарової архітектури»
  5. «Підхід «душитель фіг» дозволяє нам мігрувати поступово, а не зобов’язуватися до повного переписування»

Необхідно уникати помилок

Плутаєте “зв’язок” і “залежність” Всі сполучення включають залежності, але не всі залежності є проблематичними сполученнями. Ключовим є те, чи залежність є на стабільній абстракції (добре) або конкретній реалізації (ризичне).

  • Замість: « Ці класи пов’ язані, оскільки один імпортує інший. » *
  • Скажіть: « Ці класи тісно пов’ язані, оскільки виклик залежить від внутрішніх деталей реалізації виклику. » *

Використання “розділення питань” і “єдиної відповідальності” взаємно замінюються Вони пов’язані, але різні. SoC стосується розділення різних типів питань (наприклад, UI проти бізнес-логіки). SRP стосується модуля, який має лише одну причину для зміни. Ти можеш задовольнити одне без іншого.

**Сказати “чиста архітектура” без пояснення, що не так ** “Чиста архітектура” - це нечіткий комплімент або скарга. Будь конкретним в оглядах. Замість: “Це не чиста архітектура.”

  • Скажіть: « Шлях домену імпортується з ланки інфраструктури, що змінює напрямок залежностей, який ми погодилися. » *

Summary

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

Наприклад, слово «навигація» означає «пошук і пояснення»

Однією з найбільших перешкод для носіїв англійської мови в технічному середовищі є не тільки розуміння окремих слів, але й розуміння тонких нюансів значення - особливо, коли йдеться про вираженні невизначеності або пошуку пояснень. Це набагато більш прийнятно, і часто бажано, ніж просто висловлювати думку без підтвердження її доказами або визнання потенційних альтернативних інтерпретацій. Подумайте про різницю між словами «Це неправильно» та «Я бачу потенційну проблему тут; чи можемо ми дослідити [альтернативу]?» Останнє запрошує до обговорення, а не закриває його.

Поширений сценарій виникає під час перегляду коду. Припустимо, що ви виявили частину коду, яка здається надмірно складною. Замість того, щоб відразу ж коментувати «Це занадто складно», кращим підходом було б: «Я помічаю певну складність в цій функції. Чи можемо ми обговорити логіку поточної реалізації і, можливо, дослідити способи спрощення її, зберігаючи функціональність? Можливо, переробка на менші, більш перевіряючі одиниці може бути корисною.” Ця фраза демонструє обізнаність про потенційні проблеми без прямої критики вибору автора. Аналогічно, при отриманні PR, відповідь на кшталт «Я не зовсім розумію рішення використовувати цей шаблон тут - чи можете ви розібратися, чому він був обраний над [альтернативним підходом]?» є набагато більш конструктивною, ніж просто відкидання змін. Это сигнализирует, что вы занимаетесь размышлениями за кодом и открыты для изучения.

Інший ключовий елемент - це визнання власного потенційного непорозуміння. Фрази на кшталт «Я не впевнений, що я повністю розумію…» або «Чи можете ви розібратися у…?» є безцінними інструментами. Вони демонструють скромність і справжнє бажання розуміння, сприяючи більш співпрацюючому середовищу. Не бійтеся визнати, що щось не відразу зрозуміло; це набагато краще, ніж продовжувати на основі неповної інформації. Це особливо важливо при обговоренні архітектурних рішень - часто вони включають складні компроміси.

Нарешті, пам’ ятайте, що важливо сформулювати ваші пропозиції як пропозиції, а не як директиви. Замість «Ви повинні зробити це», спробуйте «Я хотів би знати, чи можемо ми розглянути…» або «Може, варто розслідувати…». Цей підхід сприяє духу співпраці і уникнення створення оборони.

# Example: Using `grep` to find potential inconsistencies in code
grep -rn "unused_variable" .

Ця команда, використовуючи grep, демонструє, як ви можете сформулювати технічне спостереження - “Я бачу невикористану змінну” - що може бути початковою точкою для подальшого обговорення потенційного рефакторингу. Це менш конфронтаційне, ніж прямо вказувати на проблему і дозволяє команді спільно досліджувати рішення.

Поширені запитання

Про що ця стаття "Англійський словник для обговорення архітектури коду"?

Вивчіть основний англійський словниковий запас для обговорення архітектури, перегляду коду і перегляду дизайну у професійних командах розробників програмного забезпечення.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Англійський словник для обговорення архітектури коду"?

Приблизно 8 min.