LINUX.ORG.RU

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

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

1. Получишь панику в defer если с файлом что-то не так

Я кстати специально глянул код os, не получишь

2. Ошибка из file.Close() никак не обрабатывается

Да, не критично. 1) От этого сложно огрести 2) Все равно обычно максимум, что можно сделать - залоггировать эту ошибку

3. Путь к конфигу захардкожен

Да, не критично

4. Условие проверки ошибки открытия файла некорректное

В чем? Я не проверял, но на глаз всё ок.

5. Корректно использовать config := &Config{}, без var

Абсолютно никакой разницы кроме внешнего вида

6. json.NewDecoder нужен для потоковой обработки жсона, здесь правильно скопировать данные с файла в буфер и использовать json.Unmarshal

Неверно. Зачем создавать промежуточный буфер, когда json сам это может прочитать? Предлагаемое тобой решение медленней и потребляет лишнюю память.

7. Функция задизайнена так, что при каждом вызове, конфиг будет заново перечитываться

Естественно, ведь вызывать её нужно только тогда, когда нужно перечитать конфиг - при запуске и reload. Так ли это в сабжевом коде я не смотрел, но по-хорошему делать нужно примерно так.

Исправление derlafff, :

1. Получишь панику в defer если с файлом что-то не так

Я кстати специально глянул код os, не получишь

2. Ошибка из file.Close() никак не обрабатывается

Да, не критично

3. Путь к конфигу захардкожен

Да, не критично

4. Условие проверки ошибки открытия файла некорректное

В чем? Я не проверял, но на глаз всё ок.

5. Корректно использовать config := &Config{}, без var

Абсолютно никакой разницы кроме внешнего вида

6. json.NewDecoder нужен для потоковой обработки жсона, здесь правильно скопировать данные с файла в буфер и использовать json.Unmarshal

Неверно. Зачем создавать промежуточный буфер, когда json сам это может прочитать? Предлагаемое тобой решение медленней и потребляет лишнюю память.

7. Функция задизайнена так, что при каждом вызове, конфиг будет заново перечитываться

Естественно, ведь вызывать её нужно только тогда, когда нужно перечитать конфиг - при запуске и reload. Так ли это в сабжевом коде я не смотрел, но по-хорошему делать нужно примерно так.

Исправление derlafff, :

1. Получишь панику в defer если с файлом что-то не так

Я кстати специально глянул код os, не получишь

2. Ошибка из file.Close() никак не обрабатывается

Да, не критично

3. Путь к конфигу захардкожен

Да, не критично

4. Условие проверки ошибки открытия файла некорректное

В чем?

5. Корректно использовать config := &Config{}, без var

Абсолютно никакой разницы кроме внешнего вида

6. json.NewDecoder нужен для потоковой обработки жсона, здесь правильно скопировать данные с файла в буфер и использовать json.Unmarshal

Неверно. Зачем создавать промежуточный буфер, когда json сам это может прочитать? Предлагаемое тобой решение медленней и потребляет лишнюю память.

7. Функция задизайнена так, что при каждом вызове, конфиг будет заново перечитываться

Естественно, ведь вызывать её нужно только тогда, когда нужно перечитать конфиг - при запуске и reload. Так ли это в сабжевом коде я не смотрел, но по-хорошему делать нужно примерно так.

Исправление derlafff, :

1. Получишь панику в defer если с файлом что-то не так

Я кстати специально глянул код os, не получишь

2. Ошибка из file.Close() никак не обрабатывается

Да, не критично

3. Путь к конфигу захардкожен

Да, не критично

4. Условие проверки ошибки открытия файла некорректное

В чем?

5. Корректно использовать config := &Config{}, без var

Абсолютно никакой разницы кроме внешнего вида

6. json.NewDecoder нужен для потоковой обработки жсона, здесь правильно скопировать данные с файла в буфер и использовать json.Unmarshal

Неверно. Зачем создавать промежуточный буфер, когда json сам это может прочитать? Предлагаемое тобой решение медленней и потребляет лишнюю память.

7. Функция задизайнена так, что при каждом вызове, конфиг будет заново перечитываться

Естественно, ведь вызывать её нужно только тогда, когда нужно перечитать конфиг - при запуске и reload.

Исправление derlafff, :

1. Получишь панику в defer если с файлом что-то не так

Я кстати специально глянул код os, не получишь

2. Ошибка из file.Close() никак не обрабатывается

Да, не критично

3. Путь к конфигу захардкожен

Да, не критично

4. Условие проверки ошибки открытия файла некорректное

В чем?

5. Корректно использовать config := &Config{}, без var

Абсолютно никакой разницы кроме внешнего вида

6. json.NewDecoder нужен для потоковой обработки жсона, здесь правильно скопировать данные с файла в буфер и использовать json.Unmarshal

Неверно. Зачем создавать промежуточный буфер, когда json сам это может прочитать?

7. Функция задизайнена так, что при каждом вызове, конфиг будет заново перечитываться

Естественно, ведь вызывать её нужно только тогда, когда нужно перечитать конфиг - при запуске и reload.

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

1. Получишь панику в defer если с файлом что-то не так

Я кстати специально глянул код `os`, не получишь

2. Ошибка из file.Close() никак не обрабатывается

Да, не критично

3. Путь к конфигу захардкожен

Да, не критично

4. Условие проверки ошибки открытия файла некорректное

В чем?

5. Корректно использовать config := &Config{}, без var

Абсолютно никакой разницы кроме внешнего вида

6. json.NewDecoder нужен для потоковой обработки жсона, здесь правильно скопировать данные с файла в буфер и использовать json.Unmarshal

Неверно. Зачем создавать промежуточный буфер, когда json сам это может прочитать?

7. Функция задизайнена так, что при каждом вызове, конфиг будет заново перечитываться

Естественно, ведь вызывать её нужно только тогда, когда нужно перечитать конфиг - при запуске и reload.