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 diễn đàn, hy vọng của mình là mỗi ngày đọc và review được 2 chương.
Clean Code: A Handbook of Agile Software Craftsmanship
Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code ...
4.2 out of 5 stars, ISBN: 978-0132350884, Prentice Hall, August 11, 2008, $31.56
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.
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 diễn đàn.
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.
Đạ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
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
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ế ạ em cảm ơn
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 ạ ?
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.
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:
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.
@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
@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.
@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 :))
@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.
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
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
me too.
Làm quen đi anh.
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ổ
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
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/