Spaghetti code

Spaghetti Code

Meaning

"Spaghetti code" là một từ miệt thị ám chỉ chương trình có luồng code rối rắm phức tạp. Dẫn đến hiện tượng chương trình khó bảo trì và phát triển. Nó xảy ra nhiều trên các chương trình cũ khi chương trình được viết ra không thể tiếp tục phát triển và chặn đứng hoàn toàn khả năng phát triển mở rộng của sản phẩm. Các tệp bị phân mảnh nặng và phân tán. Nó cũng được mô tả như là hiện tượng phản mẫu lại hướng lập trình hướng đối tượng (viết theo kiểu thủ tục).

Về tốc độ có thể tạm bỏ qua. Những chương trình này có thể đạt được tốc độ tốt đến khá tốt ở một vài khía cạnh nhưng giảm đáng kể đi tính dễ hiểu của hệ thống. Những người tiếp theo bảo trì phần mềm sẽ gặp rất nhiều rắc rối với những trường hợp phải xử lý ngoại lệ mà chương trình tạo ra.

History

Không rõ cụm từ này được bắt đầu từ khi nào nhưng lần đầu tiên nó được viết trực tiếp vào sách là cuốn "A primer on disciplined programming using PL/I, PL/CS, and PL/CT" của tác giả Guy Steele. Cuốn sách đó mô tả là "chương trình có cấu trúc logic rõ ràng như một đĩa mỳ spaghetti". Do hàng loạt những vấn đề của mã spaghetti gây ra, hội đồng chung châu Âu đã phải ra luật buộc lập trình viên phải tạo ra mã dễ hiểu thay vì mã spaghetti. Thậm chí, nếu bạn học ngôn ngữ C++ thì sẽ rất hiếm khi bắt gặp câu lệnh 'goto' mặc dù nó có trong ngôn ngữ này. Đây không phải là câu lệnh khó hiểu, thậm chí còn không hề nguy hiểm chết hệ thống hoặc thay đổi dữ liệu nhưng nó gây ra rối mã. Luật ngầm đã được đặt ra là không được phép sử dụng 'goto' trong code vì hầu hết các trường hợp sử dụng goto đều có thể được thay thế bằng cách viết khác dễ hiểu hơn. Mặc dù lần đầu thử mọi người sẽ thấy không quá khó để hiểu logic sử dụng goto nhưng ai biết được người kế thừa cảm thấy câu lệnh này mạnh mẽ và tiện dụng nên lại sử dụng lại. Từ lúc này, chương trình có thể bắt đầu trở thành một bát mỳ ống.

Một số lý do dẫn đến mã rối

  1. Yêu cầu dự án không ổn định.
  2. Thiếu quy tắc về phong cách lập trình.
  3. Kỹ sư phần mềm không đủ năng lực.
Trong 3 quy tắc trên, dựa trên những dự án outsource thì lý do thứ nhất có thể sẽ luôn phải chấp nhận. Với lý do thứ ba thì không phải lúc nào cũng có một kỹ sư phần mềm đủ năng lực để làm hết tất cả mọi việc nhưng 'cần có ít nhất' một người đủ khả năng để dẫn dắt và quản lý dự án được viết theo đúng đường lối. Còn lý do thứ hai là lý do quan trọng. Dù có làm thế nào thì khi xây dựng chương trình cần phải đảm bảo quy tắc lập trình và phong cách lập trình. Tránh mỗi người code một kiểu khiến chương trình trở nên lộn xộn và khó nắm bắt.

Nhận xét

Bài đăng phổ biến từ blog này

Cách tạo ra một phần mềm exe với python