Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на .
|
Повторне використання коду (англ. code reuse) — методологія проєктування комп'ютерних та інших систем, що полягає в тому, що система (комп'ютерна програма, програмний модуль) частково або повністю повинна складатися з частин, написаних раніше компонентів і/або частин іншої системи, і ці компоненти повинні застосовуватися більше одного разу (якщо не в рамках одного проєкту, то хоча б різних). Повторне використання — основна методологія, яка застосовується для скорочення трудовитрат при розробці складних систем.
Найпоширеніший випадок повторного використання коду — бібліотеки програм. Бібліотеки надають загальну достатньо універсальну функціональність, яка покриває обрану предметну область. Приклади: бібліотека функцій для роботи з комплексними числами, бібліотека функцій для роботи з 3D-графікою, бібліотека для використання (протоколу TCP/IP), бібліотека для роботи з базами даних. Розробники нової програми можуть використовувати існуючі бібліотеки для вирішення своїх завдань і не «винаходити велосипеди».
Модульність систем
Програмісти прагнуть так проєктувати свої системи, щоб вони були максимально модульні. Як абстракції, на основі яких можна побудувати модульність системи, можуть виступати функції, співпрограми, клас, протокол. Бібліотека функцій гарний приклад абстракції, зручною для реалізації модульності програм та слідування методології повторного використання. Важливим кроком на шляху досягнення максимальної модульності став принцип ієрархічної побудови простору назв.
Прикладом вдалої реалізації модульності та принципу повторного використання можуть служити інструменти командної оболонки Unix-систем та стандартні класи Java, поміщені в ієрархію простору імен.
Шаблони (см. стандартна бібліотека шаблонів STL в мові ) функцій та класів стали важливим етапом просування методології повторного використання в індустрію об'єктно-орієнтованого програмування.
Ієрархічна модульність системи дозволяє реалізувати ефективні методи управління розробкою, засновані на побудові ієрархій управління відповідної ієрархії модулів самої системи.
Повторне використання в малому
Іноді повторне використання коду являє собою просте копіювання деякої частини коду з існуючої програми в іншу (англ. copy-paste). Це один з найбільш низькорівневих підходів до повторного використання. Але і він має місце, особливо коли мова йде про повторне використанні коду «в малому» («reuse в малому»).
Подібний підхід зазвичай не рекомендується до використання, натомість повторюваний фрагмент програми оформляється у вигляді підпрограми або макроса з набором параметрів. Основним аргументом на користь використання підпрограм замість копіювання коду є те, що у разі наявності помилки вона повинна бути виправлена одноразово в тілі підпрограми, в іншому ж випадку виправлення необхідно піддати в загальному випадку кілька ідентичних фрагментів коду, розташованих в різних місцях програми. Крім того, при копіюванні коду зазвичай виникає необхідність у зміні імен змінних, що також часто призводить до механічних помилок. У разі використання підпрограм подібних перейменувань можна уникнути шляхом використання локальних змінних.
Повторне використання коду та метасистемний перехід в програмуванні
Метод повторного використання коду є важливим компонентом реалізації принципу метасістемного переходу у розвитку індустрії програмного забезпечення. Втілення цього принципу в життя дозволяє розробникам оперувати високорівневими поняттями (відобразити картинку, видалити таблицю з бази даних, знайти всі корені рівняння, сконвертировать файл, тощо.), а не низькорівневими (пофарбувати піксель в червоний колір, обнулити регістр, скласти два числа, прочитати символ з файлу, тощо.).
Переваги та недоліки методу повторного використання
Розглянемо переваги та недоліки на прикладі бібліотек функцій.
Використання готових бібліотек має ряд переваг. По-перше, розробник нової системи знімає з себе турботу про реалізацію функціональності, закладеної в цій бібліотеці. Весь цикл розробки бібліотеки здійснюється розробником цієї бібліотеки. Він, звичайно, бере на себе відповідальність за підтримку бібліотеки: усунення помилок, розвиток та поліпшення роботи, тестування. Метод повторного використання коду є тим механізмом, який дозволяє розробникам «стати на плечі гігантів» та швидко будувати нові складні системи з вже налагоджених компонентів. Друга перевага виходить з самого повторення використання коду, що призводить до суттєвого зменшення розміру підсумкової програми, а при недостатній продуктивності носія і до швидкодії.
Крім нечисленних, але дуже важливих переваг метод повторного використання коду має ряд недоліків. Підключення до проєкту сторонніх бібліотек автоматично призводить до необхідності контролю сумісності версій компонент створюваної системи та версій використовуваних бібліотек. Найхарактернішим прикладом такої помилки вважається Аварія ракети-носія Аріан 5 (4 червня 1996), викликана використанням програмного модуля, розробленого для ракети [ru]. Важливо також відзначити, що багато бібліотек комерційні та вимагають грошових витрат (з розвитком руху вільного ПЗ це поступово втрачає актуальність). Крім того, часто бібліотеки недостатньо універсальні і не реалізують тієї функціональності, яка потрібна створюваній системі, або, навпаки, занадто універсальні і внаслідок неефективні, незручні або містять багато надлишкової (для цього проєкту) функціональності. Можна, якщо дозволяє ліцензія поширюваної бібліотеки, використовувати її вихідні коди і модифікувати їх відповідно до необхідністю. Але після цього відповідальність за підтримку функціональності бібліотеки перекладається на плечі розробника нової системи. Також використання зайвої модульності може призвести до зменшення швидкості виконання програми, коли, швидкість виконання, закладена в модуль не може перекрити витрати на звернення до цього модулю.
Див. також
Вікіпідручник має книгу на тему Reuse. Методологія повторного використання |
Примітки
- Відоме висловлювання Ісаака Ньютона
Посилання
- OnceAndOnlyOnce — «один та лише один раз», принцип повторного використання, доведений до крайності.
- Orthogonality and the DRY Principle — формулювання принципу повторного в контексті принципу ортогональности в проєктуванні з книги Енді Ханта та Дейва Томаса «The Pragmatic Programmer».
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya maye kilka nedolikiv Bud laska dopomozhit udoskonaliti yiyi abo obgovorit ci problemi na storinci obgovorennya Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno lyutij 2023 Cya stattya mistit perelik posilan ale pohodzhennya okremih tverdzhen zalishayetsya nezrozumilim cherez brak vnutrishnotekstovih dzherel vinosok Bud laska dopomozhit polipshiti cyu stattyu peretvorivshi dzherela z pereliku posilan na dzherela vinoski u samomu teksti statti Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki lyutij 2023 Povtorne vikoristannya kodu angl code reuse metodologiya proyektuvannya komp yuternih ta inshih sistem sho polyagaye v tomu sho sistema komp yuterna programa programnij modul chastkovo abo povnistyu povinna skladatisya z chastin napisanih ranishe komponentiv i abo chastin inshoyi sistemi i ci komponenti povinni zastosovuvatisya bilshe odnogo razu yaksho ne v ramkah odnogo proyektu to hocha b riznih Povtorne vikoristannya osnovna metodologiya yaka zastosovuyetsya dlya skorochennya trudovitrat pri rozrobci skladnih sistem Najposhirenishij vipadok povtornogo vikoristannya kodu biblioteki program Biblioteki nadayut zagalnu dostatno universalnu funkcionalnist yaka pokrivaye obranu predmetnu oblast Prikladi biblioteka funkcij dlya roboti z kompleksnimi chislami biblioteka funkcij dlya roboti z 3D grafikoyu biblioteka dlya vikoristannya protokolu TCP IP biblioteka dlya roboti z bazami danih Rozrobniki novoyi programi mozhut vikoristovuvati isnuyuchi biblioteki dlya virishennya svoyih zavdan i ne vinahoditi velosipedi Modulnist sistemProgramisti pragnut tak proyektuvati svoyi sistemi shob voni buli maksimalno modulni Yak abstrakciyi na osnovi yakih mozhna pobuduvati modulnist sistemi mozhut vistupati funkciyi spivprogrami klas protokol Biblioteka funkcij garnij priklad abstrakciyi zruchnoyu dlya realizaciyi modulnosti program ta sliduvannya metodologiyi povtornogo vikoristannya Vazhlivim krokom na shlyahu dosyagnennya maksimalnoyi modulnosti stav princip iyerarhichnoyi pobudovi prostoru nazv Prikladom vdaloyi realizaciyi modulnosti ta principu povtornogo vikoristannya mozhut sluzhiti instrumenti komandnoyi obolonki Unix sistem ta standartni klasi Java pomisheni v iyerarhiyu prostoru imen Shabloni sm standartna biblioteka shabloniv STL v movi Si funkcij ta klasiv stali vazhlivim etapom prosuvannya metodologiyi povtornogo vikoristannya v industriyu ob yektno oriyentovanogo programuvannya Iyerarhichna modulnist sistemi dozvolyaye realizuvati efektivni metodi upravlinnya rozrobkoyu zasnovani na pobudovi iyerarhij upravlinnya vidpovidnoyi iyerarhiyi moduliv samoyi sistemi Povtorne vikoristannya v malomuInodi povtorne vikoristannya kodu yavlyaye soboyu proste kopiyuvannya deyakoyi chastini kodu z isnuyuchoyi programi v inshu angl copy paste Ce odin z najbilsh nizkorivnevih pidhodiv do povtornogo vikoristannya Ale i vin maye misce osoblivo koli mova jde pro povtorne vikoristanni kodu v malomu reuse v malomu Podibnij pidhid zazvichaj ne rekomenduyetsya do vikoristannya natomist povtoryuvanij fragment programi oformlyayetsya u viglyadi pidprogrami abo makrosa z naborom parametriv Osnovnim argumentom na korist vikoristannya pidprogram zamist kopiyuvannya kodu ye te sho u razi nayavnosti pomilki vona povinna buti vipravlena odnorazovo v tili pidprogrami v inshomu zh vipadku vipravlennya neobhidno piddati v zagalnomu vipadku kilka identichnih fragmentiv kodu roztashovanih v riznih miscyah programi Krim togo pri kopiyuvanni kodu zazvichaj vinikaye neobhidnist u zmini imen zminnih sho takozh chasto prizvodit do mehanichnih pomilok U razi vikoristannya pidprogram podibnih perejmenuvan mozhna uniknuti shlyahom vikoristannya lokalnih zminnih Povtorne vikoristannya kodu ta metasistemnij perehid v programuvanniMetod povtornogo vikoristannya kodu ye vazhlivim komponentom realizaciyi principu metasistemnogo perehodu u rozvitku industriyi programnogo zabezpechennya Vtilennya cogo principu v zhittya dozvolyaye rozrobnikam operuvati visokorivnevimi ponyattyami vidobraziti kartinku vidaliti tablicyu z bazi danih znajti vsi koreni rivnyannya skonvertirovat fajl tosho a ne nizkorivnevimi pofarbuvati piksel v chervonij kolir obnuliti registr sklasti dva chisla prochitati simvol z fajlu tosho Perevagi ta nedoliki metodu povtornogo vikoristannyaRozglyanemo perevagi ta nedoliki na prikladi bibliotek funkcij Vikoristannya gotovih bibliotek maye ryad perevag Po pershe rozrobnik novoyi sistemi znimaye z sebe turbotu pro realizaciyu funkcionalnosti zakladenoyi v cij biblioteci Ves cikl rozrobki biblioteki zdijsnyuyetsya rozrobnikom ciyeyi biblioteki Vin zvichajno bere na sebe vidpovidalnist za pidtrimku biblioteki usunennya pomilok rozvitok ta polipshennya roboti testuvannya Metod povtornogo vikoristannya kodu ye tim mehanizmom yakij dozvolyaye rozrobnikam stati na plechi gigantiv ta shvidko buduvati novi skladni sistemi z vzhe nalagodzhenih komponentiv Druga perevaga vihodit z samogo povtorennya vikoristannya kodu sho prizvodit do suttyevogo zmenshennya rozmiru pidsumkovoyi programi a pri nedostatnij produktivnosti nosiya i do shvidkodiyi Krim nechislennih ale duzhe vazhlivih perevag metod povtornogo vikoristannya kodu maye ryad nedolikiv Pidklyuchennya do proyektu storonnih bibliotek avtomatichno prizvodit do neobhidnosti kontrolyu sumisnosti versij komponent stvoryuvanoyi sistemi ta versij vikoristovuvanih bibliotek Najharakternishim prikladom takoyi pomilki vvazhayetsya Avariya raketi nosiya Arian 5 4 chervnya 1996 viklikana vikoristannyam programnogo modulya rozroblenogo dlya raketi ru Vazhlivo takozh vidznachiti sho bagato bibliotek komercijni ta vimagayut groshovih vitrat z rozvitkom ruhu vilnogo PZ ce postupovo vtrachaye aktualnist Krim togo chasto biblioteki nedostatno universalni i ne realizuyut tiyeyi funkcionalnosti yaka potribna stvoryuvanij sistemi abo navpaki zanadto universalni i vnaslidok neefektivni nezruchni abo mistyat bagato nadlishkovoyi dlya cogo proyektu funkcionalnosti Mozhna yaksho dozvolyaye licenziya poshiryuvanoyi biblioteki vikoristovuvati yiyi vihidni kodi i modifikuvati yih vidpovidno do neobhidnistyu Ale pislya cogo vidpovidalnist za pidtrimku funkcionalnosti biblioteki perekladayetsya na plechi rozrobnika novoyi sistemi Takozh vikoristannya zajvoyi modulnosti mozhe prizvesti do zmenshennya shvidkosti vikonannya programi koli shvidkist vikonannya zakladena v modul ne mozhe perekriti vitrati na zvernennya do cogo modulyu Div takozhVikipidruchnik maye knigu na temu Reuse Metodologiya povtornogo vikoristannya Kontraktne programuvannya Procedurne programuvannya Ob yektno oriyentovane programuvannya Uzagalnene programuvannya Metaprogramuvannya Biblioteka Shabloni proyektuvannyaPrimitkiVidome vislovlyuvannya Isaaka NyutonaPosilannyaOnceAndOnlyOnce odin ta lishe odin raz princip povtornogo vikoristannya dovedenij do krajnosti Orthogonality and the DRY Principle formulyuvannya principu povtornogo v konteksti principu ortogonalnosti v proyektuvanni z knigi Endi Hanta ta Dejva Tomasa The Pragmatic Programmer