Когда приходится влазить в старый код, самое неприятное препятствие для внесения изменений - отсутствие слоев. Есть "api -> model -> storage" Самое худшее - когда одна структура отвечает за все: и за маппинг на БД, и за ответ в АПИ, например: type Model struct { ID int `json:"id" db:"id"` Field string `json:"field" db:"field"` } В идеале, json тэги должны быть на полях отдельной структуре ответа, а db тэги на отельной структуре-сущности, структура-модель без тегов (тэги в го это знак того, что структура используется для десериализации json/чего-то еще). В худшем случае, когда все на одной структуре, ты не можешь даже изменить поля в БД, не задев АПИ. В лучшем случае же (когда слои есть) кажется, что все это избыточно: респонс повторяет поля модели, модель повторяет поля сущности. Но это только кажется избыточным: этот подход позволяет менять БД на ходу, вводить новые версии АПИ и делать что угодно, не задевая старый код.
Когда приходится влазить в старый код, самое неприятное препятствие для внесения изменений - отсутствие слоев
11 мая 202511 мая 2025
~1 мин