Hơi thiếu là đáng ra mình nên lấy thêm ví dụ bằng Java để dùng interface, abstract class thuần OOP sẽ dễ hiểu hơn, vì nhiều bạn bị confuse vụ interface, extends quá :D. Bạn nào chưa hiểu ví dụ thì có thể tìm hiểu thêm về OOP trong javascript, typescript nhé 😘😘😘
Hơi non, kiến thức này mới ở mức đọc thuộc thôi chứ chưa thông hiểu. Ví dụ nhé: 1. S Ngay cái class User thôi, thì bản thân nó là model rồi. Thì nó không nên chứa bất kì cái logic save data hay bất kì cái gì khác. Đã nói là single response thì nhiệm vụ của nó là mô tả đối tượng, ngoài ra đừng làm gì khác. 2. O Mô tả thì không sai nhưng ví dụ thì không hợp lí. Product type nó dynamic lên n cái thì bạn tạo ra n class để thực thi à ? 3. L Chưa hiểu bản chất. Cái này nó là khi thay đổi implementation của 1 interface thì chương trình vẫn chạy đúng. Hay khái quát hóa lên là abstraction nhưng phải đảm bảo tính đúng đắn của chương trình.
Haizz video này cho người mới, mục đích cho mọi người dễ hiểu. Ko làm phức tạp lên làm j. Mấy bạn advanced thì nên tìm video giải thích sâu xem nhé 😘, phải từ cơ bản đi lên
Trước đi làm công ty cũ có dự án bảo là đừng đặt parameter dạng Interface vì Interface chứa nhiều class nên nặng hơn nè. Méo hiểu thằng nào có tư duy như vậy mà lên được tech
Ví dụ trong video là dùng javascript. Nên class và interface hoàn toàn khác nhau bạn ạ. Nếu muốn dùng interface thì phải dùng typescript. Bạn có thể tìm hiểu thêm về khác biệt giữa extends class và extends interface trong javascript, typescript để rõ hơn nhé
@@sirbar3662 mình định hướng theo full stack web á. Mình định hướng theo angular + nestjs và học 1 số thứ liên quan như 1 chút java với react native,...
@@sirbar3662 Ae đừng chờ trường dạy mà nên tự học rồi làm dự án cá nhân. Vì trên trường dạy thiếu rất nhiều thứ mà đi làm cần, thì tầm năm 3 là đi thực tập được luôn. Ra trường thì ngon nghẻ luôn
SRP phát biểu như trong video thì mỗi lớp làm 1 nhiệm vụ duy nhất, và giải quyết bài toán 1 class có nhiều hoạt động bằng cách tách ra nhiều class nhỏ, như vậy SRP hiểu theo các này đang vị phạm Encapsulation trong OOP, và nếu 1 class chỉ thực hiện đúng 1 nhiệm vụ vậy thì 1 class có mất đi tính mô tả 1 tính chất và hành động của một thực thể không ? VD: Con người, nghe đc thì không nhìn đc, ăn đc thì không … đc 😂😂😂. B có thể giải thích thêm đoạn này không
Như mình có nói ở cuối video đó. Nguyên tắc khi chúng ta thấy phù hợp thì mới apply thôi. Chứ ko cứng ngắc được 😁, Tuỳ cơ ứng biến trong từng case. Chứ nó ko thể cover hết đc các cases đc ^^
@@KhungLongAnCo2000 Theo mình biết thì SOLID là đc xây dựng cho OOP nên case mà xung đột với tính chất của OOP là không thể, chỉ có thể là bạn đang hiểu sai tính chất này thôi😅
@@nimnim9300 stackoverflow.com/questions/28651947/single-responsibility-vs-encapsulation bạn có thể đọc thêm về bài này nhé, cùng chung thắc mắc với bạn đó :D
@@KhungLongAnCo2000Mình đọc qua một số bài liên quan rồi, trong đó có bài này 😅, k biết b có đọc qua page Wiki về SRP không, mình không thấy có định nghĩa nào vè việc class chỉ chịu trách nhiệm cho 1 chức năng cả 😊, Mình trích nguyên văn là “A module should be responsible to one, and only one, actor”. Nếu b đi theo hướng này thì nó không hề đụng chạm gì tới tính chất nào cả, còn cái bạn trình bày ở 1:11 thì mình không chắc
@@nimnim9300 ví dụ trong video là JS bạn ạ, và khi code thì thường sẽ chỉ để 1 class trong 1 file tức là 1 module thôi, => class apiAbcService, authService... vậy là đúng 'A module should be responsible to one, and only one, actor.' mà 😂. Như trong ví dụ User đầu tiên, nếu bạn code BE, cái cục đầu nó giống như bạn làm 1 cái api send mail to user thì tách ra thêm 1 cái emailService, emailService ở đây chính là cái 'module' đó 😘
Chỉ là kế thừa trong oop thôi bạn ạ. Bạn có thể tìm hiểu thêm những thuật ngữ quan trọng trong OOP như kế thừa, abstraction.. nhé. Nên học chắc oop vì nó rất quan trọng. Chúc bạn thành công 😘
@@KhungLongAnCo2000 em học kế thừa rồi mà có vẻ kiến thức ko vững nên chưa hiểu, em thấy ảnh bên trái class printer có 3 method thì extends có thể dùng đc, ảnh bên phải chỉ có 1 method sao extend vẫn dùng đc method của 2 class còn lại ạ
@@Akiraaohk cái này ko extends thì class vẫn tạo được phương thức của riêng nó mà :D. extends ở đây nhằm việc cố định cái phương thức, không kế thừa vẫn có thể tạo ra phương thức printDocument mà, như kiểu máy in nào cũng phải có thể print, còn máy xịn hơn thì có thêm fax, scan..., midset của nó là nói về clean code bạn ạ.
Hơi thiếu là đáng ra mình nên lấy thêm ví dụ bằng Java để dùng interface, abstract class thuần OOP sẽ dễ hiểu hơn, vì nhiều bạn bị confuse vụ interface, extends quá :D. Bạn nào chưa hiểu ví dụ thì có thể tìm hiểu thêm về OOP trong javascript, typescript nhé 😘😘😘
Hay quá hehe bài này giúp em cải thiện thêm tư duy code
Chiều nay em có buổi phỏng vấn intern thì xem được video này ạ. Rất dễ hiểu, em cảm ơn sếp.
ôn tý design pattern nhé bạn. Khả năng cao là hỏi đó ^^
Một video quá tuyệt vời, mong chủ kênh sẽ làm ra thêm nhiều video bổ ích nữa
😘
Hơi non, kiến thức này mới ở mức đọc thuộc thôi chứ chưa thông hiểu.
Ví dụ nhé:
1. S
Ngay cái class User thôi, thì bản thân nó là model rồi. Thì nó không nên chứa bất kì cái logic save data hay bất kì cái gì khác. Đã nói là single response thì nhiệm vụ của nó là mô tả đối tượng, ngoài ra đừng làm gì khác.
2. O
Mô tả thì không sai nhưng ví dụ thì không hợp lí. Product type nó dynamic lên n cái thì bạn tạo ra n class để thực thi à ?
3. L
Chưa hiểu bản chất. Cái này nó là khi thay đổi implementation của 1 interface thì chương trình vẫn chạy đúng. Hay khái quát hóa lên là abstraction nhưng phải đảm bảo tính đúng đắn của chương trình.
thôi, video trên đang dễ hiểu, đừng làm tui lú bn oi 😅
Haizz video này cho người mới, mục đích cho mọi người dễ hiểu. Ko làm phức tạp lên làm j. Mấy bạn advanced thì nên tìm video giải thích sâu xem nhé 😘, phải từ cơ bản đi lên
@@KhungLongAnCo2000 vấn đề là bạn chưa hiểu chứ không phải dành cho ai
Cực kì dễ hiểu thanks kênh
😘
nội dung của bạn này truyền tải cực kì dễ hiểu
+rep
😘
Video rất hay.
😘
Rất hay và dễ hiểu. Thank you so much!
😘
dễ hiểu quá, cảm ơn kênh bạn nhé.
😘
Dễ hiểu quá. Cảm ơn bạn đã chia sẻ ❤
Cảm ơn bạn iu
Trước đi làm công ty cũ có dự án bảo là đừng đặt parameter dạng Interface vì Interface chứa nhiều class nên nặng hơn nè. Méo hiểu thằng nào có tư duy như vậy mà lên được tech
Hay quá
😘
Ngoài mục khi nào nên áp dụng ra thì a có thể cho thêm 1 số ví dụ về việc khi nào KHÔNG NÊN áp dụng được không ạ?
Có time mình sẽ làm nhé bạn 😘
Nên biết, còn áp dụng được hay thì tùy trường hợp, đừng quá cứng nhắc.
Mình có bảo ở gần cuối video đó bạn ^^
Thư viện có sẵn của java ko tuân theo solid thì cũng chịu
Thấy nội dung vẫn còn mập mờ giữa class và interface nhỉ
Ví dụ trong video là dùng javascript. Nên class và interface hoàn toàn khác nhau bạn ạ. Nếu muốn dùng interface thì phải dùng typescript. Bạn có thể tìm hiểu thêm về khác biệt giữa extends class và extends interface trong javascript, typescript để rõ hơn nhé
11:47 Messi có làm gì a đâu :((
xD giỡn chứ, +1 kiến thức, cám ơn a
😂
Tuyệt vời quá anh ơi, em mới sinh viên năm 3 nhma nghe vẫn hiểu. Dù em chưa áp dụng được nhiều lắm nhưng mà cảm ơn anh rất nhiều ạ
Chúc bạn kiếm đc job ngon nhé 😘
@@KhungLongAnCo2000 dạ em cảm ơn anh
Chào anh ạ, hiện tại em đang năm 2, anh cho em hỏi anh đang nắm 3 hiện tại anh đã nắm vững được kiến thức nào rồi a. Em cảm ơn a.
@@sirbar3662 mình định hướng theo full stack web á. Mình định hướng theo angular + nestjs và học 1 số thứ liên quan như 1 chút java với react native,...
@@sirbar3662 Ae đừng chờ trường dạy mà nên tự học rồi làm dự án cá nhân. Vì trên trường dạy thiếu rất nhiều thứ mà đi làm cần, thì tầm năm 3 là đi thực tập được luôn. Ra trường thì ngon nghẻ luôn
9:14 có gì sai sai chỗ MultifunctionPrinter đúng ko anh, nó ko thèm extends Fax và Scanner
Bạn cùng issue với bạn @dzphong405 ở dưới mình giải thích rồi nhé :D
Bạn cho mình hỏi cái DIP 12:14 á, là tóm gọn lại là nên truyền 1 param vào để xử lý chứ không phải gọi cứng 1 service từ bên trong đúng không bạn
Đúng rồi bạn
cái này có bài tập gì ko nhỉ, hay mình chỉ cần áp dụng vô các dự án hằng ngày thôi a, trc h code ko theo pattern nào h phải tập sửa lại tí
Bài tập thì có cuốn A Practical Guide to SOLID Design Principles. Nhưng thôi áp dụng trong dự án là thành mindset :V. Làm bài tập nhiều lú người
great
SRP phát biểu như trong video thì mỗi lớp làm 1 nhiệm vụ duy nhất, và giải quyết bài toán 1 class có nhiều hoạt động bằng cách tách ra nhiều class nhỏ, như vậy SRP hiểu theo các này đang vị phạm Encapsulation trong OOP, và nếu 1 class chỉ thực hiện đúng 1 nhiệm vụ vậy thì 1 class có mất đi tính mô tả 1 tính chất và hành động của một thực thể không ? VD: Con người, nghe đc thì không nhìn đc, ăn đc thì không … đc 😂😂😂. B có thể giải thích thêm đoạn này không
Như mình có nói ở cuối video đó. Nguyên tắc khi chúng ta thấy phù hợp thì mới apply thôi. Chứ ko cứng ngắc được 😁, Tuỳ cơ ứng biến trong từng case. Chứ nó ko thể cover hết đc các cases đc ^^
@@KhungLongAnCo2000 Theo mình biết thì SOLID là đc xây dựng cho OOP nên case mà xung đột với tính chất của OOP là không thể, chỉ có thể là bạn đang hiểu sai tính chất này thôi😅
@@nimnim9300 stackoverflow.com/questions/28651947/single-responsibility-vs-encapsulation bạn có thể đọc thêm về bài này nhé, cùng chung thắc mắc với bạn đó :D
@@KhungLongAnCo2000Mình đọc qua một số bài liên quan rồi, trong đó có bài này 😅, k biết b có đọc qua page Wiki về SRP không, mình không thấy có định nghĩa nào vè việc class chỉ chịu trách nhiệm cho 1 chức năng cả 😊, Mình trích nguyên văn là “A module should be responsible to one, and only one, actor”. Nếu b đi theo hướng này thì nó không hề đụng chạm gì tới tính chất nào cả, còn cái bạn trình bày ở 1:11 thì mình không chắc
@@nimnim9300 ví dụ trong video là JS bạn ạ, và khi code thì thường sẽ chỉ để 1 class trong 1 file tức là 1 module thôi, => class apiAbcService, authService... vậy là đúng 'A module should be responsible to one, and only one, actor.' mà 😂. Như trong ví dụ User đầu tiên, nếu bạn code BE, cái cục đầu nó giống như bạn làm 1 cái api send mail to user thì tách ra thêm 1 cái emailService, emailService ở đây chính là cái 'module' đó 😘
A ơi cho em hỏi cái khúc 9:33 sao multifuntionprint chỉ kế thừa mỗi print mà lại dùng được cả 3 phương thức vậy ạ
Chỉ là kế thừa trong oop thôi bạn ạ. Bạn có thể tìm hiểu thêm những thuật ngữ quan trọng trong OOP như kế thừa, abstraction.. nhé. Nên học chắc oop vì nó rất quan trọng. Chúc bạn thành công 😘
@@KhungLongAnCo2000e cảm ơn
@@KhungLongAnCo2000 em học kế thừa rồi mà có vẻ kiến thức ko vững nên chưa hiểu, em thấy ảnh bên trái class printer có 3 method thì extends có thể dùng đc, ảnh bên phải chỉ có 1 method sao extend vẫn dùng đc method của 2 class còn lại ạ
@@Akiraaohk cái này ko extends thì class vẫn tạo được phương thức của riêng nó mà :D. extends ở đây nhằm việc cố định cái phương thức, không kế thừa vẫn có thể tạo ra phương thức printDocument mà, như kiểu máy in nào cũng phải có thể print, còn máy xịn hơn thì có thêm fax, scan..., midset của nó là nói về clean code bạn ạ.
@@Akiraaohk Ví dụ này bằng JS bạn có thể tìm hiểu về typescript thêm. hoặc bạn code Java có thể tìm kiểu về Abstract Class là oki
10:17 interface a viết thành internet a ơi
😂 sorry, auto caption của capcut nó detect ngu quá.
Giờ mới bt:)
😁
vid này gay thật