LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

И я прошу обратить внимание на вот это код:

func foo() (res *Z, err error) {
  res, err = bar()
  if err != nil {
    return }}
  doSomethingElse()
  return }
Ничем не отличается от простого пропуска исключения вверх без обработки. Если мы сделаем, что bar будет паниковать с тем же значением err, а не возвращать err, код запишется так:
func foo() (res *Z) {
  res = bar()
  doSomethingElse() 
  return }
Было 33 лексемы, осталось только 20. Т.е. код стал более чем в полтора раза компактнее, считая по числу лексем, гораздо более понятным и читаемым. Т.е. вопрос с точки зрения производительности труда совершенно непраздный. Конечно, обработка ошибки в обоих случаях осталась за скобками. Но ведь мы её в обоих случаях не обрабатываем, а всего лишь передаём вниз по стеку.

Исходная версия den73, :

И я прошу обратить внимание на вот это код:

func foo() (res *Z, err error) {
  res, err = bar()
  if err != nil {
    return }}
  doSomethingElse()
  return }
Ничем не отличается от простого пропуска исключения вверх без обработки, который при использовании паники пишется так:
func foo() (res *Z) {
  res = bar()
  doSomethingElse() 
  return }
Было 33 лексемы, осталось только 20. Т.е. код стал более чем в полтора раза компактнее, считая по числу лексем, гораздо более понятным и читаемым. Т.е. вопрос с точки зрения производительности труда совершенно непраздный. Конечно, обработка ошибки в обоих случаях осталась за скобками. Но ведь мы её в обоих случаях не обрабатываем, а всего лишь передаём вниз по стеку.