@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.
Mình thâý đoạn này hơi khó hiểu: "Chúng ta sẽ chỉ có 1 state duy nhất, đó là danh sách các sản phẩm, thuộc component lớn nhất, là FilterableProductTable."
Đối với vi dụ này thì đáng lẽ thông tin trang thái (state) cần lưu là các thông tin thay đổi thường xuyên ở SearchBar component chứ nhỉ ?
Vâng a, bài này không sử dụng tới db nên không có phần cấu hình db test và db prod. Nếu có thì sẽ sử dụng biến process.env.NODE_ENV= 'test';
Trong file test luôn ghi đè giá trị biến này cho chắc .
Em cập nhật lại link source code rồi. Chủ để a gợi ý rất hay, có thể em sẽ tìm hiểu và viết bài trong thời gian tới.
THẢO LUẬ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à
Activitybạn có thể đặt làActivity trong Androidthì 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"?
Mình thâý đoạn này hơi khó hiểu: "Chúng ta sẽ chỉ có 1 state duy nhất, đó là danh sách các sản phẩm, thuộc component lớn nhất, là FilterableProductTable." Đối với vi dụ này thì đáng lẽ thông tin trang thái (state) cần lưu là các thông tin thay đổi thường xuyên ở SearchBar component chứ nhỉ ?
Cái nào free hoàn toàn ko bạn
Bạn ơi cho mình xin skype của bạn đi
Chào bạn, Mình đã thử các đoạn code của bạn nhưng kết quả của 4 cái đều là parent cả.
Bạn/anh còn thiếu bước để chạy server và client nữa :v
Cảm ơn bạn!
Vâng a, bài này không sử dụng tới db nên không có phần cấu hình db test và db prod. Nếu có thì sẽ sử dụng biến
.
Em cập nhật lại link source code rồi. Chủ để a gợi ý rất hay, có thể em sẽ tìm hiểu và viết bài trong thời gian tới.
process.env.NODE_ENV= 'test';Trong file test luôn ghi đè giá trị biến này cho chắc