0
У меня есть небольшой фрагмент кода, и я думаю о рефакторинге. Я на самом деле не нравится в части sort_paths_by_date
метода DRY: Из-принципа и кода ясности:Рефакторинг фрагментов Python
from os.path import getctime, getmtime
class Endpoint(object):
def __init__(self, define_path_by, paths):
self.define_path_by = define_path_by
self.paths = paths
def sort_paths_by_date(self):
if self.define_path_by == 'ctime':
self.paths = sorted(
self.paths,
key=lambda cur_path: getctime(cur_path.path),
)
elif self.define_path_by == 'mtime':
self.paths = sorted(
self.paths,
key=lambda cur_path: getmtime(cur_path.path),
)
и я сделать это следующим образом:
from os.path import getctime, getmtime
class Endpoint(object):
def __init__(self, define_path_by, paths):
self.define_path_by = define_path_by
self.paths = paths
def sort_paths_by_date(self):
def sort_with_func(func):
return sorted(
self.paths,
key=lambda cur_path: func(cur_path.path)
)
if self.define_date_by == 'ctime':
self.paths = sort_with_func(getctime)
elif self.define_date_by == 'mtime':
self.paths = sort_with_func(getmtime)
Но теперь я не уверен, что функции определение в методе, и снова ясность кода смущает меня. Поэтому я буду благодарен за ваш опыт рефакторинга.