Sách: The art of readable code - Code thế nào cho chuẩn

Tham khảo: The art of readable code - Cái tên nói lên tất cả

Lời nói đầu:

Code should be easy to understand – code cần phải dễ hiểu

1. The art of readable code - Cái tên nói lên tất cả

Có lẽ, chỉ cần cái chạm mắt đầu tiên, các bạn cũng đã đoán ra được cuốn sách này muốn nói tới điều gì: readable code – tính dễ đọc của code.

Bấy lâu nay, chúng ta vẫn luôn mang một quan điểm lầm lẫn về việc viết code, chúng ta thường viết code cốt chỉ để cho máy tính biên dịch và chạy được, mà vô tình quên mất rằng: viết code còn để cho con người đọc và hiểu nữa. Lí do ư: việc phát triển phần mềm không chỉ dừng lại ở việc viết code ban đầu, mà còn cần phải được bảo trì và tiếp tục phát triển sau này. Rất nhiều người khác tham gia vào chu trình này chứ không chỉ một mình bạn.

alt text

Đã bao giờ bạn lâm vào tình trạng code của chính mình viết vài tháng trước đây nhưng hôm nay đọc lại bỗng không hiểu nó là gì, đã code xong tính năng sếp yêu cầu nhưng khi review cứ bị reviewer trả lại hoài. Hay đã bao giờ bạn đọc các đoạn code của người khác viết và tự hỏi: code như thế này thực sự “chuyên nghiệp” hay chưa nhỉ? ..v.v. Nếu đã từng 1 lần thắc mắc hoặc gặp phải những điều đó, có lẽ cuốn sách The art of readable code này là dành cho bạn.

2. Những vấn đề chính mà cuốn sách đề cập

Nếu như bạn còn có định kiến rằng: sách vở chỉ toàn nói chuyện hàn lâm, viết code là thực hành cơ mà, và cho rằng đọc sách không giúp cải thiện kĩ năng code thì bạn đã nhầm. Hãy nhìn vào slogan của cuốn sách: simple and practical techniques for writing better code, cuốn sách này chứa đựng những lời khuyên và ví dụ rất thiết thực, rất đúng chất “practical”.

Như mình đã nói ở trên, cảnh giới tối thượng của việc viết code cần phải đạt được là: code should be easy to understand – code cần phải dễ hiểu. Với tiêu chí này dẫn đường, sách đưa chúng ta qua ba cấp độ của việc viết code:

a. Cấp độ 1 – nhập môn viết code

Có thể nói, đây là phần dễ nhất nhưng cũng là phần gây đau đầu nhất trong lập trình. Thuở bắt đầu mới học code, bạn được hướng dẫn cách viết code để chương trình chạy, và chỉ thế thôi. Có ai từng dạy bạn cách đặt tên biến không nhỉ? Đã bao giờ bạn tốn mất hàng giờ đồng hồ để chọn ra một cái tên ưng ý cho biến, hay đã bao giờ bạn đặt tên biến kiểu temp1, temp2, final_result, … không? Một tuần sau, rồi một tháng sau, liệu bạn còn nhớ được ý nghĩa của cúng là gì không?

alt text

Đặt tên biến là một chuyện, rồi nếu giả sử code khó hiểu thì có nên comment không? Mà thế nào là code khó hiểu? Rồi thì comment thì viết cái gì bây giờ .v.v.. Thẩm mĩ của code cũng rất quan trọng, nghiên cứu chỉ ra rằng code được format rõ ràng sẽ dễ hiểu hơn so với viết cách lộn xộn, .v.v. Tóm lại, ở cấp độ một, cuốn sách sẽ hướng dẫn cho bạn cách để:

  • Đặt tên biến thế nào là hợp lí, làm thế nào để đặt tên có tính gợi nhớ cao, …
  • Có nên comment code hay không, nếu có thì comment như thế nào, viết ra sao, …
  • Tính thẩm mĩ của code, format code sao cho đẹp, dễ đọc, có tính mô tả cao, …
  • ...

b. Cấp độ 2 – tối ưu hoá các luồng xử lí và biểu đạt ngữ nghĩa logic

Ở cấp độ này, bạn được cung cấp cái nhìn ở mức bao phủ rộng hơn một chút. Hai vấn đề lớn mà chúng ta mà chúng ta hay gặp nhất trong quá trình viết code đó là việc kiểm soát luồng xử lí và việc mô hình hoá các biểu diễn logic.

alt text

  • Trong phần kiểm soát luồng xử lí, tác giả có đưa ra so sánh các loại vòng lặp khác nhau, ưu nhược điểm của chúng và khi nào thì loại này nên được sử dụng thay cho vòng lặp khác, cách xử lí vòng lặp lồng nhau, …. Không chỉ thế, các cấu trúc xử lí khác như if-else, switch-case, goto, … cũng được đưa ra bàn luận, tất cả đều kèm với ví dụ cụ thể để bạn có thể hình dung được vấn đề.

  • Đi song song với các luồng xử lí logic, là các biểu diễn logic. Chúng có thể là chuỗi các điều kiện so sánh, chuỗi kết hợp biểu thị logic đúng sai, … Cuốn sách đưa ra cho chúng ta một vài cách để tối ưu hoá các điều kiện so sánh cũng như biểu diễn lại logic mệnh đề thông qua luật De-Morgan, kĩ thuật dùng biến mô tả, phân rã các chuỗi biểu diễn phức tạp, …

c. Cấp độ 3 – Tái cấu trúc lại source code

Nếu đã đạt tới cảnh giới cấp độ 2, thì code của bạn trông cũng đã khá ngon lành rồi. Tuy nhiên, có thể phần mềm của bạn sẽ có nhu cầu mở rộng ra, cần phải được tái cấu trúc thiết để phần mềm đạt được hiệu suất cao hơn, … Do vậy mà chúng ta sẽ cần nâng cấp khả năng viết code lên tới cấp độ 3. Ở cấp độ này, các tác giả sẽ giúp bạn viết code ở một mức trừu tượng hơn rất nhiều:

  • Tách source code lớn thành các module con: phần này sẽ hướng dẫn bạn cách để tái cấu trúc lại ứng dụng, khi nào thì nên tách các xử lí ra riêng biệt, …
  • Tính đơn nhiệm trong thiết kế: Không nên để một hàm chịu trách nhiệm quá nhiều việc dẫn tới khó kiểm soát, đồng thời cũng tăng khả năng dính bug. Tính đơn nhiệm cũng được nhắc tới trong nguyên tắc 1 của SOLID.
  • Nâng cao tính đặc tả của code: code không chỉ cho máy mà còn cho người, do đó code cần mô tả được ý định của lập trình viên, việc dùng các thư viện đã có sẵn đôi khi cũng giúp ích rất nhiều …
  • Code ngắn mà chất: Bạn cần phải hiểu rõ yêu cầu, để không phải code quá nhiều dẫn tới dư thừa tính năng, lại có thể dễ dàng mở rộng trong tương lai. Code ngắn nhưng đủ cũng giúp ta hoàn thành công việc sớm hơn, tránh bị OT, ….

alt text

3. Một cái nhìn xa hơn

Cuốn sách là một bản hướng dẫn giúp chúng ta: code dễ hiểu hơn, code đẹp hơn, code chạy tốt hơn, … và vì thế mà code trở nên “xịn” hơn rất nhiều.

Cùng với cuốn The clean coder, bộ đôi này là một cặp kinh điển dành cho lập trình viên: The art of readable code chứa đựng những kiến thức mang tính practical – hướng dẫn về thực hành và kĩ năng cứng, còn The clean coder như một tập hợp kĩ năng mềm giúp điều chỉnh thái độ và định hướng con đường. (Cuốn Clean Code của cụ Uncle Bob cũng có nội dung tương tự cuốn The art of readable code)

Mình nghĩ là tất cả developer chúng ta đều nên đọc 2 quyển này, không những đọc một lần mà nhiều lần trong đời, rất xứng đáng với thời gian bỏ ra.

vcttai 21-06-2017

Tham khảo: The art of readable code - Cái tên nói lên tất cả

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Tấn Tài Vũ

11 bài viết.
95 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
29 6
Nguồn: (Link) Nhắc lại về các kiểu dữ liệu trong Javascript, ta có 5 kiểu dữ liệu cơ bản và 1 kiểu dữ liệu phức hợp. 5 kiểu dữ liệu cơ bản bao gồm...
Tấn Tài Vũ viết hơn 1 năm trước
29 6
White
28 9
Note: Bài viết nguồn ở đây: (Link) Con trỏ this có lẽ là một khái niệm không mấy xa lạ trong lập trình hướng đối tượng, nó là một thể hiện cho đố...
Tấn Tài Vũ viết hơn 1 năm trước
28 9
White
26 2
Mấy hôm nay có dịp ôn lại về HTTPS, mặc dù đã có nhiều tài liệu nói về giao thức này nhưng hầu hết chúng thường được mô tả bằng ngôn ngữ kĩ thuật t...
Tấn Tài Vũ viết 7 tháng trước
26 2
Bài viết liên quan
White
20 6
Regular Expressions hay còn được gọi với cái tên ngắn gọn là Regex là một trong những công cụ mạnh mẽ nhất và được áp dụng rộng rãi nhất trong việc...
Hoàng Nguyễn viết 1 năm trước
20 6
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
11 bài viết.
95 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!