2017-09-24 11 views
2

私はGoアプリケーションを開発するためにAtomを使用しています。 AtomのLinterは奇妙な警告を報告していますが、それがどのように問題であるかわかりません。私は永遠に警告を無視すべきか、あるいは私が実装できる別の方法がありますか?linterからのgoconst警告

私は、ファイル内の "app.go" のようなルートを持っている:、私の "routes_pages.go" ファイルで

a.Router.HandleFunc("/login", a.PageLogin) 
a.Router.HandleFunc("/register", a.PageRegister) 
a.Router.HandleFunc("/event/add", a.PageEventCreate) 

私はそうのように定義されたのfuncsを持っている:

func (a *App) PageEventCreate(w http.ResponseWriter, r *http.Request) { 

    switch r.Method { 
     case "GET": 
      // Serve the resource. 
     case "POST": 
      // Create a new record. 
     case "PUT": 
      // Update an existing record. 
     case "DELETE": 
      // Remove the record. 
     default: 
      // Give an error message. 
    } 

} 



func (a *App) PageLogin(res http.ResponseWriter, req *http.Request) { 
     switch r.Method { 
      case "GET": 
       // Serve the resource. 
      case "POST": 
       // Create a new record. 
      case "PUT": 
       // Update an existing record. 
      case "DELETE": 
       // Remove the record. 
      default: 
       // Give an error message. 
     } 

} 

私はこのように多くの機能を設定しています。 1つの場所でどのような場合(GET、POSTなど)でも簡単に作業できます。

AtomのLinterに問題があります。

Warning goconst 3 other occurrence(s) of "GET" found in: routes_pages.go:384:8 routes_pages.go:443:7 routes_pages.go:536:7 (goconst) 198:8 

この警告は何度も表示されます。 GET、PUT、DELETEなどのスイッチ/ケースのインスタンスごとに1回。巨大なリスト。

それはあなたがしているだけの警告だ

答えて

5

...私はアトムに警告を「無視」に明らかな方法を参照していないので、私はちょうどより深刻な警告のために素晴らしいではありませんリンターを、無効にするように感じます複数の場所で同じ文字列リテラルを再使用する。これは、文字列リテラルが気づかずにスペルミスを起こしやすいため、問題になる可能性があります。解決方法は、代わりに定数を使用することです。これは、すべての(標準)HTTP動詞が既にhttpパッケージによってエクスポートされた定数であるため、あなたのケースでは非常に簡単になります。代わりに文字列リテラルを更新してください。

定数を使用すると、誤った入力ミスを防ぐことができます。例:

req, err := http.NewRequest("DLETE", ...) 

は、コンパイル時エラーが発生していないでしょう(とも、あなたのプログラムのロジックの残りの部分に応じて、実行時エラーが発生しないかもしれません)が、

req, err := http.NewRequest(http.MethodDlete, ...) 

が失敗しますコンパイル。

関連する問題