Em làm việc tại công ty X được 3 năm, ae toàn senior.
Tại 1 công ty Y em mới vào, tình hình là em và ae có một số ý kiến bất đồng trong việc phân tách các layers gồm Repository / Service và Controller/Serverless Func
Các bác lâu năm exp cho em hướng xử lý trong case này với.
Sơ sơ tình hình là với vấn đề trên, em sẽ chia ra các layer với reponsibility khác nhau.
1. Repo: sẽ làm việc với SQL và map vào entity. thực hiện các tác vụ với DB của 1 table nào đó
(ví dụ: UserRepo sẽ làm việc với UserEntity và thực hiện các thao tác thêm xóa sửa đối với bảng User)
2. Service: sẽ chỉ làm việc với Repo và 3rd nếu có để cung cấp n-method cho 1 service nào đó. 1 Service có thể inject n-dependencies bao gồm các repo.
(ví dụ: AuthUserService sẽ làm việc với UserRepo, UserPermissionRepo, CryptoXXX (3rd) để cung cấp các method như RegisterUser, LoginUser ... vvv)
3. Controller/Func: sẽ chỉ làm việc với Service để thực thi các phương thức
(ví dụ: AuthController sẽ có API Login => trong đó sẽ call 2 action là AuthService.login và AuthService.getBasicInfo ... vvv)
Theo quan điểm của em thì nó là basic và flexible.. theo pattern này thì có thể apply cho bất kỳ ngôn ngữ nào.
Em có research thì cũng thấy các ref pattern giống giống cách của em .
https://exceptionnotfound.net/the-r...n-with-dependency-injection-and-asp-net-core/
Vấn đề là như vậy, em cũng trình bày với ae trong cty nhưng 4-10 người role cao hơn em ko đồng ý (em ko bàn tới skill của họ nhưng nếu họ giải thích được lí do chính đáng thì em ko comment), còn lại mấy ae dưới ko ý kiến -> 9/10.
Họ cho rằng controller nên gọi thẳng repository, còn service chỉ dùng cho 3rd.
logic nên implement luôn trong controller -> em có phản biện rằng có 1 số case cần dùng lại logic này thì ntn? thì ko trả lời được
Và do ý chỉ 1/10 nên cuối cùng thì ý kiến của em bị reject. Khi review code cũng bi soi khá nặng nề, hiuhiu
Các bác đã gặp hay có hướng xử lý nào cho trường hợp giống em không ?