Sự Khác Biệt Giữa Code Bẩn Và Code Sạch - Tuân FADBG
Có thể bạn quan tâm
- Sự khác biệt giữa code bẩn và code sạch
- Hàm bạn đã viết có “đúng chuẩn” Clean code ?
- Ngộ ra comment code phải chăng đều là thừa thãi
Code xấu hay code bẩn
Trước khi vào vấn đề chính, mình lấy một ví dụ động trời mà mình từng đọc được: Vào cuối những năm 80 của thế kỷ 19, có một công ty đã viết ra một killer app. Nó rất phổ biến, rất nhiều người đã mua và sử dụng nó. Sau một thời gian, ứng dụng đó bắt đầu nặng dần lên. Các phiên bản mới lần lượt phát hành nhưng các bugs không được sửa chữa ở các phiên bản sau, thời gian tải tăng dần và các lỗi cũng tăng theo. Đến một ngày mọi người bỏ ứng dụng đó sang một bên trong sự tiếc nuối và tức giận, thề sẽ không sử dụng lại nó một lần nữa. Và rồi ông ty buộc phải đóng cửa một thời gian ngắn sau đó. Hơn hai thập kỷ sau, khi hỏi một nhân viên đã làm ở công ty đó và câu trả lời thì cực kỳ sửng sốt. Họ đã nhanh chóng phát hành sản phẩm và để lại một đống rác to đùng trong ứng dụng. Lượng rác này ngày càng tăng đến nỗi họ không thể xử lý được. Chất lượng các dòng code ngày một kém dần và không thể quản lí nó nữa. Những dòng code đã khiến cả một công ty sụp đổ.
Câu chuyện đến đây là hết, có thể bạn chẳng thấy gì buồn cười bởi bạn chưa gặp phải những vấn đề như vậy bao giờ nhưng hãy để mình giải thích cho bạn một số thứ được gọi là code bẩn
String n; // your nameNhiều lúc nhìn mấy thằng bạn của mình viết lên những dòng kiểu như thế này, mình lại tự hỏi, tại sao không đặt biến n thay bằng name mà phải comment thừa thãi như vậy, chẳng lẽ vì cái n nhanh hơn hay sao?. Ký tự n chẳng nói lên cái gì cả, nó không hề khiến bạn liên tưởng đến tên một ai đó hay tên của chính bạn. Giả sử trong class hay function đó còn nhiều cái tên khác thì sao, bạn sẽ đặt tên như thế nào. Có thể bạn sẽ tốn kha khá nhiều thời gian chỉ để đặt tên biến hoặc đây là những project viết một lần và không được đọc lại nữa.
String yourName; String yourFatherName; String yourMatherName; String yourAge; String yourFatherAge; ...Mình dám cam đoan một điều rằng nhìn những tên biến trên bạn sẽ không còn cần phải comment làm gì nữa, dù có đọc lại thì bạn cũng không cần nhiều thời gian để “WTF, clgt” mà chỉ cần lướt qua. Như bạn đã biết, hầu hết các IDE hiện nay đều có chức năng complete code, nên bạn cũng chẳng mất mấy thời gian để gõ cả, làm như vậy đơn giản chỉ làm tốn thêm thời gian hiểu.
Đặt tên đầy đủ nghĩa và tránh những thông tin không cần thiết để code “sạch” hơn
Một ví dụ khác như thế này
ArrayList<SinhVien> list; // list Sinh Vien // lấy thông tin sinh viên public ArrayList get() { ... return data; } // hiển thị thông tin sinh viên public void show(ArrayList list) { ... }Thật là khó để hiểu những dòng code trên nói lên điều gì khi không có comment. Các tên biến và tên hàm vẫn còn quá trìu tượng. Nếu bạn đang dùng class khác và gọi đến class này thì bạn sẽ phải chuyển qua chuyển lại để xem các hàm này đang thực hiện gì.
ArrayList<SinhVien> sinhVienList; public ArrayList getSinhVienFromDatabase() { ... return data; } public void showSinhVienName(ArrayList sinhVienList) { ... }Sau khi được sửa lại thì chẳng cần comment nữa, khi bạn gõ code thì chỉ cần nhìn vào tên hàm và tên biến thì bạn sẽ biết được điều mà cái tên đó đại diện.
Một ví dụ khác như sau:
if (score > 100) startNewGame(); else { playAgain(); }Bạn hãy xem câu lệnh if bên trên có điều gì khó hiểu không? Đó chính là con số 100. Nó được gọi là hardcode, tại sao? Bởi vì nếu trong trò chơi của bạn có nhiều điều kiện để kết thúc game, nhiều điều kiện liên quan tới con số 100 này, trong chương trình có vài chục con số 100 như vậy và với cùng ý nghĩa thì bạn sẽ phải tìm đầy đủ và sửa nó nếu cần thay đổi. Như vậy hoàn toàn không khoa học và cũng rất khó hiểu nó ở mỗi vị trí khác nhau.
INT MAX_SCORE = 100; if (score > MAX_SCORE) { playNewGame(); } else { playAgain(); }Còn một vấn đề khá quen thuộc nữa mà mình thấy nhiều ban sinh viên mới học lập trình mắc phải đó là code linh tinh, xuống dòng, thụt lề không chuẩn gây khó nhìn và rối mắt, cách đơn giản nhất là chọn cho mình một IDE chuẩn và thông minh sẽ giúp code bạn đỡ xấu hơn. Nếu bạn muốn code của mình sạch hơn nữa thì có thể tham khảo thêm nguyên lí SOLID nhé, rất đáng quan tâm đấy.
Series NavigationHàm bạn đã viết có “đúng chuẩn” Clean code ? >>Từ khóa » Code Bẩn
-
Chuyện Code “sạch”, Code “bẩn”? - Hoonthenet
-
Clean Code (P1) - Viblo
-
DevZone - Hướng Dẫn Code BẨN A.k.a Anti-Clean-Code - Part 1 ...
-
Xin đừng Làm Code Bẩn - Dev Chat - Dạy Nhau Học
-
Này Anh Bạn Lập Trình Viên, Nếu Muốn Lên Trình Thì Hãy Viết Code Cho ...
-
Những Dòng Code Bẩn đưa Người Nổi Tiếng Vào Phim Khiêu Dâm
-
Chapter 1: Clean Code - CodeKeo
-
Mật Mã Tây Tạng 10 (The Tibet Code, #10) By 何马 - Goodreads
-
Học Cách Làm Sạch Code Bẩn - Code4Newbie
-
[z] Những Dòng Code Bẩn | Page 3 | Diễn đàn Game VN
-
Tin Tức Dòng Code Bẩn Mới Nhất
-
Clean Code Là Gì? Tại Sao Cần Phải Clean Code Trong Lập Trình
-
Tránh Code Thối (phần 2) - Techmaster
-
Những Dòng Code Bẩn đưa Người Nổi Tiếng Vào Phim Khiêu Dâm - VOZ