Danh sách kiểm tra này sẽ giúp bạn viết các chương trình chất lượng cao.
Raphael Finkel, 17/8/2005
- Định danh: Đảm bảo tất cả số nhận dạng của bạn có ý nghĩa.
- Định danh một chữ cái hầu như không bao giờ có ý nghĩa.
- Tên như cờ và nhiệt độ ít khi có ý nghĩa. Thay vì cờ , hãy cân nhắc đặt tên cho điều kiện Boolean mà nó kiểm tra, chẳng hạn như valueFound .
- Xem xét số nhận dạng nhiều từ, như nameIndex . Số nhận dạng dài (trong vòng lý do) có xu hướng rất dễ đọc.
- Bare literals: Tránh các số khác 0 và 1 và các chuỗi không phải là “” trong chương trình của bạn trừ khi bạn xác định các hằng số.
- Không sử dụng một số nguyên như là một mảng bị ràng buộc.
- Không sử dụng số nguyên bằng chữ làm tham số chạy, chẳng hạn như thời gian chờ hoặc số cổng.
- Không sử dụng số nguyên nguyên để chọn mục nhập trình đơn.
- Không sử dụng số nguyên bằng chữ để đo kích thước của chuỗi hoặc một số dữ liệu;sử dụng sizeof () và strlen () trong C và C ++ và .chiều dài() và .kích thước trong Java.
- Không sử dụng chuỗi ký tự cho tên tệp.Tuy nhiên, bạn có thể xuất ra các chuỗi ký tự.
- Không sử dụng số nguyên theo thứ tự để lập chỉ mục vào một mảng chứa dữ liệu không đồng nhất.
- Không khai báo số nhận dạng có tên biểu thị chữ, chẳng hạn như “ba mươi”.
- Modularization: Một chương trình được xây dựng từ các thành phần tương tác.
- Không đặt tất cả mã của bạn vào chủ yếu() công Việt Hằng ngày.
- Trong thực tế, không làm cho bất kỳ thói quen làm quá nhiều công việc.Nếu nó dài hơn 50 dòng, nó có thể là quá dài.
- Nếu bạn lặp lại mã nhiều lần, hãy xem xét liệu một vòng lặp sẽ hoạt động tốt hơn hay có lẽ là một chương trình con.
- Nếu bạn thấy bạn đang thụt lề rất sâu, bạn có thể không sử dụng các chương trình con khi bạn cần.
- Không phát minh lại thói quen thư viện (trừ khi bài tập của bạn yêu cầu nó).Tìm trong hướng dẫn sử dụng để tìm hiểu về sprintf () và atoi () , chẳng hạn.
- Sử dụng các tệp tiêu đề trong C và C ++ (tệp tiêu đề có tên kết thúc .h ) để xác định tất cả các hằng số cần thiết bởi nhiều tệp và khai báo tất cả các chương trình con được xuất giữa các tệp. Nhưng đừng đặt nội dung của các chương trình con trong các tệp tiêu đề (với ngoại lệ hiếm hoi của các trình con nội tuyến).
- Định dạng: Chương trình của bạn nên dễ đọc.
- Nhìn vào http://geosoft.no/development/javastyle.html cho các đề xuất rõ ràng về định dạng và các vấn đề trình bày khác. Tham chiếu này được định hướng cụ thể ở Java, nhưng nó cũng có giá trị cho các ngôn ngữ khác.
- Cố gắng hạn chế tất cả các dòng của bạn thành 80 ký tự;nhiều người xem mã trong cửa sổ 80 cột vì lý do lịch sử.
- Không sử dụng cả tab và dấu cách cho thụt lề, vì không phải tất cả trình chỉnh sửa văn bản đều xử lý các tab chính xác 8 dấu cách.
- Làm theo một mẫu thụt đầu dòng nhất quán phản ánh cấu trúc điều khiển của chương trình.
- Không đặt nhiều dòng trống trong chương trình của bạn.Một dòng trống giữa các chương trình con là đủ.
- Các hệ điều hành khác nhau chấm dứt các dòng khác nhau.Nếu bạn di chuyển giữa Win32 (sử dụng \ r \ n), Unix (sử dụng \ n) và MacOS (sử dụng \ r), định dạng lại tệp của bạn để sử dụng phương thức chấm dứt nhất quán.
- Không đặt bit thực thi (Unix) trên các tệp nguồn của bạn.
- Mã hóa: Bạn muốn mã hóa của mình rõ ràng, bảo trì và hiệu quả theo thứ tự đó.Một số quy tắc ở đây rất cụ thể; những người khác là tổng quát hơn.
- Không sử dụng chuỗi nếu tuyên bố không có khác nếu chỉ có một người có thể phù hợp; sử dụng nếu không .
- Khi bạn muốn phân loại đầu vào văn bản, không liệt kê các ký tự đầu tiên có thể.
- Sử dụng toán tử shift thay vì phép nhân để xây dựng các mẫu bit.
- Trong một công tắc điện tuyên bố, luôn kiểm tra trường hợp mặc định. Tương tự, trong một chuỗi if-then-else báo cáo, sử dụng khác .
- Tất cả các cuộc gọi hệ thống có thể thất bại.Luôn kiểm tra mã trả lại và sử dụng perror () để báo cáo sự thất bại.
- Booleans luôn sử dụng boolean gõ bằng Java, bool trong C ++ và 0/1 số nguyên trong C. Không sử dụng ký tự t và f, và không sử dụng -1 và 1.
- Sử dụng vòng lặp để khởi tạo cấu trúc dữ liệu nếu có thể.
- Sử dụng từng biến và mỗi trường của một cấu trúc cho đúng một mục đích.Đừng quá tải chúng, trừ khi có một lý do tuyệt vời để làm như vậy.
- Không sử dụng cùng một số nhận dạng cho cả loại, biến và tên tệp, ngay cả khi bạn thay đổi cách viết hoa.Nó quá khó hiểu.
- Nếu bạn đang sửa đổi dữ liệu với htonl () hoặc một thói quen tương tự trước khi truyền mạng, không sửa đổi dữ liệu tại chỗ. Xây dựng cấu trúc dữ liệu thứ hai.
- Cố gắng không sử dụng các biến toàn cầu hoặc không phải địa phương.Khai báo mỗi biến trong phạm vi nhỏ nhất bạn có thể. Có sử dụng hợp pháp các biến phi địa phương, nhưng chắc chắn rằng bạn thực sự cần chúng.
- Các chương trình Shell, Perl và Python cần có #! dòng là dòng đầu tiên của tệp; nếu không, dòng chỉ là một bình luận.
- Cố gắng tránh viết mã các trường hợp đặc biệt.Bạn thường có thể sử dụng dữ liệu giả hoặc các phương pháp cấu trúc dữ liệu khác cho phép bạn gấp các trường hợp đặc biệt vào các trường hợp thông thường.
- Trình biên dịch: Hãy để họ giúp bạn tìm ra những sai lầm
- Luôn luôn gọi trình biên dịch với tất cả các cảnh báo được kích hoạt.Đối với C và C ++, hãy sử dụng -Tường cờ. Đối với Java, sử dụng -Xóa: tất cả -deprecation và sử dụng pmd chương trình để nhận đề xuất cho phong cách tốt hơn. Đối với Python, sử dụng -t -W tất cả .
- Tất cả các chương trình Perl nên chạy với -w cờ và nên có sử dụng nghiêm ngặt . Tất cả các tập lệnh cgi-bin Perl phải có -T cũng vậy.
- Các chế tạo tiện ích: Sử dụng nó và sử dụng nó tốt.
- Một makefile nên luôn luôn có một công thức “sạch”, mà nên loại bỏ tất cả các tập tin có thể được xây dựng lại bởi các công thức nấu ăn khác trong makefile, bao gồm cả các đối tượng và các tập tin thực thi.
- Nếu dự án của bạn có nhiều tệp nguồn, tệp makefile sẽ tạocác tệp đối tượng ( .o ) khi cần và liên kết chúng với nhau.
- Makefile nên được viết để nếu bạn chạy chế tạo hai lần liên tiếp, lần chạy thứ hai không biên dịch lại.
- Mỗi công thức nên tạo tệp được chỉ định trong mục tiêu của nó.
- Mỗi công thức nên sử dụng mọi tệp được chỉ định trong danh sách điều kiện tiên quyết của nó.
- Tìm hiểu cách sử dụng quy tắc cho các mục tiêu như .co để tránh các tệp makefiles lặp đi lặp lại.
- Nếu bạn chỉ có một tệp nguồn C hoặc C ++, tệp thi hành phải có cùng tên (không có phần mở rộng .c hoặc là .cpp ).
- Đảm bảo bạn liệt kê tất cả .h tệp là điều kiện tiên quyết cần thiết. Cân nhắc sử dụng makedepend để tạo danh sách điều kiện tiên quyết cho bạn.
- Tài liệu: Nó không chỉ dành cho học sinh lớp.Nó giúp bạn khi bạn viết chương trình, quá!
- Thêm tài liệu khi bạn viết chương trình.Bạn luôn có thể sửa đổi nó khi thay đổi thiết kế của bạn.
- Bao gồm tài liệu bên ngoài: Làm thế nào để biên dịch và chạy chương trình, và nó có ý nghĩa gì?Các tài liệu bên ngoài có thể được trong một tập tin riêng biệt; cho các dự án nhỏ, nó có thể là một chú thích trong tệp nguồn duy nhất.
- Bao gồm tài liệu nội bộ: Bạn đang sử dụng thuật toán và cấu trúc dữ liệu nào?Tổng quan có thể nằm trong một tệp riêng biệt, nhưng thường là tài liệu nội bộ được đặt vào các quy trình, khai báo và các bước cụ thể mà nó mô tả.
- Kiểm tra toàn bộ chương trình và tài liệu về lỗi chính tả.Nó là bất lịch sự để biến trong công việc sai chính tả, và nó bespeaks inattention đến chi tiết.
- Kiểm tra tất cả các tài liệu của bạn (và thông điệp đầu ra) cho các lỗi ngữ pháp.
- Các chương trình có thể đọc được nhiều hơn nếu bạn đặt một nhận xét ngắn về đóng dấu ngoặc.Ví dụ, cú đúp đóng một điều kiện có thể có một chú thích như “nếu giá trị có vẻ tốt”. Một cú đúp đóng một vòng lặp có thể có một bình luận như “cho mỗi dòng đầu vào”. Một cú đúp đóng một thủ tục có thể có một bình luận chỉ cần đặt tên cho thủ tục. Một cú đúp đóng một lớp học có thể có một bình luận nói “lớp” và sau đó là tên của lớp.
Orginal Source: http://www.cs.uky.edu/~raphael/checklist.html