Coder Cần Biết: 10 Công Thức Của Code Xấu

Coder Cần Biết: 10 Công Thức Của Code Xấu

Viết code là một công việc phức tạp. Để cho ra đời một đoạn code tốt đòi hỏi lập trình viên phải tốn khá nhiều thời gian và công sức. Hầu hết những người mới vào nghề thường viết code theo kiểu “miễn sao chạy là được”. Đây là một thói quen xấu mà nếu không thay đổi ngay từ đầu, sẽ rất khó sửa về sau.

Code xấu là từ được dùng để chỉ phần code mà ta cảm thấy không ổn. Đây thường là đoạn code vi phạm những quy tắc trong lập trình. Giả sử bạn đang đọc một bài viết và bắt gặp một lỗi chính tả. Ngay lập tức, bạn có cảm giác ngờ ngợ, khó chịu. Khi xem code, ta cũng có những phản ứng tương tự. Lúc đó, ta đánh hơi thấy mùi code xấu.

1. Hard-coding

Đây là lỗi dễ phát hiện và ngăn chặn nhất. Mỗi lần thay đổi giá trị, bạn lại phải sửa code. Điều này rất mất thời gian trong khi bạn có thể bắt đầu bằng cách khác để dễ dàng hơn cho việc fix lỗi sau này. Nhưng thông thường, nó lại được thực hiện tạm thời cho đến khi dự án giải phóng tài nguyên để thêm giải pháp động cho phép người dùng nhập giá trị.

Post image
Giải pháp: Tạo giao diện động để cho phép thay đổi giá trị.

2. Con số từ trên trời rơi xuống

Sở dĩ gọi chúng là những con số từ trên trời rơi xuống bởi chúng là những số bỗng dưng xuất hiện và được sử dụng ngay trong đoạn code bởi vì bỗng dưng người code bạn cần đến nó.

Ví dụ:

function(){
for(int i=0; i<10; i++) {
}
}

Trong trường hợp này, 10 chính là con số mà chúng ta nhắc tới.

Giải pháp: Thay thế 10 bằng một biến được khởi tạo bằng giá trị 10.

3. Lệnh If quá dài

Đây là ví dụ của một dòng lệnh if quá dài. 

if(get_data(data)=success || (reuse(data)&&cut_data(data)==success)||(reuse_again(data) && cut_data(data)==success))

Các điều kiện dài đến mức 1 dòng không thể hiện thị hết câu lệnh, rất khó có cái nhìn trực quan để có thể hiểu đoạn code.

Giải pháp: Các dòng nên được tách ra để đơn giản hoá đoạn code. Sử dụng và tuần thủ Programming style guide của ngôn ngữ mà bạn code để giảm tối đa những câu lệnh if dài như thế này.

4. Comment quá phức tạp

Nếu comment của bạn nằm trong một khối quá lớn hoặc quá phức tạp thì nó mang dấu hiệu cảnh báo rằng code của bạn có lẽ cần được cải tiến rồi. Sau khi sửa các comment của mình ngắn gọn dễ hiểu hơn, hãy thử kiểm tra xem các có yếu tố nào trong bài này mà đoạn code của bạn mắc phải không nữa nhé.

Giải pháp: Cải tiến code bằng cách trích xuất các phương thức hoặc biến. 

5. Code không thể truy cập

Đây là ví dụ của một code mà bạn sẽ không bao giờ hiểu được. Một đoạn code đơn giản nhưng thiếu tính logic như vậy không mang lại lợi ích gì cho công việc của bạn, nó chỉ làm đoạn code của bạn thêm khó hiểu và rối hơn.

function {} {
return x;
z=a+b;
}

Giải pháp: Đơn giả là hãy xoá nó đi.

6. Những đoạn code vô dụng và các class lười biếng

Loại code kiểu này hoàn toàn là thừa thãi và không thực hiện một chức năng gì.

function() {
a+b;
}
or
function() {
c=a+b;
c=a;
c=b+c;
}

Giải pháp: Viết lại đoạn code một cách logic, nếu không thì đừng dùng nó nữa, xoá nó đi.

7. Các lớp quá rộng

Nếu phải mất 20 phút đọc code bạn mới có thể tìm ra ý nghĩa của một class, vậy thì thôi bỏ đi. Class dài sẽ khiến cho việc đọc code để bảo trì trở nên khó khăn hơn. Theo nguyên tắc Single responsibility principle thì 1 class chỉ nên làm 1 nhiệm vụ duy nhất.

Giải pháp: Cải tiến lại đoạn code sao cho class của nó ngắn nhất có thể.

8. Chuỗi tin nhắn

Một chuỗi tin nhắn có thể ví như là là một giáo viên nói chuyện với học sinh A, học sinh A nói chuyện với học sinh B, v.v .. Giáo viên ở đây chính là khách hàng. Học sinh chính là đối tượng trong chuỗi. Vấn đề ở đây là bất kỳ thay đổi nào trong các mối quan hệ này đều yêu cầu thay đổi trong máy khách.

Giải pháp: Ẩn đi các ủy nhiệm từ người này sang người khác.

9. Khối dữ liệu

Đây là khi các phần khác nhau của mã chứa cùng một nhóm biến. Một ví dụ kinh điển là khi bạn tìm thấy các tham số để kết nối với các dịch vụ nhiều lần trong đoạn code.

Giải pháp: Tạo một đối tượng tham số mới hoặc trích xuất lớp.

10. Có sự nối tiếp

Tức là khi code, các phương thức phải được gọi theo một thứ tự cụ thể. Ví dụ: phương thức "begin" của bạn phải được gọi trước phương thức "start" rồi mới đến phương thức "drive"

Giải pháp: Sử dụng các phương thức mẫu.

Kết

Giờ bạn đã biết về 10 yếu tố làm ảnh hưởng đến chất lượng code của bạn, hãy cùng kết thúc bằng cách định ra các yếu tố để khiến code của bạn tốt hơn:

  • Là đoạn code có tổ chức, được test kỹ lưỡng và là những đoạn code đơn giản.
  • Là đoạn code dễ hiểu đến mức bạn có thể giải thích chúng cho những người chưa biết gì về code.
  • Là đoạn code có thể tồn tại và reuse.

Bạn cũng có thể tham khảo các quyển sách nổi tiếng về clean code tại đây để code của mình tốt hơn.

Tham khảo medium.com