为了账号安全,请及时绑定邮箱和手机立即绑定

避免代码重复

避免代码重复

Go
芜湖不芜 2021-08-30 15:10:07
我正在尝试编写一个 Web 应用程序并努力编写干净的代码。我有一个用于处理传入请求的控制器和所有控制器都将借用字段的基本控制器。这是我的基本控制器type Controller struct {    Request  *http.Request    Response http.ResponseWriter    // Reqeust language    lang string    // HTML parts    Title   string    body    string    head    string    content string    view    string    errors  []string    success []string}// And methods followed herefunc (self *Controller) renderHeadView() { .....和我的注册控制器type Controller struct {    base.Controller    user *account}func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) {    self.Title = "Sign Up"    self.Request = r    self.Response = rw    self.lang = header.Language(self.Request)    self.user = &account{lang: self.lang}    switch self.Request.Method {    case "GET":        self.get()    case "POST":        if err := self.post(); err != nil {            self.get()        } else {            // If everything was successfully            return        }    }    self.RenderResponseView()}和我的激活控制器type Controller struct {    base.Controller}func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) {    self.Title = "Activate account"    self.Request = r    self.Response = rw    self.lang = header.Language(self.Request)    self.RenderResponseView()}如您所见,ServeHTTP 方法看起来几乎相同。我正在考虑将 ServeHTTP 移动到基本控制器中,然后提供一种调用特殊工作的方法。为了澄清我的意思,请查看以下代码片段(基本控制器)func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) {    self.Title = "Activate account"    self.Request = r    self.Response = rw    self.lang = header.Language(self.Request)    // here would come function for special work    function()    self.RenderResponseView()}我不知道如何提供这个实现。如果有人能给我一些建议,我会很高兴。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信