Tag Archives: series phản phác qui chân

Các Anti-Pattern nên tránh để code không biến thành đống rác

Cách đây không lâu, mình có giới thiệu về Design Pattern, những mẫu thiết kế code giúp giải quyết vấn đề, giúp code dễ bảo trì, dễ mở rộng hơn.

Kì này, ta sẽ nói về anti-pattern. Khác với design pattern, anti pattern cũng là những cách thiết kế để giải quyết vấn đề, nhưng sử dụng nó lại… gây ra nhiều vấn đề hơn.

Một anti-pattern được nhiều người biết đó là hút thuốc lào thay cho thuốc lá, cách này cai được thuốc lá nhưng sẽ gây ra nhiều vấn đề vệ sinh và môi trường hơn.

Trong bài này, mình sẽ chia sẻ những anti-pattern chúng ta hay .. lỡ để nhầm vào code, hậu quả và cách giải quyết nó nhé!

Từ hồi dùng thứ này bố bỏ hẳn thuốc lá nhá
Từ hồi dùng thứ này bố bỏ hẳn thuốc lá nhá

Continue reading Các Anti-Pattern nên tránh để code không biến thành đống rác

Series Phản Phác Quy Chân – Luận về nguyên lý Separation of Concerns (Chia Để Trị)

Đôi lời lý giải chút về tên series

返璞归真 – Phản phác quy chân: Lúc đạt đến điểm cao nhất, cũng chính là lúc quay lại điểm xuất phát. 
Trong võ học, nó có nghĩa là đạt tới cảnh giới “tối thượng” trong truyền thuyết, quay lại như lúc ban đầu, quên đi tất cả võ học trong thiên hạ, bản thân đã không còn chiêu thức cụ thể, chỉ dựa vào ý cảnh mà đơn giản xử lý.

Võ học được thành lập từ các chiêu thức cơ bản, tuyệt thế võ công cũng từ các chiêu thức cơ bản mà ra. Code học cũng tạo thành từ bit/byte cơ bản, chương trình phức tạp cũng được viết thành từ nhiều module, từ từng dòng code.

Đôi khi, ta đã quá quen với việc dùng thư viện, dùng framework mà quên thì những thứ nằm sâu bên dưới, không nắm được bản chất. Có những vấn đề mà phải nắm rõ bản chất của nó ta mới có thể giải quyết được.

Như cái tên “Phản Phác Quy Chân”, series này không giới thiệu công nghệ hay ngôn ngữ mới, mà sẽ tập trung quay lại những cái bản chất, đơn giản, tinh túy nhất mà ít người quan tâm để ý (Bên tiếng Anh có một từ tương tự : Back to Basic, bỏ qua những cái phức tạp, quay lại những cái cơ bản để hiểu tận gốc vấn đề).

 

Đây là một series khá xưa nhưng rất hay của Code Dạo, nay có hứng thú lại nên mình viết tiếp season 2 của series nha.

Hôm nay, chúng ta cùng tìm hiểu về Separation of Concerns, một nguyên lý thiết kế đã có hơn 35 năm tuổi đời; nhưng vẫn có sức ảnh hưởng rất lớn, và được áp dụng rất nhiều trong thiết kế hệ thống, trong viết code và design các library.

Continue reading Series Phản Phác Quy Chân – Luận về nguyên lý Separation of Concerns (Chia Để Trị)

Phản Phác Quy Chân – Từ chuyện luyện võ cho tới chuyện học code

Lâu qua không viết bài style kiếm hiệp. Hôm nay, sau một hồi trà dư tửu hậu, Code Dạo quyết định đối style, mượn chuyện kiếm hiệp để nói chuyện code.

Chuyện nửa thật nửa đùa nhưng lại… hơi hơi sâu sắc. Các bạn sinh viên, lập trình viên đã đi làm cứ đọc thử xem, biết đâu lại thấy bóng dáng mình trong đó, tự rút ra cho mình bài học gì hay ho thì sao.

Continue reading Phản Phác Quy Chân – Từ chuyện luyện võ cho tới chuyện học code

Series Phản Phác Quy Chân – Đừng cắm mặt vào dùng công nghệ, hãy hiểu nó!

Xin bắt đầu bài viết bằng một câu chuyện nho nhỏ về hai thanh niên tên K và tên H.

Ngày xửa ngày xưa, K và H là đôi bạn thân học cùng Đại Học. Thuở ra trường, do có khả năng, cả hai được nhận vào một công ty làm C#, sử dụng ASP.NET MVC. Câu chuyện bắt đầu từ đó.

Continue reading Series Phản Phác Quy Chân – Đừng cắm mặt vào dùng công nghệ, hãy hiểu nó!

Kĩ năng “Back of The Envelope” của các developer thần thánh

Kì này, chúng ta tìm hiểu về một kĩ năng “bá đạo” mang tên Back of the Envelope. Tại sao lại gọi nó là kĩ năng của các developer “thần thánh”?

  • Phỏng vấn tuyển dụng tại cái công ty Google, Facebook, Amazon đều đòi hỏi developer có kĩ năng này.
  • Kĩ năng này không bao giờ lỗi thời, đến tầm Project Manager hay Software Architect vẫn cần. Đại ca Bob Martin – Chú Bob (Tác giả Clean Code) rất trùm sò trong kĩ năng này.
  • Kĩ năng này không chỉ hữu dụng trong lập trình, mà còn rất bổ ích trong cuộc sống.
  • Tuy đơn giản nhưng rất lại có rất ít developer biết, luyện tập và áp dụng nó

Đến đây bạn cũng tò mò kĩ năng này là gì mà sao lại ghê gớm như vậy phải không nào? Đọc hết bài viết để tìm hiểu nhé!

Continue reading Kĩ năng “Back of The Envelope” của các developer thần thánh

Series Phản Phác Quy Chân – Thuật toán sort nào nhanh nhất??

Mình rất ít khi viết bài về thuật toán. Lý do không phải vì mình …. dốt thuật toán mà vì bản thân mình thấy nó hơi khô khan. Vả lại, phần lớn thuật toán đã được dạy kĩ càng trong trường đại học nên mình cũng không muốn dạy lại những thứ các bạn đã biết rồi.

Tuy nhiên, hôm nay mình nổi hứng phá lệ một bữa, chúng ta sẽ cùng “phản phác quy chân”, bàn luận về một trong những thuật toán phổ biến nhất: thuật toán sắp xếp!

Chuyện thanh niên lập trình viên FA

Hãy tưởng tượng, bạn phải lòng một em gái mặt xinh ngực khủng chân dài cùng lớp lập trình (Tất nhiên điều này là hư cấu vì ngành này gái đã hiếm, gái ngực khủng chân dài lại càng hiếm).

Sau một hồi thả thính qua lại, bạn quyết định tỏ tình thì nàng bảo “Anh trả lời đúng câu hỏi thì này em sẽ đồng ý”. Vốn tự tin, bạn vỗ ngực bảo “Ok, em cứ hỏi đi!”.

Nàng nhẹ hỏi một câu hỏi đơn giản: “Thuật toán sắp xếp nào là nhanh nhất vậy anh?”. Trả lời đúng thì cuộc sống nở hoa, trả lời sai là vạn kiếp bất phục!

Ảnh minh hoạ bạn nữ cùng lớp (Gốc: Jade Raymond – Một trong các nữ lập trình viên sexy hiếm hoi ngành game)

Liệu bạn sẽ trả lời thế nào? Xem hết bài viết sẽ rõ.

Continue reading Series Phản Phác Quy Chân – Thuật toán sort nào nhanh nhất??

Series Phản Phác Quy Chân – Lý thuyết hay thực hành quan trọng hơn?

Gần đây, mình có thấy một cuộc tranh cãi, lộn,… tranh luận khá thú vị giữa các bạn sinh viên về chuyện “Lý thuyết hay thực hành quan trọng hơn?”.

Có bạn bảo “Phải vững lý thuyết thì mới giỏi được”, có bạn đáp lại “Code nhiều là giỏi chứ cần vẹo gì lý thuyết”, có người quăng gạch “anh tự học code, tự làm theo tutorial chứ có cần học lý thuyết gì đâu, vẫn có lương nghìn đô!!”.

Vì nhiều bạn cũng email cho mình hỏi vấn đề tương tự, mình viết bài này để chia sẻ cái nhìn của bản thân. Rốt cuộc lý thuyết hay thực hành quan trọng hơn?? Đọc hết bài sẽ biết!

Continue reading Series Phản Phác Quy Chân – Lý thuyết hay thực hành quan trọng hơn?

Series Phản Phác Quy Chân – Tránh over-engineering

Over-engineering có thể tạm hiểu là “làm phức tạp hóa vấn đề”, một lỗi mà các bạn lập trình viên vừa đi làm hay gặp phải. Bài viết này sẽ làm rõ sai lầm này và đưa ra một số lời khuyên cho các bạn.

Ngày xửa ngày xưa

Xin mở đầu bài viết bằng một câu chuyện nhỏ nhỏ về bạn H. Thuở mới vào trường Đại Học, H được học Java để viết Hello World. Đây là cảnh giới đầu tiên của code học, không biết chiêu thức, chỉ chú tâm viết code cho chạy được.

1

Continue reading Series Phản Phác Quy Chân – Tránh over-engineering

Series Phản Phác Qui Chân – Học thuật toán để làm vẹo gì???

Mình thường nghe các bạn sinh viên hỏi về tầm quan trọng của việc học thuật toán. Ý kiến của các bạn được chia làm hai luồng trái chiều như sau:

  • Thần thánh hoá thuật toán: Muốn lập trình giỏi phải giỏi thuật toán. Các công ty lập trình lớn toàn phỏng vấn về thuật toán còn gì.
  • Coi thường thuật toán: Thuật toán là cái thứ vô dụng, mấy anh đi làm nói là có dùng bao giờ đâu.

Bài viết này sẽ giúp các bạn trả lời câu hỏi “Học thuật toán để làm cái vẹo gì?”, cũng như có cái nhìn khách quan hơn về thuật toán.

Continue reading Series Phản Phác Qui Chân – Học thuật toán để làm vẹo gì???

Series Phản Phác Qui Chân – Luận về Optimize Code

Đa số các bạn newbie thường phạm phải một sai lầm cơ bản: Quá mức quan tâm về tốc độ thực thi của code,  của ngôn ngữ lập trình. Đây là một thói quen nên bỏ!

Trong bài viết hôm nay, mình sẽ giải thích về việc tối ưu code: Optimize code một cách pro nhất! Khi nào cần optimize, khi nào không nên optimize code?

Continue reading Series Phản Phác Qui Chân – Luận về Optimize Code