3 điểm bởi GN⁺ 2023-09-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết thảo luận về tính dễ đọc của mã tuyến tính, đồng thời đặt câu hỏi phản biện góc nhìn do Google Testing Blog đưa ra
  • Tác giả không đồng ý với lập luận của Google Testing Blog rằng các hàm tách biệt theo mức độ trừu tượng sẽ dễ đọc hơn
  • Tác giả cho rằng mã tuyến tính được đọc từ trên xuống dưới trực quan và dễ hiểu hơn so với mã liên tục qua lại giữa nhiều mức độ trừu tượng khác nhau
  • Tác giả minh họa lập luận của mình bằng ví dụ về một hàm nướng pizza, đồng thời đặt câu hỏi liệu hàm nướng pizza có nên tự làm nóng lò hay lò phải được làm nóng trước
  • Tác giả cho rằng tính dễ đọc của mã không đến từ cấu trúc tách biệt các mức độ trừu tượng, mà đến từ việc mỗi phần của mã giải thích rõ ràng nó làm gì
  • Tác giả phản đối việc tách các hàm nhỏ ra khỏi mã tuyến tính, đặc biệt khi chúng chỉ được dùng một lần, và kết luận rằng lợi ích đó không bù đắp được cho việc mất đi tính tuyến tính
  • Tác giả cũng chỉ ra vấn đề tiềm ẩn liên quan đến hàm nướng pizza, đặt câu hỏi vì sao mỗi lần làm pizza lại tạo một lò nướng mới, điều này có thể gây ra vấn đề hiệu năng trong mã thực tế
  • Tác giả đề xuất rằng lò nướng nên là tham số của hàm và trách nhiệm cung cấp nó phải thuộc về bên gọi, đồng thời hàm nên trả về hộp thay vì pizza

1 bình luận

 
GN⁺ 2023-09-17
Ý kiến Hacker News
  • Tính dễ đọc của mã tuyến tính và mã mô-đun là vấn đề phong cách, đòi hỏi khả năng phán đoán và cảm quan tốt.
  • Trừu tượng hóa quá mức có thể dẫn đến sự gắn kết sớm trong mã.
  • Việc tách hàm để trừu tượng hóa các đơn vị công việc có thể giúp sắp xếp thuật toán, nhưng cần được dùng một cách thận trọng.
  • Đoạn mã ví dụ được đưa ra khá đơn giản và kém khả năng mở rộng. Cũng cần cân nhắc tính tái sử dụng và khả năng kiểm thử đơn vị.
  • Refactor quá mức có thể khiến việc bảo trì khó hơn do phát sinh nhu cầu phải di chuyển các phần khác của mã.
  • Mã tuyến tính dễ đọc vì nó đi theo thứ tự thực thi, nhưng kém khả năng mở rộng trong các codebase lớn.
  • Những hàm ngắn gọn với call stack lồng sâu có thể trở thành cơn ác mộng trong các codebase lớn.
  • Mã tuyến tính tốt thì dễ đọc hơn, nhưng khó bảo trì và kiểm thử hơn.
  • Giữ cho hàm nhỏ nhất có thể và gần với một mục đích duy nhất là một thực hành tốt.
  • Cấu trúc của mã nên được tổ chức phù hợp với các use case kinh doanh để dễ di chuyển.
  • Cả mã tuyến tính lẫn mã mô-đun đều được đọc theo cách tuyến tính, nhưng thứ tự của các hàm có thể ảnh hưởng đến tính dễ đọc.
  • Mã thực tế thường phức tạp hơn, và người đọc cần một cái nhìn tổng quan ở mức cao để không bị lạc trong các chi tiết.