Code reuse

[1][2]: 7  An asset that is relatively easy to reuse and offers significant value is considered to have high reusability.

Code reuse may be achieved different ways depending on a complexity of a programming language chosen and range from a lower-level approaches like code copy-pasting (e.g. via snippets),[3] simple functions (procedures or subroutines) or a bunch of objects or functions organized into modules (e.g. libraries)[4][2]: 7  or custom namespaces, and packages, frameworks or software suites in higher-levels.

[citation needed] At least one study found that code reuse at the class level reduces technical debt.

Code reuse aims to save time and resources and reduce redundancy by taking advantage of assets that have already been created in some form within the software product development process.

Some characteristics that make software more easily reusable are modularity, loose coupling, high cohesion, information hiding and separation of concerns.

While organizations can realize time to market benefits for a new product with this approach, they can subsequently be saddled with many of the same code duplication problems caused by cut and paste programming.

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 object-oriented programming, which became one of the most common forms of formalized reuse.

However, fork-reuse can have benefits such as isolation, flexibility to change the reused code, easier packaging, deployment and version management.

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.

Retrocomputing encompasses reuse of code, simply because retro programs are being run on older computers, or emulators for them.

He believes that Google's codebase still suffers from results of that former policy in terms of compilation speed and maintainability.