Refactoren
Refactoren (Engels: refactoring) is het herstructureren van de broncode van een computerprogramma met als doel de leesbaarheid en onderhoudbaarheid te verbeteren of het stuk code te vereenvoudigen. Het refactoren van broncode verandert de werking van de software niet: elke refactorstap is een kleine, ongedaan te maken stap die de leesbaarheid verhoogt zonder de werking aan te passen. Het wordt met name gebruikt bij extreme programming, een vorm van agile-softwareontwikkeling.

Software refactoring 
Refactoren wordt met name gedaan in objectgeoriënteerde programmeertalen als C++, Java en C#. Voorbeelden van refactoren zijn:

 hernoemen van methods, variabelen en klassen
 constructors vervangen door factory methods
 omzetten van classes met alleen static methods in een singleton
 generaliseren van (delen) van klassen naar een basis-type
 inkapselen van publieke variabelen door functies (data-hiding)

Moderne IDE's zoals NetBeans en Eclipse JDT en een tiental anderen ondersteunen refactoren, zodat de refactoring altijd compleet wordt uitgevoerd. Hierbij is het van belang dat ook het bijbehorende commentaar bijgewerkt wordt.

Hardware refactoring 
De term "refactoring" werd vroeger enkel gebruikt voor software, maar in de afgelopen jaren werd ook programmacode in hardwarebeschrijvingstalen (HDL's) gerefactord. De term hardware refactoring wordt gebruikt als een handige afkorting voor refactoren van code in hardwarebeschrijvingstalen. Aangezien HDLs door de meeste elektrotechnisch ingenieurs niet als een programmeertaal beschouwd worden, kan men hardware refactoring zien als een aparte techniek ten opzichte van traditionele code refactoring.

Zeng en Huss introduceerden het automatisch refactoren van analoge hardwarebeschrijvingen in de VHDL-AMS taal. In hun aanpak behoudt een refactoring het gesimuleerde gedrag van het hardwareontwerp. De niet-functionele verbetering is dat de nieuwe code verder verwerkt kan worden door standaard synthese-tools, terwijl dit met de originele code niet mogelijk was. Een hooggeplaatste ingenieur van het technologiebedrijf Synopys, Mike Keating, heeft onderzoek gedaan naar het refactoren van digitale HDL code. Het is zijn doelstelling om complexe systemen zo te maken dat ze gemakkelijker begrepen kunnen worden, waardoor de productiviteit van de ingenieurs kan verbeteren.

Er zijn tools op de markt voor hardware-refactorings.

Programmeren
Agile-softwareontwikkeling