Самый простой способ писать хороший код заключается в том, чтобы не употреблять в своих программах «антипаттерны». Собственно, об этом и идёт речь в этой полезной статьеА вот некоторые из обсуждаемых антипаттернов:🟡Возврат значения неэкспортируемого типа из экспортируемой функции// Не рекомендовано type unexportedType string func ExportedFunc() unexportedType { return unexportedType("some string") } // Рекомендовано type ExportedType string func ExportedFunc() ExportedType { return ExportedType("some string") }🟡Неоправданное использование пустых идентификаторовидентификаторов // Не рекомендовано for _ = range sequence { run() } x, _ := someMap[key] _ = <-ch // Рекомендовано for range something { run() } x := someMap[key] <-ch🟡Ненужное выражение return в функциях// Бесполезное выражение return, не рекомендовано func alwaysPrintFoofoo() { fmt.Println("foofoo") return } // Рекомендовано func alwaysPrintFoo() { fmt.Println("foofoo") }// Бесполезное выражение return, не рекомендовано // Бесполезное выражение return, не рекомендовано func alwaysPrintFoofoo() { fmt.Println("foofoo") return } // Рекомендовано func alwaysPrintFoo() { fmt.Println("foofoo") }🟡Ненужные команды break в выражениях switch// Не рекомендовано switch s { case 1: fmt.Println("case one") break case 2: fmt.Println("case two") } // Рекомендовано switch s { case 1: fmt.Println("case one") case 2: fmt.Println("case two") }📎 Читать дальшеВ своем канале я разобрал 1900 вопросов с собеседований Go разработчика, все любите Go - заходите в гости.