Credence.Rule.NoSortThenReverse (credence v0.2.0)

Copy Markdown

Performance & readability rule: Detects the pattern of calling Enum.sort/1 followed by Enum.reverse/1 on the result.

Sorting ascending then reversing is equivalent to Enum.sort(list, :desc) (or Enum.sort(list, &>=/2)) but wastes a full O(n) pass for the reversal.

Bad

sorted = Enum.sort(nums)
top = Enum.reverse(sorted)

# or in a pipeline
nums |> Enum.sort() |> Enum.reverse()

Good

sorted_desc = Enum.sort(nums, :desc)