File tree Expand file tree Collapse file tree
code-review-practice/solutions Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2828
29296 . Нет обработки ` FileNotFoundError ` / ` json.JSONDecodeError ` с внятным сообщением.
3030
31- 7 . ` DEFAULTS ` — мутабельный модульный словарь, любой может его случайно изменить.
31+ 7 . ` DEFAULTS ` — мутабельный модульный словарь, любой может его случайно изменить (см. п.3 —
32+ именно это и происходит). Дефолты стоит сделать неизменяемыми: неглубокие — через
33+ ` MappingProxyType ` , а вложенные списки — кортежами / фабриками, чтобы их нельзя было
34+ мутировать на месте.
3235
33- 8 . Нет типизации / схемы конфига (pydantic-settings решил бы половину проблем).
36+ 8 . Нет типизации / схемы конфига (pydantic-settings решил бы половину проблем: типы,
37+ валидацию, дефолты, чтение из env — вместо самописного класса).
38+
39+ 9 . ** Нет аннотаций типов у методов** (` __init__ ` , ` get ` ). ` path: str ` , ` key: str ` и
40+ возвращаемый тип не описаны — контракт неясен, mypy/IDE не помогут. Даже без полной
41+ схемы конфига сигнатуры стоит типизировать.
3442
3543** Итого:** два тонких бага дефолтов (падение на missing key и затирание falsy-значений)
3644+ мутация общего списка. Мораль: ` if value: ` ≠ «ключ задан»; и общие мутабельные дефолты кусаются.
You can’t perform that action at this time.
0 commit comments