З'єднання проти згуртованості
З'єднання та згуртованість - це два поняття, знайдені в Java (та всіх інших об'єктно-орієнтованих мовах). З'єднання вимірює, наскільки кожен з програмних модулів залежить від інших програмних модулів. Згуртованість вимірює, наскільки сильно кожна з функцій пов'язана з модулем. Власне, будь-яка об'єктно-орієнтована мова (включаючи Java) має дві основні цілі - посилення згуртованості та одночасне зменшення зв'язку, щоб розробити найбільш ефективні програми. Ці дві метричні інженерні програми були розроблені Ларрі Костянтином, щоб зменшити витрати на зміну та обслуговування програмного забезпечення.
Що таке згуртованість?
Згуртованість вимірює, наскільки сильно пов'язана кожна з функцій в рамках програмного модуля. Добре структуровані заняття ведуть до згуртованих програм. Якщо певний клас виконує набір сильно пов'язаних функцій, цей клас вважається згуртованим. З іншого боку, якщо клас виконує купу абсолютно незв'язаних функціональних можливостей, це означає, що клас взагалі не є згуртованим. Важливо розуміти, що відсутність згуртованості не означає, що загальна програма не має необхідної функціональності. Просто без згуртованості буде дуже важко керувати функціоналом, оскільки вони будуть розкидані в багатьох неправильних місцях, оскільки складність програми з часом збільшується. Збереження, модифікація та розширення поведінки, розпорошеної по коду, дуже втомлює навіть для самих досвідчених програмістів.
Що таке з'єднання?
З'єднання вимірює, наскільки кожен з програмних модулів залежить від інших програмних модулів. Взаємодія між двома об'єктами відбувається тому, що відбувається з'єднання. Вільно пов'язані програми відрізняються гнучкістю та розширенням. Сильна зв'язок ніколи не є доброю, оскільки один об'єкт може сильно залежати від якогось іншого об'єкта. Це кошмар, коли код модифікований, тому що висока зв'язок означає, що програмістам потрібно працювати над декількома місцями коду навіть для однієї модифікації поведінки. Сильне з'єднання завжди призводить до програм з низькою гнучкістю та меншою масштабованістю / розширюваністю. Однак у мовах програмування, як Java, повністю уникнути з'єднання неможливо. Але рекомендується, щоб програмісти доклали максимум зусиль, щоб максимально зменшити зв'язок. Можливо також встановити деяке з'єднання, щоб допомогти об'єктам взаємодіяти один з одним, не перешкоджаючи його масштабності та гнучкості.
Яка різниця між зв'язком та згуртованістю?
Незважаючи на те, що з'єднання та згуртованість стосуються якості модуля в інженерії програмного забезпечення, вони є абсолютно різними поняттями. Згуртованість розповідає про те, наскільки функціональні можливості пов'язані один з одним в рамках модуля, в той час як з'єднання стосується того, наскільки один модуль залежить від інших програмних модулів у всій програмі. Для того щоб мати програмне забезпечення найкращої якості, згуртованість і зв'язок повинні досягати двох протилежних кінців їх спектрів. Іншими словами, слабке з'єднання та міцна згуртованість забезпечують найкраще програмне забезпечення. Наявність приватних полів, непублічних класів та приватних методів забезпечують вільне з'єднання, при цьому роблячи видимість усіх членів у класі та маючи пакет як видимість за замовчуванням, забезпечуючи високу згуртованість.