Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Code refactoring
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History== The first known use of the term "refactoring" in the published literature was in a September, 1990 article by [[William Opdyke]] and [[Ralph Johnson (computer scientist)|Ralph Johnson]].<ref name="opdyke90">{{cite conference | first = William F. | last = Opdyke | author-link = William Opdyke |author2=Johnson, Ralph E. | title = Refactoring: An Aid in Designing Application Frameworks and Evolving Object-Oriented Systems | book-title = Proceedings of the Symposium on Object Oriented Programming Emphasizing Practical Applications (SOOPPA) | publisher = ACM |date=September 1990 }}</ref> Although refactoring code has been done informally for decades, [[Bill Griswold|William Griswold]]'s 1991 Ph.D. dissertation<ref name="griswold-thesis">{{cite thesis | first = William G | last = Griswold | author-link = Bill Griswold | title = Program Restructuring as an Aid to Software Maintenance | degree = Ph.D. | publisher = University of Washington |date=July 1991 | url = http://cseweb.ucsd.edu/~wgg/Abstracts/gristhesis.pdf | access-date = 2011-12-24 }}</ref> is one of the first major academic works on refactoring functional and procedural programs, followed by [[William Opdyke]]'s 1992 dissertation<ref name="opdyke-thesis">{{cite thesis | first = William F | last = Opdyke | author-link = William Opdyke | title = Refactoring Object-Oriented Frameworks | degree = Ph.D. | publisher = University of Illinois at Urbana-Champaign | date = June 1992 | url = http://dl.acm.org/citation.cfm?id=169783 | archive-url = https://web.archive.org/web/20191216212919/https://dl.acm.org/citation.cfm?id=169783 | archive-date = 2019-12-16 | format = compressed Postscript | access-date = 2008-02-12 | url-status = bot: unknown }}</ref> on the refactoring of object-oriented programs,<ref name="etymology">{{cite web| url = http://martinfowler.com/bliki/EtymologyOfRefactoring.html| title = Martin Fowler, "MF Bliki: EtymologyOfRefactoring"}}</ref> although all the theory and machinery have long been available as [[program transformation]] systems. All of these resources provide a catalog of common methods for refactoring; a refactoring method has a description of how to apply the [[Scientific method|method]] and indicators for when you should (or should not) apply the method. [[Martin Fowler (software engineer)|Martin Fowler]]'s book ''Refactoring: Improving the Design of Existing Code'' is the canonical reference. {{According to whom|date=July 2018}} The terms "factoring" and "factoring out" have been used in this way in the [[Forth (programming language)|Forth]] community since at least the early 1980s. Chapter Six of [[Leo Brodie (programmer)|Leo Brodie]]'s book ''[[Thinking Forth]]'' (1984)<ref>{{cite book |last1=Brodie |first1=Leo |title=Thinking Forth |year=2004 |isbn=0-9764587-0-5 |pages=171β196 |publisher=Fig Leaf Press, Forth Interest |url=http://thinking-forth.sourceforge.net |access-date=3 May 2020 |archive-url=https://web.archive.org/web/20051216163615/http://thinking-forth.sourceforge.net/ |archive-date=16 December 2005 |url-status=dead }}</ref> is dedicated to the subject. In extreme programming, the Extract Method refactoring technique has essentially the same meaning as factoring in Forth; to break down a "word" (or [[Function (programming)|function]]) into smaller, more easily maintained functions. Refactorings can also be reconstructed<ref name="What-is-code-refactoring?">{{cite news | first = Andriy | last = Sokolov | title = What is code refactoring? | url = https://duecode.io/blog/what-is-code-refactoring/ }}</ref> posthoc to produce concise descriptions of complex software changes recorded in software repositories like [[Git]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)