Tại sao các code xấu vẫn được tạo ra

toannm

Bạn có từng tự hỏi vì sao nhìn đâu cũng thấy code xấu? Có một vài lý do khiến điều này xảy ra.

Tại sao trong ngành công nghiệp phần mềm,code xấu vẫn liên tiếp được tạo ra?

Số lượng Devs có khả năng xây dựng các hệ thống với code chất lượng cao khá hiếm, tìm được một người như vậy không khác gì tìm kim đáy bể.

12547126-low-quality-code.jpg

1. Lý do hiển nhiên

Các lý do hiển nhiên nhất có thể kể đến là tồn tại những lập trình viên giỏi và không giỏi, có những người có trình độ cao và những người có trình độ thấp hơn, có những người tận tâm với nghề và những người còn lại chỉ để ý đến tiền lương.

Các lý do hiển nhiên đó đã khá rõ ràng, không cần đào sâu thêm. Vậy còn những lý do gì khác dẫn đến code xấu?

2. Kỳ vọng thấp

Một điểm được thừa nhận rộng rãi là giáo trình về lập trình tại các trường đại học hoặc các kiến thức thu lượm qua tự học, sách vở không bao giờ phản ánh chính xác nhu cầu công việc trong thực tế.

Do đó, những bài học đầu tiên về coding luôn đến từ công việc thực tế thông qua quá trình tích lũy kinh nghiệm. Code xấu đến từ những người mới là điều không thể tránh khỏi.

Khi người mới tạo ra code xấu là điều được mặc định, thông thường đây là kết quả nhận được!

Mặc dù một phần trong các lý do trên là đúng, vẫn có các phản biện khác có thể đưa ra, trong đó có 3 ý chính.

1. Bằng cách chấp nhận tiêu chuẩn thấp hơn cho những người mới, yếu tố chất lượng đang bị hạ thấp tầm quan trọng. Việc tạo chuẩn mực thấp dẫn đến hệ quả là tạo ra số lượng lớn Devs có đầu vào thấp, và nó tiếp tục dẫn đến điều 2.

2. Những người tận tâm với nghề và tự hào về chất lượng công việc của họ sẽ cảm thấy khổ sở khi phải hợp tác với hầu hết là các Dev có kỹ năng non kém.

3. Sự kết hợp của hai yếu tố trên đã dẫn đến thực trạng khá phổ biến ngày nay: ai cũng cho rằng mình có thể code và Devschuyên nghiệp được đối xử như một món hàng.

Kỳ vọng với người mới cần được đề cao hơn nữa. Ai sẽ thuê một bác sĩ nếu anh ta không thể thực hiện một ca phẫu thuật theo tiêu chuẩn cao nhất, hoặc thuê một phi công nếu anh ta không biết cách hạ cánh? Điều này đơn giản là không thể chấp nhận được. Vậy tại sao chất lượng thấp lại được chấp nhận trong ngành công nghiệp phần mềm?

Nguyên nhân sâu xa của Devs chất lượng thấp là gì?

3. Sách lập trình

Thật không may, những cuốn sách mà người mới thường đọc lại mô tả code ở mức độ khá nghèo nàn.

Hầu hết các cuốn sách dành cho người mới bắt đầu về bất kỳ ngôn ngữ lập trình nào đều chứa đầy mã xấu. Mã xấu ở mọi loại hình mà những người như Robert Martin đã đề cập trong các cuốn sách như Clean CodeLập trình thực dụng được sử dụng rộng rãi trong hầu hết các cuốn sách cho người mới bắt đầu như một vài đầu sách về Java hoặc một cuốn khác cho Chứng nhận SCJP.

Một số ví dụ về mã xấu có thể tìm thấy:

Các lớp, biến và phương thức được đặt tên xấu

i, ii, j, k cho các vòng lặp; clazz, SampleChapter1 cho tên lớp...

Không tách rời mối quan tâm

Các method main() dài ba trang thực hiện mọi thứ thay vì phân chia trách nhiệm thành các phương thức khác nhau.

Thực hành coding xấu

Hiếm thấy các Practice mã hóa tốt có gộp xác nhận kiểm thử (validation) hoặc xử lý ngoại lệ. Thay vào đó, thường thấy cácblock chung chung try()..catch(Exception e) bao gồm tất cả các code trong lớp.

Một cách khác là việc sử dụng dễ dãi các câu lệnh if-else, switch, goto, v.v.

Shortcuts

Các cuốn sách cần phải loại bỏ các nội dung “sửa lỗi nhanh”. Ví dụ, không có gì lạ khi tìm thấy các phương thức với 10 đối số.

Cần làm hai loại tính toán? Không có vấn đề gì, hãy truyền tham số Boolean và thêm cấu trúc if-else. Cần thêm chức năng mới? Chỉ cần thêm code vào method dài hai trang! Đây chỉ là hai trong số các gợi ý phổ biến nhất.

Một cách tốt để học lập trình là nắm vững cú pháp của ngôn ngữ, các công cụ cần thiết để phát triển hiệu quả. Và thiết kế các thành phần và mô-đun tạo nên mã - theo thứ tự đó.

Thật không may, hầu hết các cuốn sách dừng lại ở cú pháp mà thậm chí không chạm vào các chủ đề của các công cụ và cải tiến thiết kế. Những người mới bắt đầu luôn hấp thụ nhiều hơn những gì tác giả dự định dạy. Mặc dù mục tiêu của những cuốn sách này là dạy cú pháp ngôn ngữ lập trình, người đọc cũng chọn ra phong cách và phương pháp mã hóa.

Khi mọi người đang học code, điều quan trọng là dạy họ rằng code được viết cho người khác đọc và hiểu, không chỉ cho trình biên dịch.

Hy vọng một trong số độc giả của đọc bài viết này sẽ trở thành tác giả của một cuốn sách dạy coding trong tương lai, hãy nhớ viết về mã tốt trong cuốn sách! Hướng dẫn cách tạo ra mã tốt không chỉ nên giới hạn trong sách dành cho chuyên giamà nên là một phần của mọi cuốn sách về lập trình!

Khi những cuốn sách dành cho người mới bắt đầu chứa mã có chất lượng kém nhất, có thể mong đợi điều gì được tạo ra từ những người đọc chúng?
 
Top