Các thói quen xấu khi viết code của người mới lập trình
Photo by Glenn Carstens-Peters on Unsplash |
Chào mọi người, năm học vừa rồi mình có cơ hội tiếp xúc với nhiều bạn mới làm quen với lập trình. Đồng thời có review code của các bạn đó. Dưới đây là các điểm mình thường xuyên gặp phải trong quá trình đọc code mà mình cho là xấu. Nếu loại bỏ được chúng, mình tin rằng các bạn sẽ tiến xa hơn trong lập trình.
Lưu ý: Những gì mình sắp nói tiếp theo hoàn toàn dựa trên quan điểm và kinh nghiệm lập trình của mình. Tuy nhiên, một số điều thật sự được coi là bad-practice (thói quen xấu) trong giới lập trình viên.
1. Code quan trọng là thuật toán
Ở phổ thông, các kỳ thi Tin học đều là thi chú trọng vào thuật toán. Điều này dẫn tới nhận định rằng: “Trong lập trình, cái quan trọng là thuật toán”. Điều này dẫn tới việc nhiều bạn chỉ chú ý tới việc tìm lời giải hay và tối ưu nhất khi code nhưng lại quên chia hàm, đặt tên biến bừa bãi. Kết quả của thói quen này chính là những đoạn code thiếu tổ chức và “bốc mùi”. (Hay còn gọi là code xấu)Tư duy “Thuật toán là trên hết” là một tư duy rất độc hại. Nó ngăn cản người mới chú tâm vô những kỹ năng khác của lập trình mà sẽ theo chúng ta suốt chặng đường như kỹ năng viết code sạch, dễ bảo trì và mở rộng, kỹ năng chia module và tổ chức chương trình,…
2. Sợ Tiếng Anh
Một điều mà mình rất thường thấy trên mạng hoặc trao đổi với mấy đứa bạn của mình đó chính là sợ tiếng Anh kinh khủng. Ở trên mạng thì khi xin tài liệu thì phải xin tài liệu tiếng Việt, video có phụ đề tiếng Việt. Còn tụi bạn mình thì ổn hơn, bọn nó chỉ kinh hoàng một chút khi mình đưa vài quyển ebook tiếng Anh thôi.Có một sự thật là khi các bạn sợ tiếng Anh thì các bạn tự giới hạn khả năng tiếp nhận thông tin của mình đi rất nhiều. Tiếng Anh bây giờ là ngôn ngữ quốc tế và nhất là trong Công nghệ Thông tin. Nhiều hướng dẫn hay đều là tiếng Anh và các bài giảng hay các bài viết về chủ đề mới đều bằng tiếng Anh. Khi bạn học ngành này, 100% khả năng bạn sẽ phải gặp nó. Không chạy được đâu.
3. Viết code bằng tiếng Việt
Đây là một hệ quả từ việc không giỏi tiếng Anh nên nhiều bạn thích viết code bằng tiếng Việt hơn. Dựa trên quan điểm riêng của mình, mình cho rằng đó là một thói quen xấu. Việc viết code bằng tiếng Việt không gây hại nhiều lắm khi đó là code của bạn và bạn viết cho bản thân hoặc mấy đứa bạn đọc với nhau. Nhưng về lâu về dài, viết code bằng tiếng Việt sẽ biến thành thói quen khó sửa. Đến khi đó, bạn sẽ không thể đóng góp vào các dự án mã nguồn mở (trào lưu khá là nổi tiếng hiện nay) để nâng cao tay nghề của mình. Bạn đồng thời cũng không thể làm ở công ty nước ngoài được đâu vì mình chắc chắn họ không code bằng tiếng Việt.4. Không chịu tổ chức chương trình
Một điều mà mình rất hay gặp khi review code của mấy bạn mới lập trình. Trong học kỳ vừa rồi, lớp mình có một đồ án làm game của môn Kỹ thuật lập trình. Sau khi đồ án kết thúc, mình có cơ hội nghe một cậu bạn kể rằng lẽ ra chương trình của họ lúc đầu chạy được. Tuy nhiên, do màn hình chơi nhỏ quá nên cần điều chỉnh cho nó to hơn và thế là toàn bộ chương trình không hoạt động như ý muốn nữa. Lý do cũng là vì mỗi thành viên chưa thống nhất quy tắc code chung và thế là người thì xài biến toàn cục, người thì sử dụng giá trị số bình thường.Đây là sai lầm thường mắc phải đối với những ai chưa tiếp xúc nhiều với các dự án phần mềm hay các framework. Khi code trên trường, điều chúng ta cần làm là giải bài tập và bạn có thể viết mọi thứ vào hàm main và mặc kệ nó. Miễn sao nó chạy là được. Nhưng không, hoàn toàn không đối với một chương trình lớn nơi mà bạn cần liên tục mở rộng, thay thế, sửa lỗi. Lúc này viết mọi thứ vào hàm main sẽ chỉ làm mọi thứ tệ hơn thôi.
Cách luyện tập tốt là bạn nên suy nghĩ đến cách chia file và chia hàm trong suốt quãng thời gian bạn code. Trước khi code, bạn cần suy nghĩ xem những dòng mã nào mình sẽ dùng nhiều trong chương trình và bỏ chúng trong một hàm. Trong khi code, những hàm hỗ trợ, những hàm nhỏ nào mà ta đột nhiên cần sử dụng nhiều trong hàm chính. Cuối cùng, khi đã code xong, hãy xem lại toàn bộ chương trình và đống gói những đoạn code phức tạp thành một hàm riêng với tên hàm tượng trưng cho công việc chúng làm.
Đây là một ví dụ được lấy ra trong đồ án game của nhóm mình. Ở dưới là những gì bọn mình viết trong hàm main của chương trình.
Bạn có thể thấy nó rất cô đọng và không quá khó hiểu.
Mục tiêu chính của tổ chức chương trình chính là đóng gói chúng thành các nhóm trừu tượng phụ trách một nhiệm vụ cụ thể. Điều này khiến code không phụ thuộc vào nhau dẫn đến các lỗi logic. Đồng thời, một ưu điểm trong tổ chức chương trình chính là dễ đọc, hình dung và debug.
5. Đặt tên biến bừa
Có một sự thật là đặt tên là một trong những công việc khó nhất nhưng vì tâm trạng của người đọc, bạn nên chú ý kỹ tới chúng. Bạn đã bao giờ đọc một đoạn code dài nhưng tên biến toàn ‘a, b, c’ chưa? Nó là một cách viết tệ vì nó bắt bạn phải ghi nhớ biến này là gì, biến kia từ đâu ra. Điều này khiến bạn khó khăn hơn khi vừa phải đọc code vừa phải ghi nhớ tác dụng của các biến.Một cách tốt hơn để làm việc này đó chính là đặt luôn tên biến là ý nghĩa của giá trị chúng giữ. Ví dụ như:
int hoursPerDay = 24;
int minutesPerHour = 60;
int minutesPerDay = hoursPerDay * minutesPerHour;
Sẽ dễ đọc hơn.int a = 24;// <-- wtf is this?
int b = 60;// <-- wtf is this?
int c = a * b;// <-- wtf are you trying to do?
6. Lệnh if trên một dòng
Trong các ngôn ngữ thuộc gia đình C, nếu đằng sau các lệnh if, while, for không có ngoặc thì nó sẽ mặc định thân của nó là dòng lệnh kế tiếp. Và nguyên tắc này đã khai sinh ra một cách viết.if( <Condition> ) <Statement>
hay làif( <Condition> )
<Statement>
Cá nhân mình thấy viết kiểu này sẽ thuận mắt hơn.if( <Condition> )
<Statement>
Khi mình code, mình canh lề đàng hoàng để dễ đọc hơn. Thực sự khi mình gặp 2 cách viết kia nhìn rất là ngứa mắt và không có hứng đọc.Tổng kết
Vậy ở trên là những điều mà mình thấy nhiều bạn mới lập trình thường gặp phải. Đây hoàn toàn là quan niệm chủ quan của mình. Mình mong rằng các bạn có thể rút ra được điều gì đó sau khi đọc bài này và nếu không may bạn là một trong những người có những thói quen trên. Sửa chữa chẳng bao giờ là muộn cả.Cảm ơn các bạn đã đọc
Nhận xét
Đăng nhận xét