Найти в Дзене
BeGeek

Несколько советов по написанию main.go в Go.

Если Вы хоть раз писали на Go, то наверняка знаете, что main функция может быть всего одна и она находится в main.go. Давайте посмотрим на несколько советов по написанию наиболее читаемого, легковесного main.go файла:

  1. Не писать в main.go все и вся. Я бы порекомендовал в main.go записать только создание экземпляров основных реализаций (функций / структур / методов и др. ), чтение или инициализацию переменных. С большим main.go будет с каждым разом все сложнее и сложнее работать.
  2. Не писать основные реализации (функции / методы и др.) в main.go. По сути это продолжение первого пункта - нельзя все пихать в main.go. Если функции / методы / структуры и др. понадобятся где-то в других частях кода, то из main.go их нельзя будет вызвать (если говорить про пакеты в Go), поэтому прийдется рефакторить код. Из рефакторинга могут вылезти различные неприятности. Так же структуры / методы / функции, расположенные в собственных пакетах, облегчат их тестирование. И конечно же, если все разложить по своим пакетам и полочкам, то это упростит обслуживание и обновление кода в дальнейшем.
  3. Длинные файлы main.go трудно читаемы и сложны в понимании. Опять возвращаемся к первому пункту - чем меньше main.go, тем проще его обслуживать. То же можно сказать про любой пакет - не надо пихать все в один файл. Человеку сложно хранить в памяти большие объемы не размеченных данных в один момент времени, поэтому стоит все разбивать на логические части. Да и другим разработчикам будет проще обслуживать ваш код.
  4. Тестирование становится не по фэншую. Напоследок про тестирование, хоть и не каждый этим занимается. Можно использовать main_test.go для написания тестов, но писать тесты для main.go не принято. Лучше выделить код в отдельные пакеты / функции и тестировать его там. Так будет удобнее для всех и по best practices.