У меня есть вопрос об инструменте Go gofmt , который форматирует автоматически вывод программ в соответствии с официальными спецификациями Go (например, вы не можете спорить о том, где скобки должны идти в Go, потому что это, видимо, зафиксировано спецификациями).
На следующей странице:
http://golang.org/doc/effective_go.html
в абзаце «Форматирование» написано, что:
В качестве примера, нет необходимости тратить время на выстраивание комментариев на поля структуры. Гофм сделает это для тебя. Учитывая объявление
type T struct {
name string // name of the object
value int // its value
}
gofmt выстроит столбцы:
type T struct {
name string // name of the object
value int // its value
}
Однако я не понимаю, как это могло бы сыграть хорошо с diff и VCSes.
Например, если бы у меня была новая строка:
confuzzabler int // doo doo be doo
и я запустил diff , я должен был бы получить следующее:
2d1
< confuzzabler int // doo doo be doo
7d5
<
И жизнь была бы все хорошо: diff показывает единственную линию, которая изменилась.
Однако если я снова запускаю gofmt , я получил следующее:
type T struct {
confuzzabler int // doo doo be doo
name string // name of the object
value int // its value
}
И теперь я повторно запускаю diff и получаю следующее:
2,4c2,3
< confuzzabler int // doo doo be doo
< name string // name of the object
< value int // its value
---
> name string // name of the object
> value int // its value
7d5
<
Что является очень запутанным и вводящим в заблуждение diff выводом, потому что изменилась только одна строка.
Как вы имеете дело с этим как разработчик Движения?