Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 1: Phong cách lập trình - Đặng Bình Phương
class
true
Bộ môn Công nghệ phần mềm
Khoa Công nghệ thông tin
Trường Đại học Khoa học Tự nhiên
operator
public
C++
VCBB© 14.09a
PP LT HƯỚNG ĐỐI TƯỢNG
T hS. Đặng Bình Ph ư ơ n g
cout
this
catch
d b p h u o n g @ f i t . h c m u s . e d u . v n
PHONG CÁCH LẬP TRÌNH
inline
virtual
private
throw
OOP
new
cin
try
friend
bool
1
STL
using
false
delete
VC
Nội dung
BB
Quy ước đặt tên (naming convention)
Quy tắc trình bày tổng thể chương trình
Quy tắc trình bày dòng lệnh
Quy tắc liên quan đến hằng số
Quy tắc liên quan đến kiểu tự định nghĩa
Quy tắc liên quan đến biến
Quy tắc liên quan đến hàm
#include <iostream>
using namespace std;
Quy tắc chú thích chương trình
void main()
{
cout << “Hello World”;
cout << endl;
2
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Vì sao phải có chuẩn và quy ước?
BB
4
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Quy ước đặt tên trong lập trình
BB
Ngoài tính đúng đắn, chương trình máy tính
cần phải dễ đọc và dễ hiểu.
vs.
Hai chuẩn đang được sử dụng rộng rãi:
. Quy tắc đặt tên theo kiểu “lạc đà”.
. Quy tắc đặt tên theo phong cách Hung-ga-ri.
5
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Quy tắc “lạc đà” (Camel Case)
BB
Khái niệm
. Cách viết tránh sử dụng các khoảng trắng
giữa các từ, được sử dụng trong hầu hết các
ngôn ngữ lập trình hiện đại và phổ biến như
C, C++, Visual Basic (VB) và JavaScript.
6
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Quy tắc “lạc đà” (Camel Case)
BB
Một số từ đồng nghĩa với ký hiệu CamelCase
. BumpyCaps, BumpyCase
. CamelCaps, CamelHumpedWord
. CapWordsPython
. mixedCase trong Python (lowerCamelCase)
. ClCl (Capital-lower Capital-lower)
. HumpBackNotation
. InterCaps, NerdCaps, InternalCapitalization
. WordsStrungTogether, WordsRunTogether
7
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Quy tắc “lạc đà” (Camel Case)
BB
Phân loại
. UpperCamelCase (thường gọi là PascalCase)
nếu ký tự đầu tiên của câu được viết hoa.
Ví dụ:
TheQuickBrownFoxJumpsOverTheLazyDog
. lowerCamelCase (thường gọi là camelCase)
nếu ký tự đầu tiên của câu được viết thường.
Ví dụ:
theQuickBrownFoxJumpsOverTheLazyDog
8
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Ký hiệu Hung-ga-ri
BB
Khái niệm
. Là quy ước đặt tên trong lập trình máy tính
được phát minh bởi Charles Simonyi.
. Thường sử dụng trong môi trường lập trình
Windows như C, C++ và Visual Basic.
. Tên của biến cho biết kiểu, ý định sử dụng
hoặc thậm chí là tầm vực của biến đó:
• Tiền tố viết thường chứa thông tin về kiểu của biến.
• Phần còn lại bắt đầu bằng ký tự hoa cho biết biến
chứa thông tin gì.
9
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Ký hiệu Hung-ga-ri
BB
Phân loại theo mục đích của tiền tố
. Ký hiệu Hung-ga-ri hướng hệ thống
(Systems Hungarian notation) sử dụng tiền tố
để thể hiện kiểu dữ liệu thực sự, ví dụ:
• lAccountNum (“l” – long integer)
• szName (“sz” – zero-terminated string)
. Ký hiệu Hung-ga-ri hướng ứng dụng
(Apps Hungarian notation) sử dụng tiền tố để
thể hiện mục đích sử dụng của biến, ví dụ:
• rwPosition (“rw” – row, dòng)
• fBusy (“f” – flag, cờ trạng thái)
10
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Một số Ký hiệu Hung-ga-ri thường gặp
BB
Tiền tố chỉ kiểu dữ liệu của biến (type prefix):
Tiền tố
Ý nghĩa
Ví dụ
bool bHasEffect;
char cLetter;
b
boolean
c
char (chứa ký tự)
n, i
short, int, long, char
int nValue;
f, fp floating-point
float fPrice, fpPrice;
double dPi, dbPi;
char szName[20];
std::string strName;
d, db double, long double
sz
zero-terminated string
C++ string
str
Tiền tố n, f và d thường được sử dụng hơn tiền tố i, fp, db.
Tiền tố n thường được sử dụng hàm ý số lượng (count) còn tiền tố i được sử
dụng hàm ý chỉ số (index).
11
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Một số Ký hiệu Hung-ga-ri thường gặp
BB
Tiền tố bổ nghĩa cho kiểu dữ liệu (type modifier)
được đặt trước tiền tố kiểu dữ liệu của biến
(type prefix) muốn áp dụng:
Tiền tố
Ý nghĩa
Ví dụ
unsigned int unValue;
unsigned short u16Value;
unsigned long u32Value;
u
unsigned
a, rg array, range
int anValue[8], rgnValue[8];
int* pnValue;
char* pszName;
p
pointer
pfn
pa
function pointer
dynamic array
int (*pfnFunc)(int);
int* panValue = new int[8];
Tiền tố a thường được sử dụng hơn tiền tố rg.
12
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Một số Ký hiệu Hung-ga-ri thường gặp
BB
Tiền tố bổ nghĩa cho tầm vực (scope modifier)
được đặt trước tiền tố bổ nghĩa cho kiểu dữ liệu
(type modifier) muốn áp dụng:
Tiền tố
g_ biến toàn cục (global)
biến cục bộ (local)
Ý nghĩa
Ví dụ
g_nValue, g_value
_nValue, _value
s_nValue, s_value
_
s_ biến tĩnh (static)
thành viên (member)
của cấu trúc/lớp
m_
m_nValue, m_value
13
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Một số Ký hiệu Hung-ga-ri thường gặp
BB
Thường thấy trong lập trình Windows (trong
sách “Programming Windows”, sách đầu tiên về
lập trình Windows API của Charles Petzold)
Tiền tố
w
Ý nghĩa
Ví dụ
wParam
lParam
hwndFoo
word-size
l
long-integer
hwnd
lpsz
handle to a window
long pointer to a zero-terminated string lpszBar
14
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Đánh giá ký hiệu Hung-ga-ri
BB
Ưu điểm
. Kiểu biến có thể thấy được từ tên biến đó.
. Nhiều biến các nhau với cùng ngữ nghĩa có thể
được sử dụng trong cùng một khối mã nguồn:
nWidth, fWidth, dWidth.
. Các tên biến được thống nhất hơn.
. Có thể phát hiện dễ dàng việc ép kiểu không
phù hợp hoặc các biểu thức sử dụng kiểu không
tương thích khi đọc mã nguồn.
. Tránh sử dụng nhầm thao tác:
heightWindow = window.getWidth()
Phong cách lập trình
15
Quy ước đặt tên (naming convention)
VC
Đánh giá ký hiệu Hung-ga-ri
BB
Khuyết điểm
. Việc kiểm tra bằng mắt là thừa khi việc kiểm tra
kiểu được thực hiện tự động bởi trình biên dịch.
. Một số IDE hiện đại tự động đánh dấu những chỗ
sử dụng kiểu không tương thích.
. Khi kiểu của biến thay đổi, tên của biến đó cũng
phải thay đổi nếu không sẽ không thống nhất.
. Trong đa số trường hợp, việc biết ý nghĩa sử
dụng của một biến bao hàm việc biết kiểu của nó.
Vì vậy, nếu không biết biến dùng để làm gì thì
việc biết kiểu của nó cũng vô ích!
16
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Một số quan điểm đáng chú ý
BB
Linus Torvalds (cha đẻ của hệ điều
hành mã nguồn mở Linux)
không ủng hộ ký hiệu Hung-ga-ri
hướng hệ thống.
“Encoding the type of a function into the name (so-called Hungarian
notation) is brain damaged—the compiler knows the types anyway and can
check those, and it only confuses the programmer”
17
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Một số quan điểm đáng chú ý
BB
Steve McConnell (tác giả của nhiều
sách CNPM nổi tiếng, được tạp chí
Software Development xem là một
trong ba người có ảnh hưởng nhất
trong công nghiệp phần mềm cùng với Bill Gates
và Linus Torvalds) ủng hộ ký hiệu Hung-ga-ri.
“Although the Hungarian naming convention is no longer in widespread use,
the basic idea of standardizing on terse, precise abbreviations continues to
have value. ... Standardized prefixes allow you to check types accurately
when you're using abstract data types that your compiler can't necessarily
check”
18
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Một số quan điểm đáng chú ý
BB
Bjarne Stroustrup (nhà khoa học người
Đan Mạch phát triển NNLT C++)
không ủng hộ ký hiệu Hung-ga-ri
hướng hệ thống cho NNLT C++.
“No I don't recommend ‘Hungarian’. I regard ‘Hungarian’ (embedding an
abbreviated version of a type in a variable name) a technique that can be
useful in untyped languages, but is completely unsuitable for a language
that supports generic programming and object-oriented programming—both
of which emphasize selection of operations based on the type an arguments
(known to the language or to the run-time support). In this case, 'building the
type of an object into names' simply complicates and minimizes abstraction”
19
Phong cách lập trình
Quy ước đặt tên (naming convention)
VC
Một số quan điểm đáng chú ý
BB
Joel Spolsky (kỹ sư phần mềm và tác
giả của blog về phát triển phần mềm
đặc biệt về phần mềm Windows) ủng hộ
ký hiệu Hung-ga-ri hướng ứng dụng.
“If you read Simonyi’s paper closely, what he was getting at was the same
kind of naming convention as I used in my example above where we
decided that us meant “unsafe string” and s meant “safe string.” They’re
both of type string. The compiler won’t help you if you assign one to the
other and Intellisense won’t tell you bupkis. But they are semantically
different; they need to be interpreted differently and treated differently and
some kind of conversion function will need to be called if you assign one to
the other or you will have a runtime bug. If you’re lucky. (...) There’s still a
tremendous amount of value to Apps Hungarian, in that it increases
collocation in code, which makes the code easier to read, write, debug, and
maintain, and, most importantly, it makes wrong code look wrong”.
20
Phong cách lập trình
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 1: Phong cách lập trình - Đặng Bình Phương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_phuong_phap_lap_trinh_huong_doi_tuong_tuan_1_phong.pdf

