Review sách Clean code

Chào mọi người,

Tình hình là mình mới xong dự án đầu tiên, và bây giờ cũng đang rảnh, nên mình đã in cuốn Clean code để đọc (vốn mình tính in cuốn code complete 2 mà không tìm được bản nào format đẹp để in). Để có thêm động lực, mình sẽ review lại nội dung mình đọc lên DNH, hy vọng của mình là mỗi ngày đọc và review được 2 chương.

https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

Mình không lập team đâu, nó sẽ tương tự topic này của mình. Tuy nhiên bạn nào nhảy vào bàn luận góp ý mình cũng rất hoan nghênh.

Có 1 chú ý nhỏ là sách xài Java (mình không chắc lắm), nhưng mình (chỉ biết) xài python, nên mình sẽ lấy tinh thần của tác giả, chứ nội dung mình sẽ liên hệ với python. Cá nhân mình cho rằng việc này tuy bất tiện cho mình nhưng sẽ giúp mình hiểu sâu hơn.

17 Likes

Cảm thấy rất vui vì anh (?chắc là lớn tuổi hơn rồi) đã tạo một topic rất đúng tinh thần DNH.
Em cũng muốn đọc quyển này lắm, nhưng chưa đào đâu ra được thời gian. Có anh review thì còn gì bằng.

4 Likes

Đạt cũng muốn đọc quyển này, do thấy được Jeff giới thiệu. Tiếc là không làm Java nên chưa đọc. Đạt đã đọc quyển khác của Uncle Bob là quyển The Clean Coder.

Phải nói là trên cả tuyệt vời, tối nằm đọc The Clean Coder để dễ ngủ mà có khi gặp nhiều đoạn tâm đắc quá hành thử không muốn ngủ luôn. Hóng review Clean Code từ Tulip.

Uncle Bob là người đã làm thay đổi tư duy lập trình của Đạt trong thời gian gần đây. Đạt đã thực hiện một switch trong nghề nghiệp của mình sau khi đọc xong quyển The Clean Coder, sẽ làm một topic review khác như Tulip. – Không lan man nữa, off-topic mất :smiley:

7 Likes

Rất hoan nghênh cái trò review sách này. Bởi trong một biển sách tìm được cuốn sách đúng vấn đề mình quan tâm rất khó. Việc review sách sẽ khiến mọi người có thêm căn cứ để chọn đọc đúng cuốn mình cần :smiley:

3 Likes

bác dùng từ kỳ thế :))
btw, bác @Tulip có thể chia sẻ làm sao bác có động lực làm việc liên tục như thế ạ :smiley: em cảm ơn

2 Likes

anh Đạt cho em hỏi , cuốn The Clean Coder thời điểm nào đọc thì là thích hợp nhất ạ ?

1 Like

Giới thiệu sách và cấu trúc của nó

Làm cách nào để viết ra những dòng code tốt? Bạn đã bao giờ nghĩ tới việc bản thân trở thành những expert, am hiểu chuyên sâu, code viết ra đọc qua là hiểu chưa?

Để đạt tới trình độ đó, chúng ta phải có 2 thứ: hiểu biết và sự chăm chỉ. Giống như việc tập xe đạp, dù bạn có biết hết các nguyên tắc đạp xe, thậm chí cả những thứ cao siêu hơn như lực hút trái đất, động năng,… thì bạn vẫn cần ngồi lên xe để biết đi xe và đi tốt. Cuốn sách này cũng thiết kế theo hướng đó, với các đoạn code được minh hoạ xen lẫn nội dung, chúng ta nên đọc các ví dụ để hiểu thêm về khái niệm được đưa ra, và có lẽ tốt hơn hết, vẫn là sau đó liên hệ với những dòng code bạn viết gần đây nhất.

Cuốn sách được chia làm 3 phần:

  • phần 1: nói về cách phân biệt good code/bad code, những nguyên tắc tạo nên good code, bao gồm: đặt tên, cách viết và cấu trúc function, comment, format của code,… đây là phần nền tảng của sách.

  • phần 2 (nhưng lại nằm trong phụ lục): các case study. Theo giới thiệu, đây sẽ là các case rất phức tạp, và sẽ mất rất nhiều thời gian để hoàn thành phần này. Mình nhìn qua thì có vẻ đây là các dự án thực tế, rất dài (do đó cũng sẽ rất phức tạp). Phần này rất chua vì mình hoàn toàn không biết Java…

  • phần 3: bao gồm rất nhiều ví dụ minh hoạ cho các lỗi thường gặp.

Cá nhân mình sẽ chọn 1 số các project python trên github, tìm hiểu và thử xem nó có vấn đề gì không, có thể cải thiện không thay vì phần phần 2 trong sách.

===========

Chào mọi người,

Ban đầu mình thấy sách mỗi chương cũng khá ngắn, chỉ tầm 20 trang đổ lại nên dự kiến của mình là mỗi ngày đọc và review 2 chương, tuy nhiên đến lúc đọc thì mới thấy bản thân đã lạc quan quá đà (các cuốn sách không phải chuyên ngành, thường mình đọc 1 cuốn ~300 trang trong 1 - 2 buổi thôi). Tới hôm nay mình mới đọc xong chương 3, quả thực việc vừa đọc vừa liên hệ với những đoạn code mình đã viết gần đây rất tốn thời gian. Mình sẽ chuyển mục tiêu thành đọc và review 1 chương trong 1 - 2 ngày vậy.

Mình xin nói thêm 1 chút, mình là dân tay ngang, học kinh tế rồi chuyển sang học code. Mình theo hướng data science, bản thân thiên về xây dựng mô hình hơn nên khả năng code của mình còn yếu. Chính vì vậy, review của mình chắc chắn sẽ không sâu và bao quát được như sách, topic này chủ yếu để mình hệ thống lại kiến thức khi đã đọc xong. Các bạn đọc nếu thấy hứng thú nên đọc sách, sẽ tốt hơn rất nhiều.

6 Likes

Tổng kết chương 1: Clean code

Những dòng code tệ hại xuất hiện khắp nơi. Khi nhìn lại dự án mình vừa hoàn thành, mình thấy đó là 1 đống rác, rác của mình viết, rác của người khác viết, rác của người khác viết mà mình sửa chữa,… Thật may, về cơ bản các chức năng của nó vẫn ok, đảm bảo yêu cầu của khách hàng, tuy nhiên mình không dám nghĩ tới páht triển thêm dựa trên những dòng code đó nữa. Biết là tệ hại, vậy vì sao chúng ta lại viết ra bad code?

  • mình cho rằng, yếu tố tác động lớn nhất là thời gian: đôi khi, bạn có deadline dí sát đít, và bạn phải thức trắng đêm để cố gắng hoàn thành. Bạn hoàn thành trễ, hoặc may mắn là vừa kịp, chỉ test xong đã là cả 1 điều kỳ diệu, thì làm sao để kịp sửa chữa nó đây? Cá nhân mình thấy, đây là lỗi của manager hơn là của bạn

  • vì bạn lười. Bạn khó mà bận tối mắt cả dự án được, sẽ có những khoảng thời gian bạn rảnh rỗi, nhưng bạn lại chẳng ngồi rèn luyện kỹ ănng, hay chỉnh sửa code.

  • vì bạn đã chán dự án tới tận cổ, và bạn chẳng thèm sửa nữa, chỉ mong nhanh nhanh chóng chóng cho xong.

  • dù sao mấy lý do trên cũng đỡ tệ hại hơn việc vì 1 số đoạn code quá mức tệ hại, tới mức bạn không thể nào sửa nổi nếu không thay đổi rất rất nhiều kết cấu chương trình. Đây chắc chắn là lý do tồi tệ nhất và cũng là lý do không được đón chờ nhất.

Chúng ta đều biết, bad code không tốt. Nhưng không tốt tới mức nào, liệu nó có ảnh hưởng tới đâu lại là 1 câu hỏi khó trả lời. Tác giả cho rằng, thời gian dùng để đọc code so với thời gian dùng để viết code là 10 : 1. Chúng ta cần đọc, suy nghĩ rất nhiều trước khi viết code. Để giảm thiểu thời gian, chúng ta nên giảm thiểu thời gian đọc chứ không cần phải viết code vội vàng, vội vàng viết ra những dòng code tệ hại thuần tuý là tham bát bỏ mâm mà thôi.

Vậy, thế nào là code sạch?

Khi nhìn 1 bức tranh, bạn sẽ tự cảm nhận được nó đẹp hay không. Khi quan sát nhiều hơn, bạn sẽ tự phân biệt được xấu đẹp (không tính tới hội hoạ hiện đại nha :)) ), nhưng việc vẽ ra những bức tranh đẹp lại khó hơn rất nhiều. Viết code cũng vậy, cảm nhận code sạch thì không khó, nhưng viết ra code sạch lại khó. Dù sao chúng ta cũng cần có những khái niệm, dù mơ hồ về việc thế nào là code sạch.

Sau khi tổng hợp ý kiến của 1 số chuyên gia, chúng ta có thể rút ra vài đặc điểm của code sạch như sau:

  • phải có logic rõ ràng.
  • phải đat performance tốt, tốt nhất là gần với mức tối đa (so với thuật toán).
  • người khác có thể đọc, cải tiến, bảo trì được dễ dàng.
  • chạy tốt các test.
  • không có các phần trùng lặp về chức năng
  • nội dung code giống với những gì bạn dự kiến (câu này có thể hơi khó hiểu, trong chương 3 function sẽ được nói kỹ hơn)
  • giảm bớt số lượng tất cả: class, function, variable,…

Ok, vậy là đã đi qua chương 1. Lâu rồi mình không viết kiểu này nên viết cũng hơi chậm, ngày mai mình sẽ viết về chương 2: Meaningful Names. Từ chương 2 trở đi, sẽ thiên về các kỹ thuật, có ví dụ đi kèm, nên đọc chắc sẽ hữu ích và thú vị hơn.

9 Likes

Cảm thấy rất vui vì anh (?chắc là lớn tuổi hơn rồi) đã tạo một topic rất đúng tinh thần DNH.
Em cũng muốn đọc quyển này lắm, nhưng chưa đào đâu ra được thời gian. Có anh review thì còn gì bằng.

@Luong_Quang_Manh Mình vốn học python nhờ xem vid của anh Đạt mà. Vả lại, việc viết ra là 1 cahcs học rất hiệu quả, mình thấy chỉ kém việc thuyết trình mà thôi :smiley:

Đạt cũng muốn đọc quyển này, do thấy được Jeff giới thiệu. Tiếc là không làm Java nên chưa đọc. Đạt đã đọc quyển khác của Uncle Bob là quyển The Clean Coder.

Phải nói là trên cả tuyệt vời, tối nằm đọc The Clean Coder để dễ ngủ mà có khi gặp nhiều đoạn tâm đắc quá hành thử không muốn ngủ luôn. Hóng review Clean Code từ Tulip.

Uncle Bob là người đã làm thay đổi tư duy lập trình của Đạt trong thời gian gần đây. Đạt đã thực hiện một switch trong nghề nghiệp của mình sau khi đọc xong quyển The Clean Coder, sẽ làm một topic review khác như Tulip. – Không lan man nữa, off-topic mất :smiley:

@ltd Vâng, em đọc thấy giới thiệu thì 2 cuốn Clean code và The clean coder nói về 2 chủ đề khác nhau, cuốn The clean coder nói về việc lập trình viên nên đối phó với các vấn đề về code ngoài code như thế nào, trong khi Clean code thuần tuý là viết code sạch hơn.

Rất hoan nghênh cái trò review sách này. Bởi trong một biển sách tìm được cuốn sách đúng vấn đề mình quan tâm rất khó. Việc review sách sẽ khiến mọi người có thêm căn cứ để chọn đọc đúng cuốn mình cần :smiley:

@Xuan_Giang Mình cũng đang tính làm 1 side project về việc kiếm sách trong biển sách đây :))

btw, bác @Tulip có thể chia sẻ làm sao bác có động lực làm việc liên tục như thế ạ :smiley: em cảm ơn

@hoangtrung1999 mình lười lắm :)) ai cũng bảo vậy và mình cũng thấy vậy :)) Mình sinh năm 92, lại mới học code từ năm ngoái nên phải cố mà học cho nhanh để bắt kịp mọi người thôi, mấy đứa 93 94 mới ra trường so với mình là hơn 3 4 năm được học rồi.

9 Likes

em cũng đang học python :))

đã đọc quyển này gần 1/2 , bỏ chưa có time tiếp tục để hoàn thành cuốn này :slight_smile:

e cũng đã đọc được 1 phần quyển sách sau đó bỏ đi học lại oop vì đọc được vài thứ xong cảm thấy nghi ngờ độ hiểu oop của mình :smile:

me too.
Làm quen đi anh. :slight_smile:

Bạn @Tulip tự học code và Data Science hay theo học ở đâu thế. Mình cũng quan tâm lĩnh vực này mà chưa biết nên bắt đầu thế nào, hiện tại công việc cũng không liên quan. Mình được đào tạo hẳn hoi mà cảm thấy trình độ ko bằng được tay ngang như bạn, có hơi xấu hổ :cry:

1 Like

yes, cảm ơn topic. mình chuẩn bị đi in ra và đọc, download về rồi mà chưa đọc bao giờ, hy vọng sẽ trao đổi nhiệt tình qua Topic :slight_smile:

1 Like

Không biết topic này còn được theo dõi nữa không?

Mình cũng đang đọc, và review summary của quyển này.
Các bạn có thể theo dõi và đóng góp ở đây: https://devnhanguoita.com/categories/Code-sach-nha-nguoi-ta/

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?