Cấu trúc code là một phần khó, nhưng rất quan trọng của lập trình. Viết code có cấu trúc tốt cần có tư duy đúng đắn, hiểu biết về các mẫu thiết kế (design pattern) và kinh nghiệm.
Tuy nhiên, những bài học này thường được học một cách cứng nhắc, hời hợt.
Lẽ ra, tầm quan trọng của cấu trúc code không nên bị đánh giá thấp - code cấu trúc tốt là rất quan trọng vì nó giúp ta dễ đọc và dễ duy trì.
5 Bài học về cấu trúc code
Đây là 5 cách bạn có thể cải thiện cấu trúc code của mình.
1. Suy nghĩ về thiết kế
Trước khi bạn bắt đầu viết code, có lẽ bạn nên suy nghĩ về cách bạn sẽ thiết kế ứng dụng mà bạn sắp xây dựng. Một cách rất tốt mà bạn có thể làm điều này là sử dụng các sơ đồ UML.
Bạn cần có một kế hoạch chi tiết trước khi bạn bắt đầu tập trung viết code.
Suy nghĩ về cấu trúc code của bạn và tạo một số sơ đồ UML mà bạn thấy hữu ích sẽ giải quyết được các lỗ hổng rõ ràng nhất.
Trên hết, nó có thể khiến bạn nhận thức rõ hơn về nhiều vấn đề cần giải quyết trước khi viết bất kỳ dòng code nào.
Các sơ đồ UML mà bạn đã tạo ra cho phép những suy nghĩ của bạn không bị trôi đi hoặc chừa chỗ cho một số tính năng mà bạn nghĩ có thể hữu ích trong tương lai.
Nếu bạn không dành thời gian thiết kế ứng dụng của bạn có thể giúp bạn bắt đầu thì cuối cùng bạn cũng sẽ phải làm.
Nhưng lúc đó, nó sẽ dẫn đến việc phải cấu trúc lại các phần lớn của code tốn rất nhiều thời gian.
Vì thế, hãy thật dành thời gian để thiết kế ứng dụng của bạn ngay từ đầu.
> Khi tham gia HỌC LẬP TRÌNH FULL STACK tại NIIT - ICT Hà Nội, bạn sẽ được học kỹ về tư duy thiết kế ứng dụng. Học lấy gốc rễ chứ không phải học lấy ngọn.
2. Code Conventions
Một phần lớn trong cấu trúc code của bạn phải thực hiện với các quy ước rõ ràng, nhất quán.
Các quy ước (Code conventions) là phải có cho mọi dự án. Không có quy ước khi lập trình, code của bạn sẽ trở thành một mớ hỗn độn không thể đọc được trong tương lai.
Lập danh sách các quy ước code, ghi lại cách khai báo các biến và một số quy ước đặt tên, v.v.
> Quy ước đặt tên trong Java
Số lượng quy tắc bạn có thể thêm vào danh sách này là không giới hạn và số lượng quy tắc có thể thay đổi.
Bạn cũng có thể thêm các quy tắc mới vào danh sách các quy ước nếu cảm thấy thích nó.
Hoặc loại bỏ một quy ước khỏi danh sách.
Một khi bạn đã có danh sách các quy ước, hãy bám vào nó!
3. Làm cho các class và hàm dễ hiểu hơn
Để giữ cho các class và hàm của bạn có thể đọc và duy trì được, có một số nguyên tắc bạn có thể làm theo:
-
Giữ cho các class và hàm nhỏ
-
Để các class và hàm tuân theo Nguyên tắc Trách nhiệm Duy nhất (SRP)
Giữ các class và hàm càng nhỏ càng tốt giúp code dễ hiểu hơn.
> Tham khảo: Nguyên tắc SOLID
Nó đơn giản chỉ là chia các class và hàm lớn thành các lớp chuyên biệt nhỏ hơn.
Tuân theo Nguyên tắc Trách nhiệm Duy nhất có nghĩa là mọi class và hàm chỉ nên làm một việc và một việc duy nhất.
Điều này không phải là giữ cho tất cả các class và hàm của bạn nhỏ tý. Hãy giữ nó trong giới hạn hợp lý.
Bởi vì, quá nhiều class nhỏ cũng tồi tệ hơn nhiều so với một vài class lớn hơn.
Ngoài ra, các chức năng lớn tìm nạp, xử lý và lưu trữ dữ liệu là không nên khi đi theo SRP.
Bạn phải chia chức năng này thành ba chức năng nhỏ hơn:
-
Một chức năng khác để lưu trữ dữ liệu.
4. Sử dụng Design Pattern
Tìm hiểu về các Design Pattern (mẫu thiết kế) và hiểu cách chúng hoạt động là một cách tốt để giúp cấu trúc code của bạn và viết code có thể đọc và dễ duy trì.
Bạn cũng cần phải biết những Design Pattern nào bạn có thể sử dụng trong một số tình huống nhất định mang lại cho bạn lợi thế. Chứ không cần tự mình đưa ra giải pháp nửa vời.
Chỉ cần tuân theo nguyên tắc thiết kế, code của bạn sẽ có cấu trúc tốt.
Nhưng, hãy cẩn thận để không lạm dụng các Design Pattern - nó cũng là cạm bẫy phổ biến nhất khi sử dụng các Design Pattern.
Mặc dù bạn có thể thực hiện một Design Pattern trong một tình huống nhất định, nhưng điều đó không có nghĩa là bạn nên làm.
Sử dụng quá nhiều Design Pattern, bạn sẽ nhận được một ứng dụng khó có thể nắm bắt được đối với các lập trình viên khác.
5. Viết unit test
Viết các bài unit test có tác dụng rất tốt, nó buộc bạn phải cấu trúc lại code của mình. Để có thể viết các bài unit test cho code của bạn, ít nhất code phải được cấu trúc đúng.
Bạn có thể đã nghe về vấn đề code không được test trước đây.
Nếu bạn không biết cách viết một bài unit test cho một đoạn code thì có lẽ vì nó làm quá nhiều thứ hoặc nó được thiết kế kém.
Dù bằng cách nào, nó cũng an toàn khi nói rằng việc xử lý code không thể kiểm soát được có một nguyên nhân: Code có cấu trúc tồi.
Bạn sẽ cần phải dành thời gian để tái cấu trúc code bất cứ khi nào code bạn không thể chạy unit test đúng.
Các bài unit test có thể được sử dụng như để buộc bạn phải cấu trúc code.
Tóm lại
Có một vài điều bạn có thể làm để cấu trúc code của mình. Tất cả bắt đầu trước cả khi bạn bắt đầu viết dòng code đầu tiên.
Hãy suy nghĩ về thiết kế của ứng dụng của bạn. Tạo sơ đồ UML giúp bạn giải quyết các lỗ hổng rõ ràng nhất.
Bất cứ khi nào bạn chuẩn bị sẵn sàng để viết code, hãy đảm bảo bạn có một danh sách các quy ước mà bạn cần phải tuân theo.
Điều này giúp làm cho code của bạn có thể đọc được và dễ duy trì.
Tìm hiểu về các mẫu thiết kế và thực hiện chúng có thể giúp bạn thực hiện điều này. Giữ các lớp và chức năng nhỏ và làm cho chúng làm một việc duy nhất.
Cuối cùng, nhưng không kém phần quan trọng, hãy bắt đầu viết unit test.
Các bài unit test buộc bạn phải viết code có cấu trúc tốt từ đầu, bởi vì nếu không. Bạn sẽ mất cả tuổi thanh xuân để tái cấu trúc code.
-- Daan
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python