Bài viết cực kỳ bổ ích, mình mong sẽ có nhiều bài bổ ích như thế này nữa.
Cuốn sách " Design Pattern in Ruby (2007)" mình tìm mãi mà không thấy chổ nào cho download.
Thanks for sharing. Bài viết tốt quá. Mình hiện đang cần một bạn cộng tác viết bài cho site của mình. Nếu bạn có hứng thú thì lien hệ với mình nhé: hkt@hockiemthu.com
@tungshooter Thực tế thì em cũng chỉ biết và làm việc hai framework là CI và laravel. Mà trong đó, chỉ có laravel là sử dụng trait. Có một đặc điểm nữa ở cách sử dụng trait của laravel mà em thấy vô cùng hay, đó là thay vì định nghĩa toàn bộ phương thức của một class trong tệp chứa nó thì ta có thể gộp một nhóm các phương thức có cùng ý nghĩa hoặc có liên quan đến nhau (riêng rẽ với phần còn lại) ra một trait rồi dùng từ khóa use để thêm đống phương thức lộm nhộm đó vào class hiện tại. Trait này không có ý nghĩ "đa kế thừa" hay chia sẻ với lớp khác nhưng nó giúp tách logic code một cách tuyệt vời, giúp lập trình viên đọc code dễ dàng hơn.
Gói illuminate/validation là một ví dụ cụ thể. Rõ ràng, hai traits FormatsMessages và ValidatesAttributes không có ý nghĩa chia sẻ hay đa kế thừa gì đó. Nhưng chúng đã làm cho logic code trở nên sáng sủa hơn thay vì phải viết hết trong class Validator. Em thấy tách ra hai traits rồi mà nhìn vẫn còn loằng ngoằng. Cứ thử tưởng tượng nhét cả đống phương thức vào class Validator thì khi đọc sẽ thế nào? @@
@tungshooter Sử dụng Trait khiến chúng ta khó khăn trong việc xem tất cả các phương thức của một class, do vậy khó để có thể phát hiện được một phương thức bất kỳ có bị trùng lặp hay không. Em không giám chắc về tất cả các phiên bản php kể từ lúc có trait nhưng trong với php 7.1, bất kể khi nào khai báo sử dụng từ hai hay nhiều trait trong một class mà chúng có cùng tên phương thức thì sẽ bị báo lỗi biên dịch ngay. Do vậy không sợ bị trùng phương thức. Chỉ là em thấy khó đọc kinh người @@.
@huynhduc
Xin chào bạn.
Rất cảm ơn bạn đã viết bài chia sẻ trên Viblo.
Hiện tại bên mình có nhận được một số phản ánh về các bài viết của bạn đang đặt tiêu đề ngắn và khó hiểu quá, mong bạn có thể sửa lại để mọi người có thể dễ dàng nhận ra được nội dung bài viết ngay từ trang chủ. Ví dụ như thay vì để tên tiêu đề là Activity bạn có thể đặt là Activity trong Android thì sẽ dễ hiểu hơn
Bạn cũng nên đánh tag cho bài viết của mình, để nó xuất hiện ở các trang danh sách bài viết của các tag đó, từ đó người dùng khi tìm kiếm bài viết về Android cũng sẽ dễ dàng tiếp cân đến bài viết hơn.
Ngoài ra, bạn có thể tham khảo về cách thức trình bày bài viết với Markdown trên Viblo ở đây, để có thể chỉnh sửa cho bài viết của mình trở nên đẹp và dễ nhìn hơn.
THẢO LUẬN
Bài viết cực kỳ bổ ích, mình mong sẽ có nhiều bài bổ ích như thế này nữa. Cuốn sách " Design Pattern in Ruby (2007)" mình tìm mãi mà không thấy chổ nào cho download.
ok, cảm ơn bạn rất nhiều, mình cũng đang nghiên cứu về NLP cho tiếng việt
Thanks for sharing. Bài viết tốt quá. Mình hiện đang cần một bạn cộng tác viết bài cho site của mình. Nếu bạn có hứng thú thì lien hệ với mình nhé: hkt@hockiemthu.com
?????
Cho m hỏi là: Nếu operationQueue mà isSuspended = false, thì các operation bên trong operationQueue nếu start thì có chạy được ko?
m làm giống như trên, nhưng ko để private let _sharedManager ở ngoài class BookManager mà để ở bên trong class BookManager
ok, cám ơn bạn.
Demo thì bạn có thể xem trực tiếp ở đây nhé
http://summarize.framgia.vn/
like
@tungshooter Thực tế thì em cũng chỉ biết và làm việc hai framework là CI và laravel. Mà trong đó, chỉ có laravel là sử dụng trait. Có một đặc điểm nữa ở cách sử dụng trait của laravel mà em thấy vô cùng hay, đó là thay vì định nghĩa toàn bộ phương thức của một class trong tệp chứa nó thì ta có thể gộp một nhóm các phương thức có cùng ý nghĩa hoặc có liên quan đến nhau (riêng rẽ với phần còn lại) ra một trait rồi dùng từ khóa use để thêm đống phương thức lộm nhộm đó vào class hiện tại. Trait này không có ý nghĩ "đa kế thừa" hay chia sẻ với lớp khác nhưng nó giúp tách logic code một cách tuyệt vời, giúp lập trình viên đọc code dễ dàng hơn.
Gói illuminate/validation là một ví dụ cụ thể. Rõ ràng, hai traits FormatsMessages và ValidatesAttributes không có ý nghĩa chia sẻ hay đa kế thừa gì đó. Nhưng chúng đã làm cho logic code trở nên sáng sủa hơn thay vì phải viết hết trong class Validator. Em thấy tách ra hai traits rồi mà nhìn vẫn còn loằng ngoằng. Cứ thử tưởng tượng nhét cả đống phương thức vào class Validator thì khi đọc sẽ thế nào? @@
@tungshooter Sử dụng Trait khiến chúng ta khó khăn trong việc xem tất cả các phương thức của một class, do vậy khó để có thể phát hiện được một phương thức bất kỳ có bị trùng lặp hay không. Em không giám chắc về tất cả các phiên bản php kể từ lúc có trait nhưng trong với php 7.1, bất kể khi nào khai báo sử dụng từ hai hay nhiều trait trong một class mà chúng có cùng tên phương thức thì sẽ bị báo lỗi biên dịch ngay. Do vậy không sợ bị trùng phương thức. Chỉ là em thấy khó đọc kinh người @@.
a ơi có bài viết giơis thiệu về interface chưa a
Có source code demo không vậy @vibloteam
Vietname narration: Uncaught TypeError: React.findDOMNode is not a function
@huynhduc Xin chào bạn. Rất cảm ơn bạn đã viết bài chia sẻ trên Viblo.
Hiện tại bên mình có nhận được một số phản ánh về các bài viết của bạn đang đặt tiêu đề ngắn và khó hiểu quá, mong bạn có thể sửa lại để mọi người có thể dễ dàng nhận ra được nội dung bài viết ngay từ trang chủ. Ví dụ như thay vì để tên tiêu đề là
Activity
bạn có thể đặt làActivity trong Android
thì sẽ dễ hiểu hơnBạn cũng nên đánh tag cho bài viết của mình, để nó xuất hiện ở các trang danh sách bài viết của các tag đó, từ đó người dùng khi tìm kiếm bài viết về Android cũng sẽ dễ dàng tiếp cân đến bài viết hơn.
Ngoài ra, bạn có thể tham khảo về cách thức trình bày bài viết với Markdown trên Viblo ở đây, để có thể chỉnh sửa cho bài viết của mình trở nên đẹp và dễ nhìn hơn.
Có package nào tự canh ntn không vậy bạn, các dâu => bằng nhau hết không bạn
Cám ơn ý kiến đóng góp của bạn. Viblo Team sẽ cố gắng để có thể cải thiện chất lượng âm thanh cho những lần record sắp tới
Hay quá, cảm ơn tác giả
Nice feature! Nhưng chất lượng âm thanh của video tệ quá
Có tag "Laravel 5.4" mà lại không có tag chính là "Laravel"?