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))
0
A
回答
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'
1
重构为什么目的?你是否得到错误,想要做其他事情,或者...?假设正确的导入和URL调度围绕此,我没有看到任何必须重构的应用程序引擎 - 所以,不要让我们猜测!)
1
由于两个类是相同的除了一个字符串('index.html'与'gadget.xml')是否可以将其中一个作为另一个的子类,并将这两个字符串作为类常量?
1
使它成为相同的类,并使用GET或POST参数来决定要呈现哪个模板。
相关问题
- 1. 如何重构此代码
- 2. 如何重构此代码?
- 3. 如何重构此Objective-C代码
- 4. 重构此javascript代码
- 5. 如何使这个C#代码很小或重构此代码
- 6. 如何重复此代码
- 7. 重构此Python代码以简化重复的简单方法
- 8. 小Python代码重构
- 9. 重构此代码为ARC遵守
- 10. 如何重构scala代码?
- 11. 如何更好地构建此代码?
- 12. 如何优化此dijkstra结构代码?
- 13. 如何使用Ruby元编程来重构此通用代码?
- 14. 如何重构此ForEach(..)代码以使用Parallel.ForEach(..)?
- 15. 如何重构此代码块以简化和动态?
- 16. 如何处理重构此代码(C#,Types)
- 17. 骨干 - 如何重构此代码以防止鬼视图?
- 18. 如何最好地重构此C#代码?
- 19. Rails 3 - 如何重构此控制器代码?
- 20. 如何构造此代码以避免重复?
- 21. 我将如何重构此代码使用特效?
- 22. 避免反思 - 如何最好地重构此代码?
- 23. Python:如何优化此代码
- 24. Python - 如何使此代码异步?
- 25. 如何在Python中优化此代码
- 26. 如何优化此Python代码?
- 27. Python,如何优化此代码
- 28. 重构此代码块之间的Ruby/Rails代码
- 29. 如何删除此重复的代码
- 30. 如何重用此C#代码?
有很多代码的重复,你看不出来?这是丑陋的,不太可读,并具有较差的维护性。为清晰起见, – 2009-07-24 01:14:39
已删除“for AppEngine” – 2009-07-24 01:15:32