Các số liệu phổ biến nhất để đo độ phức tạp (hoặc đơn giản, nếu bạn coi sự đơn giản là đối lập với độ phức tạp) là Độ phức tạp theo chu kỳ của McCabe và Số liệu độ phức tạp Halstead .
Độ phức tạp theo chu kỳ đo số lượng các đường dẫn riêng biệt thông qua một đơn vị nhất định, thường là một phương thức hoặc hàm, mặc dù nó cũng có thể được tính trên một lớp. Khi số lượng đường dẫn tăng lên, việc ghi nhớ luồng dữ liệu thông qua một mô-đun đã cho sẽ trở nên khó khăn hơn, có liên quan đến khái niệm bộ nhớ làm việc . Độ phức tạp chu kỳ cao có xu hướng cho thấy khó khăn trong khả năng kiểm tra một mô-đun - cần nhiều trường hợp thử nghiệm hơn để bao quát các đường dẫn khác nhau thông qua hệ thống. Cũng đã có những nghiên cứu đã liên kết độ phức tạp chu kỳ cao với tỷ lệ khuyết tật cao. Thông thường, độ phức tạp theo chu kỳ là 10 chỉ ra rằng một đơn vị nên được xem xét và có thể được tái cấu trúc.
Các biện pháp phức tạp Halstead sử dụng đầu vào của các toán tử và toán hạng tổng và riêng biệt để tính toán khối lượng, độ khó và nỗ lực của một đoạn mã. Khó khăn, đó là (số toán tử duy nhất / 2) * (tổng số toán hạng / số toán hạng duy nhất), gắn liền với khả năng đọc và hiểu mã cho các tác vụ như tìm hiểu hệ thống hoặc thực hiện đánh giá mã. Một lần nữa, bạn có thể tính điều này ở cấp độ hệ thống, cấp độ lớp hoặc cấp độ phương thức / chức năng. Có một vài bài đăng về tính toán các phép đo này ở đây và đây .
Chỉ cần đếm các dòng mã cũng có thể cho bạn một ý tưởng về sự phức tạp. Nhiều dòng mã hơn có nghĩa là có nhiều thứ để đọc và hiểu trong một mô-đun. Tôi sẽ do dự khi sử dụng nó như một phép đo độc lập. Thay vào đó, tôi sẽ sử dụng nó với các phép đo khác, chẳng hạn như số lượng khuyết tật trong một mô-đun nhất định để có được mật độ khuyết tật. Mật độ khiếm khuyết cao có thể chỉ ra các vấn đề trong việc viết bài kiểm tra và thực hiện đánh giá mã, điều này có thể hoặc không thể gây ra bởi mã phức tạp.
Fan-in và fan-out là hai số liệu khác, liên quan đến luồng dữ liệu. Như được định nghĩa ở đây , fan in là tổng của các thủ tục được gọi, đọc tham số và biến toàn cục đọc và quạt là tổng các thủ tục gọi một thủ tục đã cho, các tham số được ghi (tiếp xúc với người dùng bên ngoài, được truyền qua tham chiếu), và các biến toàn cục được viết thành. Một lần nữa, fan-in và fan-out cao có thể là dấu hiệu của một mô-đun có thể khó hiểu.
Trong các mô hình cụ thể, có thể có các biện pháp hoặc số liệu khác cũng hữu ích. Ví dụ, trong thế giới hướng đối tượng, khớp nối giám sát (ham muốn thấp), sự gắn kết (ham muốn cao) và độ sâu của thừa kế (ham muốn thấp) có thể được sử dụng để đánh giá mức độ đơn giản hoặc phức tạp của một hệ thống.
Tất nhiên, điều quan trọng là phải nhận ra rằng rất nhiều biện pháp và số liệu chỉ đơn giản là các chỉ số. Bạn cần sử dụng phán đoán của mình để xác định xem có cần thiết phải cấu trúc lại để tăng tính đơn giản hay không nếu nó không đáng để nỗ lực làm điều đó. Bạn có thể thực hiện các phép đo, tính toán các số liệu và tìm hiểu về mã của mình, nhưng bạn không muốn thiết kế hệ thống của mình theo các con số. Cuối cùng, làm những gì có ý nghĩa.