Quy định về Phong cách lập trình
Lê Sỹ Quang - Lê Sỹ Vinh
Phần I: Trình bày tên hằng tên biến và tổng quan chươngtrình.
I. Giới thiệu
Phong cách lập trình của một lậptrình viên cũng giống như phong cách sống của một con
người. Có lẽ song song với việc học các kiến thứcphục vụ cho công việc lập trình bạn phải
học và rèn luyện cho bản thân mình mộtphong cách lập trình tốt. Việc học và rèn luyện
một phong cách lập trình tốtnên tiến hành ngay từ khi bạn mới bắt tay vào học lập trình.
Một phong cách lậptrình tốt sẽ giúp bạn tạo ra một chương trình dễ đọc, dễ hiểu, dễ tìm và
sửalỗi, dễ nhận thấy cấu trúc bậc cao của chương trình. Những điều này sẽ thuậnlợi cho cả
người viết chương trình, người đánh giá chương trình, và người bảotrì chương trình. Sau
đây là một số những quy định về một phong cách lập trìnhtốt được đúc kết từ kinh nghiệm
của các chuyên gia trên thế giới về lập trình.
II. Cách đặt tên biến và tên hằng
Khi mới học lập trình, chúng tathường cảm thấy việc đặt tên biến và tên hằng rất dễ dàng,
bởi vì những chươngtrình đầu tiên thường ngắn, đơn giản, dễ hiểu và được lập trình trong
mộtkhoảng thời gian ngắn liên tục. Nhưng sau khi lượng kiến thức đã nhiều, cácchương
trình bắt đầu dài ra, phức tạp hơn, số lượng biến và hằng cần dùng ngày càngnhiều, đặc
biệt là một chương trình có thể được lập trình trong một khoảng thờigian dài, có thể là vài
ngày, hoặc vài tháng. Thậm chí một chương trình donhiều người lập trình, mỗi người làm
một phần nào đó. Khi đó việc đặt tên biếnvà tên hằng sẽ trở lên khó khăn hơn nhiều. Bạn
phải biết cách đặt tên biến vàtên hằng sao cho chúng mang ý nghĩa rõ dàng vàcó tính gợi
cảm (lập trình viên có thể nhìn vào tên biến và tên hằng vàhiểu được chức năng và tác
dụng của chúng).Sau đây là một số quy định về cách đặt tên biến và tên hằng:
1. Tên biến, tên hằng phải đượcđặt bởi một dãy kí tự có nghĩa
Ví dụ:
- var pp: char; Cách đặt tên biến như vậy là không tốt, biến pp khôngmang ý nghĩa và
không gợi nhớ cho lập trình viên.
- var persion_position: char;Cách đặt tên biến như vậy là tốt, tên
biến mang ý nghĩa rõ ràng đồngthời gợi nhớ cho lập trình viên.
2. Tên biến không nên đặt bằng toàn kí tự in hoa
Ví dụ:
var PERSON_POSITION: char;Việc đặt tên biến như thế này là không tốt, bởi nếu ta coi
một chương trình nhưmột văn bản thì trong một văn bản có quá nhiều chữ cái in hoa sẽ
làm cho ngườiđọc khó chịu và không nhận ra những chỗ quan trọng trong văn bản.
3. Tên hằng nên đặt bằng mộtchuỗi kí tự in hoa
Trong một chương trình, số lượngcác hằng xuất hiện không nhiều, vậy nếu chúng ta đặt tên
hằng là chuỗi kí tự inhoa sẽ phân biệt được chúng với tên biến.
4. Các từ khoá nên dùng toàn chữcái thường
Ví dụ: for, while, do, begin, end.
Như chúng ta đã biết trong một sốngôn ngữ thì bộ chương trình dịch không phân biệt chữ
cái in hoa và chữ cái inthường (ví dụ trong ngôn ngữ lập trình Pascal). Nhưng trong một số
ngôn ngữ lậptrình khác thì chữ các in hoa và chữ cái in thường được coi là khác nhau.
Tronghầu hết các ngôn ngữ lập trình này, các từ khoá được viết dưới dạng chữ cái
inthường (ví dụ trong ngôn ngữ lập trình C++). Vậy một thói quen về việc dùng cáctừ khoá
bằng toàn chữ cái in thường thì sẽ dễ dàng cho chúng ta hơn rất nhiềukhi chúng ta học một
ngôn ngữ lập trình mới.
5. Cách đặt tên biến dài
Khi một chương trình dài và phứctạp, đặc biệt là nhiều người viết thì lượng biến cần phải
sử dụng là rất lớn.Để tránh sự nhầm lẫn giữa các biến khác nhau thì các lập trình viên bắt
buộcphải đặt các tên biến dài (thường từ 2 từ trở lên). Đối với các tên biến dài,ta có thể
dùng chữ cái in hoa hoặc dấu gạch chân dưới để phân biệt giữa các từkhác nhau.
Ví dụ:
- person_position hoặcpersonPosition: Là cách đặt tên biến tốt.
- personposition: Là cáchđặt tên biến không tốt.
6. Cách đặt tên hàm
Có nhiều cách đặt tên hàm khácnhau. Cách đặt tên hàm cũng giống như cách đặt tên biến.
Nhưng khi đặt tên chomột hàm thì cần có thêm một vài chú ý về cấu trúc ngữ pháp của tên
hàm. Mộttrong những cách đặt phổ biến trong việc đặt tên hàm là sử dụng cấu trúc
ngữpháp Độngtừ + Cụm danh từ.
Ví dụ:
- function search_table;
- function is_person;
III. Trình bày tổng quan củachương trình
1. Tổng quan chương trình
Chương trình phải được lùi đầudòng một cách thích hợp. Các câu lệnh �bên trong� các
vòng lặp (ví dụ: for,while, repeate), các lệnh điều kiện rẽ nhánh (ví dụ: if, case) và trong
cặp�begin... end� phải được lùi thêm một bậc. Bên cạnh đó các câu lện khai báobiến
cũng nên lùi vào một bậc. Việc lùi vào một bậc có thể được thực hiện bằngmột số dấu cách
(space) hoặc dấu tab.Việc lùi vào một cách thích hợp các dòng lệnh sẽ cho lập trình viên
thấyđược cấu trúc khối của chương trình, điều đó giúp cho việc tìm lỗi và sửa lỗidễ dàng
hơn.
Vídụ1: Chương trình viết có cấu trúc tốt.
function do_example;
var i:integer;
Begin
for i:=1 to n do
begin
if (i mod 2 = 0) then write(�số chẵn�)
else write(�số lẻ�);
end;
End;
Ví dụ 2: Chương trình viết có cấutrúc không tốt
functiondo_another_example;
var i: integer;
begin
fori:=1 to n do
begin
if (i mod 2 = 0) then write(�số chẵn�)
else write(�sốlẻ�);
end;
end;
2. Đoạn chương trình và dòng lệnh
Trong một file chương trìnhthường gồm nhiều hàm, trong một hàm có thể lại gồm nhiều
đoạn nhỏ. Mỗi đoạn nhỏnên được tách nhau ra bởi các dòng trống.Trong một đoạn nhỏ ý
nghĩa của các dòng lệnh nên tương đối giống nhau vàphù hợp với nhau.
Trong chương trình mỗi dòng chỉnên viết một dòng lệnh (các bộ chương trình dịch của các
ngôn ngữ thường bỏ quatất cả các dấu trống, vì vậy việc bạn cố viết một chương trình với
số lượngdòng ít bằng cách đẩy nhiều dòng lệnh trên cùng một dòng là vô nghĩa). Mỗi
dònglệnh trên một dòng sẽ giúp bạn dễ dàng trong việc gỡ rối chương trình.
IV. Bài tập
Trênmặt phẳng toạ độ cho 2 hình chữ nhật có các cạnh song song với hai trục toạ độ.Hình
chữ nhật thứ nhất được biếu diễn bởi hai cặp toạ độ đối tâm trái dưới vàphải trên là (x1,y1)
và (x2,y2). Hìnhchữ nhật thứ hai được biếu diễn bởi hai cặp toạ độ đối tâm trái dưới và
phảitrên là (x3,y3) và (x4,y4). Hãy viết một chương trình với số phép toán là ítnhất có thể
được để kiểm tra xem hai hình chữ nhật trên có diện tích chung vớinhau hay không (diện
tích chung lớn hơn 0).
Quy định về phong cách lập trình
Lê Sỹ Quang - Lê Sỹ Vinh
1. Mỗichương trình phải có một phần chú thích chung giới thiệu mục tiêu của chươngtrình.
Điều đó sẽ giúp bạn dễ dàng nâng cấp và bảo trì chương trình trong thờigian sau này. Phần
chú thích của chương trình như một phát biểu ngắn ngọn vềbài toán cần giải quyết.
Ví dụ:
Input:Một dãy số A có độ dài N.
Output:Dãy số A sau khi đã được sắp xếp.
2. Mỗi chươngtrình con cần phải có chú thích về mục đích của chương trình con đó, những
chúthích làm cho người đọc hiểu được mục đích của chương trình con chứ không phảigiúp
người đọc hiểu được chương trình con đó được thực hiện như thế nào.
Vídụ:
Chú thích đúng: mô tả mục đích của hàm
{hàm tinh_tong_2_sonhận vào 2 số nguyên, trả kết quả ra là một số nguyên bằng tổng của
2 số nguyênnhận vào}
functiontinh_tong_2_so(giatri1, giatri2 : integer) : integer;
begin
tinh_tong_2_so:=giatri1 + giatri2;
end;
Chú thích sai: mô tả hoạt động của hàm
{hàm tinh_tong_2_solấy giatri1 cộng với giatri2}
functiontinh_tong_2_so(giatri1, giatri2 : integer) : integer;
begin
tinh_tong_2_so:=giatri1 + giatri2;
end;
3. Đốivới các cấu trúc dữ liệu quan trọng phải có chú thích và về mục đích của cấutrúc đó
và mỗi liên hệ của nó với các phần dữ liệu khác. Vấn đề chú thích chonhững cấu trúc dữ
liệu đặc biệt cần thiết cho lập trình hướng chức năng.
Vídụ:
tuoi: array[1..max]of integer; { mang day_so lưu tuổi của tất cả các sinh viên trong
trường).
4. Mỗichương trình con cần có chú thích về ý nghĩa cho từng tham số của chương trình.
Vídụ:
{ diem1: chua toa do dinh thunhat cua tam giac,