вторник, 5 марта 2019 г.

Go Code Review Comments: Именованные параметры результата

При использовании именованных параметров результата учитывайте как это будет выглядеть в godoc. Например, именованные параметры результата, такие как:

func (n *Node) Parent1() (node *Node)
func (n *Node) Parent2() (node *Node, err error)

будут иметь проблемы в godoc; лучше использовать:

func (n *Node) Parent1() *Node
func (n *Node) Parent2() (*Node, error)

С другой стороны, если функция возвращает два или три параметра одного и того же типа или если значение результата неясно из контекста, добавление имен может быть полезно в некоторых контекстах. Не называйте параметры результата только для того, чтобы избежать объявления переменной внутри функции; это заменяет небольшую краткость реализации ценой ненужного многословия API.

func (f *Foo) Location() (float64, float64, error)

не так ясно как:

// Местоположение возвращает широту и долготу f.
// Отрицательные значения означают юг и запад соответственно.
func (f *Foo) Location() (lat, long float64, err error)

Безыменные возвраты это нормально, если функция состоит из нескольких строк. Как только это функция среднего размера, будьте явными со своими возвращаемыми значениями. Следствие: не стоит называть параметры результата только потому, что это позволяет вам использовать безыменные результаты. Ясность документов всегда важнее, чем сохранение одной или двух строк в вашей функции.

Наконец, в некоторых случаях вам нужно назвать параметр результата, чтобы изменить его в отложенном замыкании. Это всегда хорошо.


Читайте также:


Комментариев нет:

Отправить комментарий