When two functions have the same implementation, either it was a mistake - something else was intended - or the duplication was intentional, but may be confusing to maintainers. In the latter case, the code should be refactored.

== Noncompliant Code Example

[source,javascript]
----
function calculateCode() {
  doTheThing();
  doOtherThing();
  return code;
}

function getName() {  // Noncompliant
  doTheThing();
  doOtherThing();
  return code;
}
----

== Compliant Solution

[source,javascript]
----
function calculateCode() {
  doTheThing();
  doOtherThing();
  return code;
}

function getName() {
  return calculateCode();
}
----

== Exceptions

* Functions with fewer than 3 lines are ignored.

* This rule does not apply to function expressions and arrow functions because they don't have explicit names and are often used in a way where refactoring is not applicable.

[source,javascript]
----
list.map((item) => ({
  name: item.name,
  address: item.address,
  country: item.country
}));
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

include::../highlighting.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
