Skip to content

Instantly share code, notes, and snippets.

@hmaddocks
Created June 21, 2024 01:06
Show Gist options
  • Save hmaddocks/a126dedb44c72f308912a1f6b8790ff9 to your computer and use it in GitHub Desktop.
Save hmaddocks/a126dedb44c72f308912a1f6b8790ff9 to your computer and use it in GitHub Desktop.
Refactor Code Found on LinkedIn
# Case 2: Refactor code
class ProjectsCount
def initialize(projects)
@projects = projects
end
def self.call(projects)
new(projects).call
end
def call
nda_projects = []
not_nda = []
projects.map do |project|
nda_projects << project if project.name == 'NDA-Project'
not_nda << project if project.name != 'NDA-Project'
end
count(not_nda, nda_projects)
end
private
attr_reader :projects
def count(not_nda, nda_projects)
count = (not_nda.uniq + nda_projects).count
"#{count} project"
end
end
Project = Struct.new(:name)
projects = [Project.new("NDA-Project"), Project.new("NDA-Project"), Project.new("Foo-Project"), Project.new("NDA-Project"), Project.new("Foo-Project")]
counter = ProjectsCount.call(projects)
p counter
def projects_count(projects)
nda, not_nda = projects.partition { |project| project.name == 'NDA-Project' }
"#{nda.count + not_nda.uniq.count} project".pluralize
end
p projects_count(projects)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment