Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iter8 #8

Merged
merged 12 commits into from
Dec 27, 2022
Merged

Iter8 #8

merged 12 commits into from
Dec 27, 2022

Conversation

alexunder123
Copy link
Owner

Инкремент №8

Copy link
Collaborator

@capsulated capsulated left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно создать два пакета - Config и Storage, переместить в них всё, что связано с их областью ответственности, и передавать экземпляр остальным (в конструкторы других структур, например роутер и тп), кому необходимы эти методы

"shortURL/internal/handlers"
)

func main() {
r := handlers.NewRouter()
Params := app.GetEnv()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а зачем с большой буквы имя переменной?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И если это конструктор (возвращает экземпляр структуры), то нужно именовать New<имя_создаваемой_сущности), подробнее тут

  • также, как NewRouter() и также с ним работать

@@ -0,0 +1,82 @@
package app
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Имя файла вдруг в CamelCase, хотя остальные snake_case (обычно именно его используют)

И DB методы в пакете app? Так не пойдёт, надо отдельный пакет создавать, а то "каша" будет

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И вообще для хранилки - фабрика нужна. Скинул в группу ссылку с примером

"shortURL/internal/handlers"
)

func main() {
r := handlers.NewRouter()
Params := app.GetEnv()
Params.OpenDB()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpenDB в пакете app точно не место. EVN и flags ещё можно оставить (но их по-хорошему бы в независимый пакет для конфига). Но DB - это точно отдельный контроллер (controller / facade / repository и тп паттерны)

BaseURL = make(map[string]string)
)

type DBstring struct {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Имя переменной должно точно отражать, о функциональности переменной, а не реализации. Тоесть: dbSlice, dbStruct, dataMap и тому подобное - плохой нейминг. Нужно что-то, что отражает именно эту переменную - ShortenUrls, URLList или что-то подобное.

decoder *json.Decoder
}

func NewReaderDB(P *Param) (*readerDB, error) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У нас, всё же, не база данных, а файловый reader/writer

encoder *json.Encoder
}

func NewWriterDB(P *Param) (*writerDB, error) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Всё же отдельный пакет нужен, Storage, иначе что-то "страшное" получается. Надо использовать паттерн Фабрика, только интерфейс назвать Storager

"github.com/caarlos0/env/v6"
)

type Param struct {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это почти везде - Config

Copy link
Collaborator

@capsulated capsulated left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Супер всё, молодец, прям разобрался в коментах, постарался, молоток)

Пару моментов с неймингом, но это вообще мелочи: по имени конфига предложение, по конструктору стораджа точно лучше NewStorage (а не NewStorager), так как в итоге всё же структуру вернём, который удовлетворяет интерфейсу.

Всё круто, апрув, в след спринте исправить 5 сек

)

func main() {
r := handlers.NewRouter()
params := config.NewEnv()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Config обычно всегда config. Приблизительно так будет читабельней:

c := config.NewConfig()

@alexunder123 alexunder123 merged commit 4eadf5b into main Dec 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants