Tên sách: Clean Code_Mã sạch và con đường trở thành Lập trình viên giỏi
Tác giả: Robert Cecil Martin(Uncle Bob)
Thời điểm viết: 2008
Số trang: 593
Thể loại: Giáo dục - Hướng nghiệp - Công nghệ
Ngôn ngữ : VN
Cánh cửa nào đại diện cho mã của bạn?
Cánh cửa nào đại diện cho nhóm của bạn, cho công ty của bạn? Tại sao chúng ta ở căn phòng đó?
Đây chỉ là quá trình đánh giá mã thông thường hay chúng ta đã tìm thấy hàng loạt các vấn đề nghiêm trọng ngay sau khi đưa phần mềm vào sử dụng?
Có phải chúng ta đang gỡ lỗi(debugging) trong hoảng loạn và miệt mài nghiên cứu các mã mà chúng ta cho rằng nó đã hoạt động?
Có phải nhiều khách hàng đang rời đi và người quản lý đang theo dõi chúng ta sát sao đến nỗi khiến chúng ta khó chịu?
Làm thể nào để có thể chắc chắn là chúng ta luôn chọn cánh cửa đúng dù quá trình đó là khá khó khăn?
Câu trả lời chính là: sự lành nghề.
Kiến thức và thực hành chính là hai chìa khóa của bạn cần để đạt được điều đó. Bạn phải có được kiến thức về các nguyên tắc, các hình mẫu, thực tiễn và tự học - những điều mà một người lành nghề biết. Bạn cũng phải nghiền ngẫm kiến thức thông qua đôi tay, đôi mắt, quyết tâm bằng cách làm việc chăm chỉ và thực hành nhiều lần.
Tôi có thể chỉ cho bạn nguyên tắc đi xe đạp. Quả thực, toán học cổ điển tương đối dễ hiểu. Trọng lực, ma sát, mô-men động, trọng tâm, và những điều tương tự có thể được chứng minh với ít hơn một trang các phương trình. Bằng các công thức, tôi có thể chứng minh việc giữ thăng bằng trên xe đạp là khả thi và cung cấp cho bạn tất cả các kiến thức bạn cần để làm điều đó. Tuy nhiên, bạn vẫn bị ngã khi lần đầu tiên leo lên chiếc xe đạp đó. Viết mã cũng vậy. Chúng tôi có thể viết ra tất cả những nguyên tắc của mã sạch mà chúng tôi "cảm thấy tốt" và tin rằng bạn sẽ làm theo được(nói cách khác, chúng tôi cứ để bạn bị ngã khi bạn đi xe đạp). Nhưng nếu vậy thì, chúng tôi không phải là những người thầy tốt và bạn sẽ không phải là học trò giỏi.
Do đó, đưa ra những bài học mang tính lý thuyết không phải là điều mà cuốn sách này hướng đến.
Học cách viết mã sạch là công việc khó khăn. Nó đòi hỏi nhiều hơn kiến thức về các nguyên tắc và mô hình. Bạn phải đổ mồ hôi sôi nước mắt vì nó. Bạn phải tự mình thực hành và tự mình thất bại. Bạn cũng phải xem những quá trình học thực tiễn của người khác và thất bại mà họ gặp phải. Bạn phải nhìn thấy họ vấp ngã và rà soát lại từng bước đã làm, thấy họ trăn trở khi ra quyết định và xem cái giá mà họ phải trả khi những quyết định đó dẫn đến sai lầm.
Hãy chuẩn bị làm việc chăm chỉ khi đọc cuốn sách này. Đây không phải là cuốn sách "nhẹ nhàng" mà bạn có thể đọc trên máy bay và hoàn thành trước khi hạ cánh. Cuốn sách này sẽ khiến bạn phải làm việc và làm việc chăm chỉ. Bạn sẽ làm gì? Bạn sẽ đọc về mã - rất nhiều mã. Và bạn sẽ được thử thách để suy nghĩ xem những dòng mã đó đúng ở đâu và chúng có những vấn đề gì. Bạn sẽ được yêu cầu làm theo khi chúng tôi chia nhỏ các module ra và liên kết chúng lại với nhau. Điều này sẽ mất thời gian và công sức nhưng chúng tôi nghĩ đến việc đó là đáng làm.
Chúng tôi chia cuốn sách này thành ba phần.
Phần đầu tiên mô tả các nguyên tắc, mô hình và cách thực hành viết mã sạch. Có khá nhiều mã trong các phần này và chúng sẽ rất khó đọc. Phần một sẽ là những chuẩn bị cần thiết để đi tới phần thứ hai.
Phần thứ hai là phần khó khăn hơn. Nó bao gồm nhiều tình huống điển hình với độ phức tạp gia tăng không ngừng. Mỗi tình huống là một bài tập giúp làm sạch mã - chuyển đổi mã có nhiều vấn đề thành mã có ít vấn đề hơn. Chi tiết trong phần này rất nặng. Bạn sẽ phải lật đi lật lại nhiều lần giữa các đoạn mô tả giải thích bằng lời và các đoạn mã. Bạn sẽ phải phân tích và hiểu những dòng mã đó, hiểu được lập luận đằng sau của từng thay đổi mà chúng tôi thực hiện. Hãy dành ra thật nhiều thời gian cho phần này vì bạn sẽ mất nhiều ngày đấy.
Phần thứ ba của cuốn sách này là phần thưởng cho những nỗ lực của bạn. Nó là một chương đơn chứa tuyển tập rất nhiều dấu hiệu của mã có vấn đề(code smell), những tìm tòi, suy nghiệm từ thực tiễn(heuristics - một phương pháp giải quyết vấn đề bằng cách sử dụng các quy tắc rút ra từ kinh nghiệm. Các phương pháp rất ít được đưa vào sách vở, nhưng đó là một bộ phận kiến thức mà các chuyên gia dùng để giải quyết vấn đề) được đúc rút qua các tình huống điển hình.
Trong quá trình chúng tôi nghiên cứu và làm sạch mã của các tình huống điển hình, chúng tôi ghi lại mọi lý do của những hành động của mình như là những dấu hiệu và suy nghiệm từ thực tiễn. Chúng tôi cố gắng tìm hiểu phản ứng của bản thân với những mã mà mình đang đọc và thay đổi, cố gắng làm việc chăm chỉ để hiểu được lý do tại sao chúng tôi lại cảm thấy như vậy và làm như vậy. Kết quả là một nền tảng kiến thức mô tả cách chúng tôi suy nghĩ khi viết, đọc và làm sạch mã.
Nền tảng kiến thức này sẽ mất đi giá trị nếu bạn không đọc cẩn thận các tình huống điển hình trong phần thứ hai của cuốn sách. Trong những tình huống điển hình này, chúng tôi đã chú thích cẩn thận từng thay đổi mà chúng tôi thực hiện với tham chiếu đến những suy nghiệm từ thực tiễn(những tham chiếu này được đặt trong ngoặc vuông như sau: [H22]). Điều này cho phép bạn thấy ngữ cảnh mà những suy nghiệm được áp dụng và viết ra.
Bản thân những suy nghiệm không có giá trị, giá trị nằm ở mối quan hệ giữa các suy nghiệm và những quyết định riêng biệt chúng ta đưa ra trong khi làm sạch mã ở các tình huống điển hình.
Để tiếp tục giúp bạn dễ dàng nắm bắt những mối quan hệ này, chúng tôi trình bày nguồn tham khảo chéo ở cuối cuốn sách, chưa thông tin những trang mà bạn tham chiếu được sử dụng. Bạn có thể sử dụng nó để tìm kiếm những tình huống mà một suy nghiệm cụ thể được áp dụng.
Nếu bạn đọc phần đầu tiên và phần ba, bỏ qua các tình huống trong phần hai, khi đó bạn sẽ phải đọc một cuốn sách "tương đối tốt" khác viết về phần mềm tốt. Những nếu bạn dành thời gian để nghiên cứu các tình huống, theo sát từng bước nhỏ, mỗi quyết định cụ thể - nếu bạn đặt mình vào vị trí của chúng tôi và buộc bản thân phải suy nghĩ theo cách mà chúng tôi nghĩ, thì bạn sẽ có được sự hiểu biết phong phú về những nguyên tắc, mô hình, thực hành và các suy nghiệm đó. Cuốn sách sẽ không còn là kiến thức "tương đối tốt" nữa. Nó sẽ nằm sâu trong tâm trí, hành động và trái tim của bạn. Nó sẽ trở thành một phần của bạn giống như cách mà một chiếc xe đạp trở thành một phần mở rộng trong ý chí của bạn khi bạn đã làm chủ được cách đi xe.
Trích giới thiệu sách