== Why is this an issue?

:func_name: function

include::../description.adoc[]

[source,javascript,diff-id=1,diff-type=noncompliant]
----
function calculateCode() {
  doTheThing();
  doOtherThing();
  return code;
}

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

include::../inter.adoc[]

[source,javascript,diff-id=1,diff-type=compliant]
----
function calculateCode() {
  doTheThing();
  doOtherThing();
  return code;
}

function getName() { // Intent is clear
  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[]
