В команде моей компании у нас много дискуссий о том, как лучше добиться цели. Одна из этих дискуссий была о gometalinter, все в моей команде согласны с тем, что линтеры довольно хороши для поддержания качества исходного кода. Но в gometalinter есть линтер, который мне очень не понравился, и называется он E«rrcheck».
Errcheck — это линтер, который проверяет, проверяете ли вы каждую функцию, которая возвращает ошибку, в 99,9% случаев важно проверять ошибки, но не всегда!
Пример ниже, ясно, что вам нужно проверить ошибку (конкретный сценарий)…
f, err := os.Create("/tmp/dat2") if err != nil { doSomething() } ...
но, например, может быть, вам не нужно лечить эту ошибку (конкретный сценарий)…
var b bytes.Buffer //Fprintf returns an error fmt.Fprintf( &b, "%s=%s", sanitizeCookieName(c.Name), sanitizeCookieValue(c.Value), )
Если вы мне не верите, пример выше взят из исходного кода golang.
Некоторые советы:
- Если ошибка может сломать ваше приложение, вы должны устранить эту ошибку.
- Вы не знаете, может ли ошибка сломать ваш код, все равно лечите, так безопаснее.
- Если ошибка не может сломать ваш код, иногда вы должны регистрировать ошибку, но не всегда.
Я пытаюсь сказать, что не расстраивайтесь, если вы не будете обрабатывать каждую ошибку, потому что некоторые ошибки вам действительно не нужны.
Самое приятное в обсуждении было то, что мы обнаружили, что линтер Errcheck может отключать проверку ошибок для некоторых функций, вам просто нужно настроить. Теперь мне нравится errcheck… хахахаха
Удачного кодирования!