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  
Sức mạnh của làm việc nhóm  
BB  
Phim quảng cáo của hãng Coca-Cola  
3
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 đủ
pdf 50 trang myanh 29100 Free
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:

  • pdfbai_giang_phuong_phap_lap_trinh_huong_doi_tuong_tuan_1_phong.pdf