Tag Archives: design pattern

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

Code bạn viết ra sẽ méo bao giờ hoàn hảo hoặc hoàn toàn clean – But that’s okay!

Nếu chăm chỉ đọc blog của mấy developer giỏi và nổi tiếng (như Uncle Bob, Martin Fowler, John Skeet), các bạn sẽ thấy họ có rất nhiều guideline để viết code cho tốt:

  • Sử dụng nguyên lý SOLID để code tách bạch, rõ ràng, dễ sửa chữa
  • Sử dụng Seperation of Concern và các mô hình phổ biến như MVC, MVVM để phân tách code thành nhiều thành phần nhỏ, dễ quản lý
  • Áp dụng design pattern để giải quyết các vấn đề trong code
  • Viết code phải viết thêm test để đảm bảo code chạy đúng

Làm và áp dụng theo những guideline này, chúng ta có thể có code… đúng chuẩn (có thể thôi nhé).

 

Tuy nhiên, trên thực tế, đa phần code trong các dự án đều khá … tởm. Code không có architecture rõ ràng, không có design pattern, viết cẩu thả. Nhiều khi đọc code xong, ta chỉ muốn đập đi xây lại, viết lại cho… đúng chuẩn.

Tuy nhiên, đã bao giờ bạn tự hỏi: Liệu viết code SOLID, chuẩn này chuẩn kia, DI/IoC đồ có thật sự làm code tốt lên hay không? Liệu ta có nên đảm bảo code viết ra phải cực kì hoàn hảo, phải có trật tự?

Continue reading Code bạn viết ra sẽ méo bao giờ hoàn hảo hoặc hoàn toàn clean – But that’s okay!

Năm thói quen xấu của lập trình viên “dỏm” mà các bạn nên bỏ

Để trở thành lập trình viên giỏi, chúng ta cần phải có thái độ đúng đắn với ngành, cần phải rèn luyện những thói quen tốt, phải phạm nhiều sai lầm và học hỏi từ những sai lầm đó…

Tuy nhiên, trước khi làm những điều đấy, bạn cần phải biết mình có dính phải thói quen xấu nào có thể ảnh hưởng gì đến công việc, đến sự phát triển của mình không.

Do vậy, trong bài này, mình sẽ chỉ ra năm thói quen mà các bạn nên bỏ nếu muốn thoát kiếp lập trình viên “dỏm” nhé!

Continue reading Năm thói quen xấu của lập trình viên “dỏm” mà các bạn nên bỏ

Mỗi tháng một cuốn sách – Những sách hay mình đã đọc trong năm 2018 – Phần 1

Từ khi ra trường, mình vẫn luôn giữ thói quen đọc sách, vừa để giải trí vừa để học hỏi cái mới.

Để khuyến khích thói quen đọc sách, cũng như chia sẻ sở thích với một số bạn, bài viết này sẽ là review tổng hợp ngắn những cuốn sách hay nhất mình đã đọc trong năm vừa rồi.

Mỗi tháng mình đọc khoảng 3-6 cuốn sách. 12 cuốn sách dưới đây là 12 cuốn sách hay nhất mà mình đọc được mỗi tháng. Các bạn có thể xem toàn bộ danh sách ở cuối bài nhé.

Năm 2015, 2016 và 2017 mình cũng có bài review tương tự, các bạn có thể xem ở đây:

Continue reading Mỗi tháng một cuốn sách – Những sách hay mình đã đọc trong năm 2018 – Phần 1

Từ chuyện về cây bút chì trong vũ trụ, đến chuyện làm web hiện đại và về cách giải quyết vấn đề

Lâu lâu Code Dạo viết một bài hơi “sâu sắc” về công nghệ để bạn đọc cùng ngẫm nghĩ nhé.

Hôm nay, chúng ta cùng nghe một mẩu chuyện cười vì cây bút chì trị giá triệu đô của NASA, đến chuyện Netflix làm web, cũng như chuyện công nghệ của web developer nhé.

Chuyện cây bút bi triệu đô của NASA

Ngày xưa ngày xưa, có một câu chuyện cười về chuyện Mĩ và Nga lên vũ trụ như thế này:

Trong những năm 1960, khi mà cuộc đua gay gắt bay vào không gian của các nước đang diễn ra, các nhà khoa học NASA nhận ra một vấn đề: cấu tạo bút máy hay cấu tạo bút bi thường đều không thể viết được ở ngoài vũ trụ.

Họ cần phải tìm ra cách khác để các phi hành gia có thể viết được. Vì vậy, họ đã dành hàng năm và hàng triệu đô la đóng thuế để phát triển cấu tạo cây bút bi có thể viết được ra giấy trong môi trường không trọng lực.

Về phía đối lập, Liên Xô giải quyết được vấn đề chỉ với một biện pháp đơn giản: Họ đưa bút chì cho các phi hành gia!
Cây bút không gian “thần thánh” của NASA

Các bạn thấy đấy, có những vấn đề vốn có thể giải quyết vô cùng đơn giản, nhưng lại bị phức tạp hóa lên rất nhiều lần.

Continue reading Từ chuyện về cây bút chì trong vũ trụ, đến chuyện làm web hiện đại và về cách giải quyết vấn đề

Sự khác biệt giữa Junior và Senior Developer

Thật ra, mình được nghe câu hỏi “Senior Developer thì khác gì Junior Developer” cũng nhiều lần lắm rồi. Hôm nay mình mới có thời gian ngồi suy ngẫm, đúc kết lại để viết một bài đàng hoàng để giải thích về vấn đề này.

Đây là một bài viết khá hay, đáng đọc. Dù bạn có đang là junior – sinh viên mới ra trường, hoặc đang là senior lương chục củ, bài viết này cũng sẽ có ích cho bạn.

 

Note: Thật ra, cộng đồng developer thế giới lẫn Việt Nam đều có rất nhiều tranh cãi về chuyện phân chia title như thế nào, chưa có một chuẩn nào cụ thể, rõ ràng cả!

Do vậy, bài viết này là góc nhìn cá nhân của mình, chứ không phải là chuẩn hay tuyệt đối gì đó. Bạn có thể đồng tình hoặc phản đối nhé, mọi tranh luận đều được đón nhận.

Continue reading Sự khác biệt giữa Junior và Senior Developer

Nhập môn Design Pattern (Phong cách kiếm hiệp)

Nhập đề

Kinh thư ghi lại rằng, con đường tu chân có 3 cảnh giới: Luyện khí, Trúc cơ và Kết đan. Luyện khí là quá trình rèn thân luyện thể, cho phàm thân kiên cường dẻo dai. Trúc cơ là quá trình du nhập thiên địa linh khí vào thể nội, giúp khai thông kinh mạch. Khi thiên địa linh khí trong đan điền đạt tới một nồng độ nhất định, sẽ kết thành Kim Đan, đặt bước chân đầu tiên con đường tu chân đại đạo.

Con đường khởi đầu của code học cũng có 3 cảnh giới: Học đồ (Junior Developer), Học sĩ (Developer), Đại sư (Senior Developer). Để đạt đến cảnh giới Đại sư (senior), bất kì Học Sĩ (dev) nào cũng cần phải tường tận vài Design Pattern cơ bản để phòng thân. Bài viết này do tại hạ viết ra trong một phút cao hứng nhất thời, nhằm chia sẻ với các nhân sĩ võ lâm trên con đường truy cầu đại đạo.

911201211_9_2012_tuchan1s

Continue reading Nhập môn Design Pattern (Phong cách kiếm hiệp)

Những mánh khóe “không bao giờ tiết lộ” của các lập trình viên vĩ đại

Mánh khóe thứ nhất: Không bao giờ truyền dạy các “mánh khóe” này cho người khác. Hết bài.

Đùa đấy, các bạn đừng gạch đá mình tội nghiệp, mình buồn. Chẳng là dạo này mình chán stackoverflow, chuyển qua quora nghịch ngợm đôi chút. Đây cũng là một trang web hỏi đáp tương tự như stackoverflow, nhưng phạm vi rộng hơn rất nhiều, bao gồm toàn bộ mọi lĩnh vựa đời sống.

Một điểm đặc biệt nữa là nó cho phép hỏi những câu chung chung hoặc “nhảm nhí”, do đó có rất nhiều câu hỏi – trả lời thú vị và “bá đạo” như: Mac Zuckerberg có giỏi PHP hay không? Tại sao người đời lại ghét sản phẩm của Apple? Làm sao nghe lén điện thoại bạn gái?… đủ thứ trên trời dưới đất =))).

Mình khuyên các bạn nên bỏ đi ít thời gian cho facebook, rảnh rỗi thì lên đây xem các câu hỏi về Computer Science/Computer Programming, sẽ học được nhiều điều thú vị lắm, giải trí cũng tốt nữa. Bài viết này là tổng hợp và chọn lọc những ý tưởng, câu trả lời hay của câu hỏi: What are the best-kept secrets of great programmers? – Những mánh khóe “không bao giờ tiết lộ” của các lập trình viên vĩ đại.

quora-logo

Continue reading Những mánh khóe “không bao giờ tiết lộ” của các lập trình viên vĩ đại