如何重构这段Python代码?
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用它。这个过程可能会涉及到很多步骤,比如连接到数据库、查询数据、处理数据等等。
有些时候,我们会遇到一些错误或者问题,这时候就需要调试,也就是找出问题出在哪里。调试的过程可能会让人感到困惑,但其实就是一步一步地检查代码,看看哪里不对。
在这个过程中,使用一些工具和方法可以帮助我们更快地找到问题,比如打印一些信息到屏幕上,或者使用调试器来逐行检查代码的执行情况。
总之,编程就像是解决一个个小谜题,遇到问题时不要着急,慢慢来,找到解决办法就好。
class MainPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
tasks_query = Task.all()
tasks = tasks_query.fetch(1000)
if user:
url = users.create_logout_url(self.request.uri)
else:
url = users.create_login_url(self.request.uri)
template_values = {
'tasks': tasks,
'url': url
}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
class Gadget(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
tasks_query = Task.all()
tasks = tasks_query.fetch(1000)
if user:
url = users.create_logout_url(self.request.uri)
else:
url = users.create_login_url(self.request.uri)
template_values = {
'tasks': tasks,
'url': url
}
path = os.path.join(os.path.dirname(__file__), 'gadget.xml')
self.response.out.write(template.render(path, template_values))
4 个回答
1
这两个类除了一个字符串('index.html' 和 'gadget.xml')以外,其他都是一样的。那有没有可能把一个类变成另一个类的子类,然后把那个字符串作为一个类常量放在两个类里呢?
1
重构是为了什么呢?你是遇到错误了,想做别的事情,还是其他原因?假设你已经正确引入了需要的库,并且处理好了网址的分发,我觉得这里没有什么必须要重构的地方,所以别让我们猜来猜去了!
6
其实这要看你未来希望这两个类之间有什么共同点。重构的目的是找出共同的抽象概念,而不是单纯减少代码行数。
也就是说,如果假设这两个请求只是在模板上有所不同:
class TaskListPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
tasks_query = Task.all()
tasks = tasks_query.fetch(1000)
if user:
url = users.create_logout_url(self.request.uri)
else:
url = users.create_login_url(self.request.uri)
template_values = {
'tasks': tasks,
'url': url
}
path = os.path.join(os.path.dirname(__file__), self.template_name())
self.response.out.write(template.render(path, template_values))
class MainPage(TaskListPage):
def template_name(self):
return 'index.html'
class Gadget(TaskListPage):
def template_name(self):
return 'gadget.xml'