CINXE.COM
Code reuse - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Code reuse - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"d5a34976-1206-4d7f-a4bb-8350628ce7ea","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Code_reuse","wgTitle":"Code reuse","wgCurRevisionId":1275068550,"wgRevisionId":1275068550,"wgArticleId":1086559,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description is different from Wikidata","All articles with unsourced statements","Articles with unsourced statements from February 2023","Articles needing additional references from April 2015","All articles needing additional references","Articles to be expanded from April 2015","All articles to be expanded","Articles with unsourced statements from April 2015","Programming principles","Repurposing","Computer libraries"],"wgPageViewLanguage":"en", "wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Code_reuse","wgRelevantArticleId":1086559,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q771245","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness", "fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin", "mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.15"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Code reuse - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Code_reuse"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Code_reuse&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Code_reuse"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Code_reuse rootpage-Code_reuse skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" title="Main menu" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Code+reuse" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Code+reuse" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Code+reuse" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Code+reuse" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Overview" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Overview"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Overview</span> </div> </a> <ul id="toc-Overview-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Types_of_reuse" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Types_of_reuse"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Types of reuse</span> </div> </a> <ul id="toc-Types_of_reuse-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Systematic" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Systematic"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Systematic</span> </div> </a> <ul id="toc-Systematic-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Examples" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Examples"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Examples</span> </div> </a> <button aria-controls="toc-Examples-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Examples subsection</span> </button> <ul id="toc-Examples-sublist" class="vector-toc-list"> <li id="toc-Software_libraries" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Software_libraries"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Software libraries</span> </div> </a> <ul id="toc-Software_libraries-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Design_patterns" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Design_patterns"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Design patterns</span> </div> </a> <ul id="toc-Design_patterns-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Frameworks" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Frameworks"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Frameworks</span> </div> </a> <ul id="toc-Frameworks-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Higher-order_function" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Higher-order_function"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.4</span> <span>Higher-order function</span> </div> </a> <ul id="toc-Higher-order_function-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Retrocomputing" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Retrocomputing"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5</span> <span>Retrocomputing</span> </div> </a> <ul id="toc-Retrocomputing-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Computer_security" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Computer_security"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6</span> <span>Computer security</span> </div> </a> <ul id="toc-Computer_security-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Components" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Components"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.7</span> <span>Components</span> </div> </a> <ul id="toc-Components-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Outside_computers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Outside_computers"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.8</span> <span>Outside computers</span> </div> </a> <ul id="toc-Outside_computers-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Criticism" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Criticism"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Criticism</span> </div> </a> <ul id="toc-Criticism-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" title="Table of Contents" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Code reuse</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 15 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-15" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">15 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%A5%D8%B9%D8%A7%D8%AF%D8%A9_%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85_%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%8A%D9%85%D8%A7%D8%AA_%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9" title="إعادة استخدام التعليمات البرمجية – Arabic" lang="ar" hreflang="ar" data-title="إعادة استخدام التعليمات البرمجية" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Reutilizaci%C3%B3n_de_c%C3%B3digo" title="Reutilización de código – Spanish" lang="es" hreflang="es" data-title="Reutilización de código" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D9%85%D8%AC%D8%AF%D8%AF_%D8%A7%D8%B2_%DA%A9%D8%AF" title="استفاده مجدد از کد – Persian" lang="fa" hreflang="fa" data-title="استفاده مجدد از کد" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/R%C3%A9utilisation_de_code" title="Réutilisation de code – French" lang="fr" hreflang="fr" data-title="Réutilisation de code" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%BD%94%EB%93%9C_%EC%9E%AC%EC%82%AC%EC%9A%A9" title="코드 재사용 – Korean" lang="ko" hreflang="ko" data-title="코드 재사용" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Riuso_di_codice" title="Riuso di codice – Italian" lang="it" hreflang="it" data-title="Riuso di codice" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/K%C3%B3d-%C3%BAjrafelhaszn%C3%A1l%C3%A1s" title="Kód-újrafelhasználás – Hungarian" lang="hu" hreflang="hu" data-title="Kód-újrafelhasználás" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Code-reuse" title="Code-reuse – Dutch" lang="nl" hreflang="nl" data-title="Code-reuse" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%86%8D%E5%88%A9%E7%94%A8" title="コードの再利用 – Japanese" lang="ja" hreflang="ja" data-title="コードの再利用" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Reutiliza%C3%A7%C3%A3o_de_c%C3%B3digo" title="Reutilização de código – Portuguese" lang="pt" hreflang="pt" data-title="Reutilização de código" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%BD%D0%BE%D0%B5_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%B4%D0%B0" title="Повторное использование кода – Russian" lang="ru" hreflang="ru" data-title="Повторное использование кода" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Kodun_yeniden_kullan%C4%B1m%C4%B1" title="Kodun yeniden kullanımı – Turkish" lang="tr" hreflang="tr" data-title="Kodun yeniden kullanımı" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%BD%D0%B5_%D0%B2%D0%B8%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D0%BD%D1%8F_%D0%BA%D0%BE%D0%B4%D1%83" title="Повторне використання коду – Ukrainian" lang="uk" hreflang="uk" data-title="Повторне використання коду" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E4%BB%A3%E7%A2%BC%E8%BF%94%E7%94%A8" title="代碼返用 – Cantonese" lang="yue" hreflang="yue" data-title="代碼返用" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A0%81%E5%A4%8D%E7%94%A8" title="代码复用 – Chinese" lang="zh" hreflang="zh" data-title="代码复用" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q771245#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Code_reuse" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Code_reuse" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Code_reuse"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Code_reuse&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Code_reuse&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Code_reuse"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Code_reuse&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Code_reuse&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Code_reuse" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Code_reuse" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Code_reuse&oldid=1275068550" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Code_reuse&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Code_reuse&id=1275068550&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCode_reuse"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCode_reuse"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Code_reuse&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Code_reuse&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q771245" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Using existing code in new software</div> <p><b>Code reuse</b> is the practice of using existing <a href="/wiki/Source_code" title="Source code">source code</a> to develop <a href="/wiki/Software" title="Software">software</a> instead of writing new code. <i>Software reuse</i> is a broader term that implies using any existing software asset to develop software instead of developing it again.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Reddy2011_2-0" class="reference"><a href="#cite_note-Reddy2011-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page: 7">: 7 </span></sup> An asset that is relatively easy to reuse and offers significant value is considered to have high <a href="/wiki/Reusability" title="Reusability">reusability</a>. </p><p>Code reuse may be achieved different ways depending on a complexity of a <a href="/wiki/Programming_language" title="Programming language">programming language</a> chosen and range from a lower-level approaches like code <a href="/wiki/Cut,_copy,_and_paste" title="Cut, copy, and paste">copy-pasting</a> (e.g. via <a href="/wiki/Snippet_(programming)" title="Snippet (programming)">snippets</a>),<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> simple functions (<a href="/wiki/Procedure_(computer_science)" class="mw-redirect" title="Procedure (computer science)">procedures</a> or <a href="/wiki/Subroutine" class="mw-redirect" title="Subroutine">subroutines</a>) or a bunch of <a href="/wiki/Object_(computer_science)" title="Object (computer science)">objects</a> or <a href="/wiki/Subroutine" class="mw-redirect" title="Subroutine">functions</a> organized into <a href="/wiki/Modular_programming" title="Modular programming">modules</a> (e.g. <a href="/wiki/Library_(computing)" title="Library (computing)">libraries</a>)<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Reddy2011_2-1" class="reference"><a href="#cite_note-Reddy2011-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page: 7">: 7 </span></sup> or custom <a href="/wiki/Namespace" title="Namespace">namespaces</a>, and <a href="/wiki/Package_manager" title="Package manager">packages</a>, <a href="/wiki/Framework_(computer_science)" class="mw-redirect" title="Framework (computer science)">frameworks</a> or <a href="/wiki/Software_suite" title="Software suite">software suites</a> in higher-levels. </p><p>Code reuse implies dependencies which can make <a href="/wiki/Software_maintenance" title="Software maintenance">code maintainability</a> harder.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2023)">citation needed</span></a></i>]</sup> At least one study found that code reuse at the class level reduces <a href="/wiki/Technical_debt" title="Technical debt">technical debt</a>.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=1" title="Edit section: Overview"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-More_citations_needed_section plainlinks metadata ambox ambox-content ambox-Refimprove" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>needs additional citations for <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">verification</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/Code_reuse" title="Special:EditPage/Code reuse">improve this article</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a> in this section. Unsourced material may be challenged and removed.</span> <span class="date-container"><i>(<span class="date">April 2015</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <p><a href="/wiki/Ad_hoc" title="Ad hoc">Ad hoc</a> code reuse has been practiced from the earliest days of <a href="/wiki/Computer_programming" title="Computer programming">programming</a>. Programmers have always reused sections of code, templates, functions, and procedures. Software reuse as a recognized area of study in software engineering, however, dates only from 1968 when <a href="/wiki/Douglas_McIlroy" title="Douglas McIlroy">Douglas McIlroy</a> of <a href="/wiki/Bell_Labs" title="Bell Labs">Bell Laboratories</a> proposed basing the software industry on reusable components. </p><p>Code reuse aims to save time and resources and reduce <a href="/wiki/Redundancy_(information_theory)" title="Redundancy (information theory)">redundancy</a> by taking advantage of assets that have already been created in some form within the software product development process.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> The key idea in reuse is that parts of a <a href="/wiki/Computer_program" title="Computer program">computer program</a> written at one time can be or should be used in the construction of other programs written at a later time. </p><p>Code reuse may imply the creation of a separately maintained version of the reusable assets. While code is the most common resource selected for reuse, other assets generated during the development cycle may offer opportunities for reuse: software components, test suites, designs, documentation, and so on.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> </p><p>The <a href="/wiki/Library_(computing)" title="Library (computing)">software library</a> is a good example of code reuse. Programmers may decide to create internal abstractions so that certain parts of their program can be reused, or may create custom libraries for their own use. Some characteristics that make software more easily reusable are <a href="/wiki/Modularity_(programming)" class="mw-redirect" title="Modularity (programming)">modularity</a>, <a href="/wiki/Loose_coupling" title="Loose coupling">loose coupling</a>, high <a href="/wiki/Cohesion_(computer_science)" title="Cohesion (computer science)">cohesion</a>, <a href="/wiki/Information_hiding" title="Information hiding">information hiding</a> and <a href="/wiki/Separation_of_concerns" title="Separation of concerns">separation of concerns</a>. </p><p>For newly written code to use a piece of existing code, some kind of <a href="/wiki/Interface_(computing)" title="Interface (computing)">interface</a>, or means of communication, must be defined. These commonly include a "call" or use of a <a href="/wiki/Subroutine" class="mw-redirect" title="Subroutine">subroutine</a>, <a href="/wiki/Object_(computer_science)" title="Object (computer science)">object</a>, <a href="/wiki/Class_(computer_science)" class="mw-redirect" title="Class (computer science)">class</a>, or <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">prototype</a>. In organizations, such practices are formalized and standardized by <a href="/wiki/Domain_engineering" title="Domain engineering">domain engineering</a>, also known as <a href="/wiki/Product_Family_Engineering" class="mw-redirect" title="Product Family Engineering">software product line</a> engineering. </p><p>The general practice of using a prior version of an extant program as a starting point for the next version, is also a form of code reuse. </p><p>Some so-called code "reuse" involves simply copying some or all of the code from an existing program into a new one. While organizations can realize <a href="/wiki/Time_to_market" title="Time to market">time to market</a> benefits for a new product with this approach, they can subsequently be saddled with many of the same <a href="/wiki/Code_duplication" class="mw-redirect" title="Code duplication">code duplication</a> problems caused by <a href="/wiki/Cut_and_paste_programming" class="mw-redirect" title="Cut and paste programming">cut and paste programming</a>. </p><p>Many researchers have worked to make reuse faster, easier, more systematic, and an integral part of the normal process of programming. These are some of the main goals behind the invention of <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>, which became one of the most common forms of formalized reuse. A somewhat later invention is <a href="/wiki/Generic_programming" title="Generic programming">generic programming</a>. </p><p>Another, newer means is to use software "<a href="/wiki/Source_code_generation" class="mw-redirect" title="Source code generation">generators</a>", programs which can create new programs of a certain type, based on a set of parameters that users choose. Fields of study about such systems are <a href="/wiki/Generative_programming" class="mw-redirect" title="Generative programming">generative programming</a> and <a href="/wiki/Metaprogramming" title="Metaprogramming">metaprogramming</a>. </p> <div class="mw-heading mw-heading2"><h2 id="Types_of_reuse">Types of reuse</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=2" title="Edit section: Types of reuse"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Concerning motivation and driving factors, reuse can be: </p> <ul><li>Opportunistic – While getting ready to begin a project, the team realizes that there are existing components that they can reuse.</li> <li>Planned – A team strategically designs components so that they'll be reusable in future projects.</li></ul> <p>Reuse can be categorized further: </p> <ul><li>Internal reuse – A team reuses its own components. This may be a business decision, since the team may want to control a component critical to the project.</li> <li>External reuse – A team may choose to license a third-party component. Licensing a third-party component typically costs the team 1 to 20 percent of what it would cost to develop internally.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> The team must also consider the time it takes to find, learn and integrate the component.</li></ul> <p>Concerning form or structure of reuse, code can be:<sup id="cite_ref-sharednow.blogspot.com_9-0" class="reference"><a href="#cite_note-sharednow.blogspot.com-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> </p> <ul><li>Referenced – The client code contains a reference to reused code, and thus they have distinct life cycles and can have distinct versions.</li> <li>Forked – The client code contains a local or private copy of the reused code, and thus they share a single life cycle and a single version.</li></ul> <p>Fork-reuse is often discouraged because it's a form of code duplication, which requires that every bug is corrected in each copy, and enhancements made to reused code need to be manually merged in every copy or they become out-of-date. However, fork-reuse can have benefits such as isolation, flexibility to change the reused code, easier packaging, deployment and version management.<sup id="cite_ref-sharednow.blogspot.com_9-1" class="reference"><a href="#cite_note-sharednow.blogspot.com-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Systematic">Systematic</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=3" title="Edit section: Systematic"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1251242444"><table class="box-Expand_section plainlinks metadata ambox mbox-small-left ambox-content" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><a href="/wiki/File:Wiki_letter_w_cropped.svg" class="mw-file-description"><img alt="[icon]" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png" decoding="async" width="20" height="14" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/30px-Wiki_letter_w_cropped.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/40px-Wiki_letter_w_cropped.svg.png 2x" data-file-width="44" data-file-height="31" /></a></span></td><td class="mbox-text"><div class="mbox-text-span">This section <b>needs expansion</b>. You can help by <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Code_reuse&action=edit&section=">adding to it</a>. <span class="date-container"><i>(<span class="date">April 2015</span>)</i></span></div></td></tr></tbody></table> <p>Systematic software reuse is a strategy for increasing productivity and improving the quality of the software industry. Although it is simple in concept, successful software reuse implementation is difficult in practice. A reason put forward for this is the dependence of software reuse on the context in which it is implemented. Some problematic issues that need to be addressed related to systematic software reuse are:<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> </p> <ul><li>a clear and well-defined product vision is an essential foundation to a <a href="/wiki/Software_product_line" title="Software product line">software product line</a> (SPL).</li> <li>an evolutionary implementation strategy would be a more pragmatic strategy for the company.</li> <li>there exist a need for continuous management support and leadership to ensure success.</li> <li>an appropriate organisational structure is needed to support SPL engineering.</li> <li>the change of mindset from a project-centric company to a product-oriented company is essential.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=4" title="Edit section: Examples"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Software_libraries">Software libraries</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=5" title="Edit section: Software libraries"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A very common example of code reuse is the technique of using a <a href="/wiki/Library_(computer_science)" class="mw-redirect" title="Library (computer science)">software library</a>. Many common operations, such as converting information among different well-known formats, accessing external storage, interfacing with external programs, or manipulating information (numbers, words, names, locations, dates, etc.) in common ways, are needed by many different programs. Authors of new programs can use the code in a software library to perform these tasks, instead of "re-inventing the wheel", by writing fully new code directly in a program to perform an operation. Library implementations often have the benefit of being well-tested and covering unusual or arcane cases. Disadvantages include the inability to tweak details which may affect performance or the desired output, and the time and cost of acquiring, learning, and configuring the library.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Design_patterns">Design patterns</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=6" title="Edit section: Design patterns"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Design_pattern_(computer_science)" class="mw-redirect" title="Design pattern (computer science)">Design pattern (computer science)</a></div> <p>A design pattern is a general solution to a recurring problem. Design patterns are more conceptual than tangible and can be modified to fit the exact need. However, abstract classes and interfaces can be reused to implement certain patterns. </p> <div class="mw-heading mw-heading3"><h3 id="Frameworks">Frameworks</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=7" title="Edit section: Frameworks"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Software_framework" title="Software framework">Software framework</a></div> <p>Developers generally reuse large pieces of software via third-party applications and frameworks, though frameworks are usually domain-specific and applicable only to families of applications<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (April 2015)">citation needed</span></a></i>]</sup>. </p> <div class="mw-heading mw-heading3"><h3 id="Higher-order_function">Higher-order function</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=8" title="Edit section: Higher-order function"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Higher-order_function" title="Higher-order function">Higher-order function</a></div> <p>In <a href="/wiki/Functional_programming" title="Functional programming">functional programming</a> higher-order functions can be used in many cases where design patterns or frameworks were formerly used. </p> <div class="mw-heading mw-heading3"><h3 id="Retrocomputing">Retrocomputing</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=9" title="Edit section: Retrocomputing"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Retrocomputing" title="Retrocomputing">Retrocomputing</a> encompasses reuse of code, simply because retro programs are being run on older computers, or <a href="/wiki/Emulator" title="Emulator">emulators</a> for them. </p> <div class="mw-heading mw-heading3"><h3 id="Computer_security">Computer security</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=10" title="Edit section: Computer security"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In <a href="/wiki/Computer_security" title="Computer security">computer security</a> code-reuse is employed as a software exploit method.<sup id="cite_ref-Bletsch11_12-0" class="reference"><a href="#cite_note-Bletsch11-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> When an attacker is not able to directly input code to modify the control flow of a program, for example in presence of code injection defenses such as <a href="/wiki/W%5EX" title="W^X">W^X</a>, he or she can redirect the control flow to code sequences existing in memory. </p><p>Examples of code-reuse attacks are <a href="/wiki/Return-to-libc_attack" title="Return-to-libc attack">return-to-libc attack</a>, <a href="/wiki/Return-oriented_programming" title="Return-oriented programming">return-oriented programming</a>, and jump-oriented programming.<sup id="cite_ref-Bletsch11_12-1" class="reference"><a href="#cite_note-Bletsch11-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Components">Components</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=11" title="Edit section: Components"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Software_component" title="Software component">Software component</a></div> <p>A component, in an object-oriented extent, represents a set of collaborative classes (or only one class) and its interfaces. The interfaces are responsible for enabling the replacement of components. Reusable components can also be isolated and synchronized between SCM repositories using component source code management technologies (<a rel="nofollow" class="external text" href="https://github.com/teambit/bit">CSCM</a>).<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (April 2015)">citation needed</span></a></i>]</sup> </p> <div class="mw-heading mw-heading3"><h3 id="Outside_computers">Outside computers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=12" title="Edit section: Outside computers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The whole concept of "code reuse" can also encompass engineering applications outside software. For instance, <a href="/wiki/Solid_modeling" title="Solid modeling">parametric modeling</a> in <a href="/wiki/Computer-aided_design" title="Computer-aided design">computer-aided design</a> allows for creating reusable designs. <a href="/wiki/Standardization" title="Standardization">Standardization</a> results in creation of interoperable parts that can be then reused in many contexts.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (April 2015)">citation needed</span></a></i>]</sup> </p> <div class="mw-heading mw-heading2"><h2 id="Criticism">Criticism</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=13" title="Edit section: Criticism"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Code reuse results in <a href="/wiki/Coupling_(computer_programming)" title="Coupling (computer programming)">dependency</a> on the component being reused. <a href="/wiki/Rob_Pike" title="Rob Pike">Rob Pike</a> opined that "A little copying is better than a little dependency". When he joined <a href="/wiki/Google" title="Google">Google</a>, the company was putting heavy emphasis on code reuse. He believes that Google's <a href="/wiki/Codebase" title="Codebase">codebase</a> still suffers from results of that former policy in terms of compilation speed and maintainability.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> </p><p>Reusable code requires usually more effort to write and design. <a href="/wiki/Fred_Brooks" title="Fred Brooks">Fred Brooks</a> discusses the significantly higher cost associated with that effort in his essays "The Tar Pit" and "<a href="/wiki/No_Silver_Bullet" title="No Silver Bullet">No Silver Bullet</a>" The fallacy is that effort is often spent without careful understanding of the mechanisms through which that cost will be redeemed. The justification often comes from incorrectly drawing parallels to reusable parts in a physical manufacturing process. Incorrect because writing code is analogous to design of a single product rather than production of multiple units. </p> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=14" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Don%27t_repeat_yourself" title="Don't repeat yourself">Don't repeat yourself</a></li> <li><a href="/wiki/International_Conference_on_Software_Reuse" title="International Conference on Software Reuse">International Conference on Software Reuse</a></li> <li><a href="/wiki/Inheritance_(object-oriented_programming)" title="Inheritance (object-oriented programming)">Inheritance (object-oriented programming)</a></li> <li><a href="/wiki/Language_binding" title="Language binding">Language binding</a></li> <li><a href="/wiki/Not_invented_here" title="Not invented here">Not invented here</a> (<a href="/wiki/Antonym" class="mw-redirect" title="Antonym">antonym</a>)</li> <li><a href="/wiki/Type_polymorphism" class="mw-redirect" title="Type polymorphism">Type polymorphism</a></li> <li><a href="/wiki/Procedural_programming" title="Procedural programming">Procedural programming</a></li> <li><a href="/wiki/Reinventing_the_wheel" title="Reinventing the wheel">Reinventing the wheel</a> (<a href="/wiki/Antonym" class="mw-redirect" title="Antonym">antonym</a>)</li> <li><a href="/wiki/Reuse_metrics" title="Reuse metrics">Reuse metrics</a></li> <li><a href="/wiki/Single_source_of_truth" title="Single source of truth">Single source of truth</a></li> <li><a href="/wiki/Software_framework" title="Software framework">Software framework</a></li> <li><a href="/wiki/Virtual_inheritance" title="Virtual inheritance">Virtual inheritance</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=15" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;"> <ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite id="CITEREFFrakesKyo_Kang2005" class="citation journal cs1">Frakes, W.B.; Kyo Kang (July 2005). "Software Reuse Research: Status and Future". <i>IEEE Transactions on Software Engineering</i>. <b>31</b> (7): <span class="nowrap">529–</span>536. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.75.635">10.1.1.75.635</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTSE.2005.85">10.1109/TSE.2005.85</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:14561810">14561810</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Transactions+on+Software+Engineering&rft.atitle=Software+Reuse+Research%3A+Status+and+Future&rft.volume=31&rft.issue=7&rft.pages=%3Cspan+class%3D%22nowrap%22%3E529-%3C%2Fspan%3E536&rft.date=2005-07&rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.75.635%23id-name%3DCiteSeerX&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A14561810%23id-name%3DS2CID&rft_id=info%3Adoi%2F10.1109%2FTSE.2005.85&rft.aulast=Frakes&rft.aufirst=W.B.&rft.au=Kyo+Kang&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-Reddy2011-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-Reddy2011_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Reddy2011_2-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFReddy2011" class="citation book cs1">Reddy, Martin (2011). <a rel="nofollow" class="external text" href="https://www.worldcat.org/oclc/704559821"><i>API design for C++</i></a>. Boston: Morgan Kaufmann. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-12-385004-1" title="Special:BookSources/978-0-12-385004-1"><bdi>978-0-12-385004-1</bdi></a>. <a href="/wiki/OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/704559821">704559821</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=API+design+for+C%2B%2B&rft.place=Boston&rft.pub=Morgan+Kaufmann&rft.date=2011&rft_id=info%3Aoclcnum%2F704559821&rft.isbn=978-0-12-385004-1&rft.aulast=Reddy&rft.aufirst=Martin&rft_id=https%3A%2F%2Fwww.worldcat.org%2Foclc%2F704559821&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSelaoloHlomani2016" class="citation journal cs1">Selaolo, Karabo; Hlomani, Hlomani (2016). <a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/305144699">"Towards An Algorithms Ontology Cluster: for Modular Code Reuse and Polyglot Programming"</a>. <i>Advances in Computer Science</i>. <b>5</b>: 63 – via Researchgate.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Advances+in+Computer+Science&rft.atitle=Towards+An+Algorithms+Ontology+Cluster%3A+for+Modular+Code+Reuse+and+Polyglot+Programming&rft.volume=5&rft.pages=63&rft.date=2016&rft.aulast=Selaolo&rft.aufirst=Karabo&rft.au=Hlomani%2C+Hlomani&rft_id=https%3A%2F%2Fwww.researchgate.net%2Fpublication%2F305144699&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.oreilly.com/library/view/head-first-python/9781491919521/ch04.html">"4. Code Reuse: Functions and Modules - Head First Python, 2nd Edition [Book]"</a>. <i>www.oreilly.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2022-01-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=www.oreilly.com&rft.atitle=4.+Code+Reuse%3A+Functions+and+Modules+-+Head+First+Python%2C+2nd+Edition+%5BBook%5D&rft_id=https%3A%2F%2Fwww.oreilly.com%2Flibrary%2Fview%2Fhead-first-python%2F9781491919521%2Fch04.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFFeitosaAmpatzoglouGkortzisBibi2020" class="citation journal cs1">Feitosa, Daniel; Ampatzoglou, Apostolos; Gkortzis, Antonios; Bibi, Stamatia; Chatzigeorgiou, Alexander (September 2020). <a rel="nofollow" class="external text" href="https://pure.rug.nl/ws/files/128142562/1_s2.0_S0164121220300960_main.pdf">"CODE reuse in practice: Benefiting or harming technical debt"</a> <span class="cs1-format">(PDF)</span>. <i>Journal of Systems and Software</i>. <b>167</b>: 110618. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.jss.2020.110618">10.1016/j.jss.2020.110618</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:219502749">219502749</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Journal+of+Systems+and+Software&rft.atitle=CODE+reuse+in+practice%3A+Benefiting+or+harming+technical+debt&rft.volume=167&rft.pages=110618&rft.date=2020-09&rft_id=info%3Adoi%2F10.1016%2Fj.jss.2020.110618&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A219502749%23id-name%3DS2CID&rft.aulast=Feitosa&rft.aufirst=Daniel&rft.au=Ampatzoglou%2C+Apostolos&rft.au=Gkortzis%2C+Antonios&rft.au=Bibi%2C+Stamatia&rft.au=Chatzigeorgiou%2C+Alexander&rft_id=https%3A%2F%2Fpure.rug.nl%2Fws%2Ffiles%2F128142562%2F1_s2.0_S0164121220300960_main.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLombard_Hill_Group" class="citation web cs1">Lombard Hill Group. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190123223128/http://lombardhill.com/What_Reuse.htm">"What Is Software Reuse?"</a>. <i>lombardhill.com</i>. Lombard Hill Group. Archived from <a rel="nofollow" class="external text" href="http://lombardhill.com/what_reuse.htm">the original</a> on 23 January 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">22 October</span> 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=lombardhill.com&rft.atitle=What+Is+Software+Reuse%3F&rft.au=Lombard+Hill+Group&rft_id=http%3A%2F%2Flombardhill.com%2Fwhat_reuse.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLombard_Hill_Group" class="citation web cs1">Lombard Hill Group. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190123223128/http://lombardhill.com/What_Reuse.htm">"What Is Software Reuse?"</a>. Archived from <a rel="nofollow" class="external text" href="http://lombardhill.com/what_reuse.htm">the original</a> on 23 January 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">22 October</span> 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=What+Is+Software+Reuse%3F&rft.au=Lombard+Hill+Group&rft_id=http%3A%2F%2Flombardhill.com%2Fwhat_reuse.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMcConnell1996" class="citation book cs1">McConnell, Steve (1996). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/rapiddevelopment00mcco"><i>Rapid Development: Taming Wild Software Schedules</i></a></span>. Pearson Education. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-55615-900-8" title="Special:BookSources/978-1-55615-900-8"><bdi>978-1-55615-900-8</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Rapid+Development%3A+Taming+Wild+Software+Schedules&rft.pub=Pearson+Education&rft.date=1996&rft.isbn=978-1-55615-900-8&rft.aulast=McConnell&rft.aufirst=Steve&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Frapiddevelopment00mcco&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-sharednow.blogspot.com-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-sharednow.blogspot.com_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-sharednow.blogspot.com_9-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFColombo2011" class="citation web cs1">Colombo, F. (2011). <a rel="nofollow" class="external text" href="http://sharednow.blogspot.com/2011/05/its-not-just-reuse.html">"It's not just reuse"</a>. <i>SharedNow.blogspot</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=SharedNow.blogspot&rft.atitle=It%27s+not+just+reuse&rft.date=2011&rft.aulast=Colombo&rft.aufirst=F.&rft_id=http%3A%2F%2Fsharednow.blogspot.com%2F2011%2F05%2Fits-not-just-reuse.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFChampmanVan_der_Merwe2008" class="citation conference cs1">Champman, M.; Van der Merwe, Alta (2008). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="http://portal.acm.org/citation.cfm?id=1456662">"Contemplating Systematic Software Reuse in a Small Project-centric Company"</a></span>. <i>Proceeding SAICSIT '08 Proceedings of the 2008 annual research conference of the South African Institute of Computer Scientists and Information Technologists on IT research in developing countries: riding the wave of technology</i>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1456659.1456662">10.1145/1456659.1456662</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-60558-286-3" title="Special:BookSources/978-1-60558-286-3"><bdi>978-1-60558-286-3</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.atitle=Contemplating+Systematic+Software+Reuse+in+a+Small+Project-centric+Company&rft.btitle=Proceeding+SAICSIT+%2708+Proceedings+of+the+2008+annual+research+conference+of+the+South+African+Institute+of+Computer+Scientists+and+Information+Technologists+on+IT+research+in+developing+countries%3A+riding+the+wave+of+technology&rft.date=2008&rft_id=info%3Adoi%2F10.1145%2F1456659.1456662&rft.isbn=978-1-60558-286-3&rft.aulast=Champman&rft.aufirst=M.&rft.au=Van+der+Merwe%2C+Alta&rft_id=http%3A%2F%2Fportal.acm.org%2Fcitation.cfm%3Fid%3D1456662&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20110710143019/http://docforge.com/wiki/Code_reuse">"Code reuse"</a>. <i>DocForge</i>. Archived from <a rel="nofollow" class="external text" href="http://docforge.com/wiki/Code_reuse">the original</a> on 2011-07-10<span class="reference-accessdate">. Retrieved <span class="nowrap">10 February</span> 2025</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=DocForge&rft.atitle=Code+reuse&rft_id=http%3A%2F%2Fdocforge.com%2Fwiki%2FCode_reuse&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-Bletsch11-12"><span class="mw-cite-backlink">^ <a href="#cite_ref-Bletsch11_12-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Bletsch11_12-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBletsch2011" class="citation book cs1">Bletsch, Tyler (2011). <a rel="nofollow" class="external text" href="http://dl.acm.org/citation.cfm?id=2338075"><i>Code-reuse Attacks: New Frontiers and Defenses</i></a>. North Carolina State University. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-124-75297-6" title="Special:BookSources/978-1-124-75297-6"><bdi>978-1-124-75297-6</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Code-reuse+Attacks%3A+New+Frontiers+and+Defenses&rft.pub=North+Carolina+State+University&rft.date=2011&rft.isbn=978-1-124-75297-6&rft.aulast=Bletsch&rft.aufirst=Tyler&rft_id=http%3A%2F%2Fdl.acm.org%2Fcitation.cfm%3Fid%3D2338075&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBletschJiangFreehLiang2011" class="citation conference cs1">Bletsch, Tyler; Jiang, Xuxian; Freeh, Vince W; Liang, Zhenkai (2011). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170807154310/https://web.comp.nus.edu.sg/~liangzk/papers/asiaccs11.pdf">"Jump-oriented programming: a new class of code-reuse attack"</a> <span class="cs1-format">(PDF)</span>. <i>Proceedings of the 6th ACM Symposium on Information, Computer and Communications Security</i>. ACM. pp. <span class="nowrap">30–</span>40. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1966913.1966919">10.1145/1966913.1966919</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-4503-0564-8" title="Special:BookSources/978-1-4503-0564-8"><bdi>978-1-4503-0564-8</bdi></a>. Archived from <a rel="nofollow" class="external text" href="https://web.comp.nus.edu.sg/~liangzk/papers/asiaccs11.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2017-08-07<span class="reference-accessdate">. Retrieved <span class="nowrap">2017-08-07</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.atitle=Jump-oriented+programming%3A+a+new+class+of+code-reuse+attack&rft.btitle=Proceedings+of+the+6th+ACM+Symposium+on+Information%2C+Computer+and+Communications+Security&rft.pages=%3Cspan+class%3D%22nowrap%22%3E30-%3C%2Fspan%3E40&rft.pub=ACM&rft.date=2011&rft_id=info%3Adoi%2F10.1145%2F1966913.1966919&rft.isbn=978-1-4503-0564-8&rft.aulast=Bletsch&rft.aufirst=Tyler&rft.au=Jiang%2C+Xuxian&rft.au=Freeh%2C+Vince+W&rft.au=Liang%2C+Zhenkai&rft_id=https%3A%2F%2Fweb.comp.nus.edu.sg%2F~liangzk%2Fpapers%2Fasiaccs11.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFThe_Go_Programming_Language2015" class="citation cs2">The Go Programming Language (2015-12-01), <a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=PAAkCSZUG1c"><i>Go Proverbs – Rob Pike – Gopherfest – November 18, 2015</i></a>, <a rel="nofollow" class="external text" href="https://ghostarchive.org/varchive/youtube/20211222/PAAkCSZUG1c">archived</a> from the original on 2021-12-22<span class="reference-accessdate">, retrieved <span class="nowrap">26 February</span> 2016</span></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Go+Proverbs+%E2%80%93+Rob+Pike+%E2%80%93+Gopherfest+%E2%80%93+November+18%2C+2015&rft.date=2015-12-01&rft.au=The+Go+Programming+Language&rft_id=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DPAAkCSZUG1c&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACode+reuse" class="Z3988"></span></span> </li> </ol></div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Code_reuse&action=edit&section=16" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="http://wfrakes.wordpress.com">ReNews – an information site about software reuse and domain engineering</a></li> <li><a rel="nofollow" class="external text" href="http://www.infoq.com/articles/vijay-narayanan-software-reuse">Software Reuse Tips Article</a></li></ul> <!-- NewPP limit report Parsed by mw‐api‐ext.codfw.main‐78fbcd97d5‐cb2d6 Cached time: 20250210215145 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.391 seconds Real time usage: 0.572 seconds Preprocessor visited node count: 2630/1000000 Post‐expand include size: 48615/2097152 bytes Template argument size: 3096/2097152 bytes Highest expansion depth: 15/100 Expensive parser function count: 10/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 57358/5000000 bytes Lua time usage: 0.209/10.000 seconds Lua memory usage: 6758298/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 511.965 1 -total 47.90% 245.254 1 Template:Reflist 17.85% 91.361 5 Template:Cite_web 16.76% 85.815 3 Template:Cite_journal 13.85% 70.897 4 Template:Citation_needed 13.62% 69.752 1 Template:TODAY 11.35% 58.108 1 Template:Short_description 10.03% 51.372 4 Template:Fix 7.33% 37.502 2 Template:Ambox 6.92% 35.424 1 Template:More_citations_needed_section --> <!-- Saved in parser cache with key enwiki:pcache:1086559:|#|:idhash:canonical and timestamp 20250210215218 and revision id 1275068550. Rendering was triggered because: page-edit --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&type=1x1&usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Code_reuse&oldid=1275068550">https://en.wikipedia.org/w/index.php?title=Code_reuse&oldid=1275068550</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Programming_principles" title="Category:Programming principles">Programming principles</a></li><li><a href="/wiki/Category:Repurposing" title="Category:Repurposing">Repurposing</a></li><li><a href="/wiki/Category:Computer_libraries" title="Category:Computer libraries">Computer libraries</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_February_2023" title="Category:Articles with unsourced statements from February 2023">Articles with unsourced statements from February 2023</a></li><li><a href="/wiki/Category:Articles_needing_additional_references_from_April_2015" title="Category:Articles needing additional references from April 2015">Articles needing additional references from April 2015</a></li><li><a href="/wiki/Category:All_articles_needing_additional_references" title="Category:All articles needing additional references">All articles needing additional references</a></li><li><a href="/wiki/Category:Articles_to_be_expanded_from_April_2015" title="Category:Articles to be expanded from April 2015">Articles to be expanded from April 2015</a></li><li><a href="/wiki/Category:All_articles_to_be_expanded" title="Category:All articles to be expanded">All articles to be expanded</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_April_2015" title="Category:Articles with unsourced statements from April 2015">Articles with unsourced statements from April 2015</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 10 February 2025, at 21:51<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Code_reuse&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" lang="en" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia"> <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <div class="vector-sticky-header-context-bar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-main">Code reuse</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>15 languages</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>Add topic</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-7878cd4448-mtkrg","wgBackendResponseTime":153,"wgPageParseReport":{"limitreport":{"cputime":"0.391","walltime":"0.572","ppvisitednodes":{"value":2630,"limit":1000000},"postexpandincludesize":{"value":48615,"limit":2097152},"templateargumentsize":{"value":3096,"limit":2097152},"expansiondepth":{"value":15,"limit":100},"expensivefunctioncount":{"value":10,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":57358,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 511.965 1 -total"," 47.90% 245.254 1 Template:Reflist"," 17.85% 91.361 5 Template:Cite_web"," 16.76% 85.815 3 Template:Cite_journal"," 13.85% 70.897 4 Template:Citation_needed"," 13.62% 69.752 1 Template:TODAY"," 11.35% 58.108 1 Template:Short_description"," 10.03% 51.372 4 Template:Fix"," 7.33% 37.502 2 Template:Ambox"," 6.92% 35.424 1 Template:More_citations_needed_section"]},"scribunto":{"limitreport-timeusage":{"value":"0.209","limit":"10.000"},"limitreport-memusage":{"value":6758298,"limit":52428800}},"cachereport":{"origin":"mw-api-ext.codfw.main-78fbcd97d5-cb2d6","timestamp":"20250210215145","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Code reuse","url":"https:\/\/en.wikipedia.org\/wiki\/Code_reuse","sameAs":"http:\/\/www.wikidata.org\/entity\/Q771245","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q771245","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2004-10-20T16:37:54Z","dateModified":"2025-02-10T21:51:45Z","headline":"use of existing software, or software knowledge, to build new software, following the reusability principles"}</script> </body> </html>