Khóa học C++ cơ bản trên Udemy: Tư vấn code sạch đẹp

Bạn Hưng trên Udemy hỏi câu hỏi sau

Em hỏi câu này không liên quan tới khóa học lắm nhưng mong anh em nào có kinh nghiệm chỉ mình :’(

em có 4 vđề sau :

  1. cách sử dụng và đặt tên biến,tên hàm : em muốn hỏi làm sao để sử dụng biến cục bộ và biến toàn cục cho hợp lý và cách đặt tên biến chuẩn để tránh nhầm lẫn giữa các key, và cách đặt tên hàm sao cho hiệu quả đủ để mình hiểu hàm đó làm cái gì mà không quá dài dòng
  1. cách comment vào code : làm sao để comment đúng chỗ và comment vừa đủ. Em bị mắc cái bệnh là comment quá nhiều đến lúc nhìn vào code thì hay bị lẫn và nhìn rất rối.
  1. cách trình bày code : làm sao để cho code nó sáng nhất ạ. Sắp xếp các hàm như thế nào là hợp lý ạ.trong một hàm cách dòng ra sao để nó hợp lý ạ tab ra tab vào mà code sát nhau cứ rối rối sao ý ạ :’(
  1. tách hàm riêng : cho em hỏi khi nào thì cần tách hàm riêng ạ. Đôi khi em phân vân là nên tách ra hàm riêng hay để trong cùng một hàm ví dụ như em có một hàm kiểm tra(code dài) và một hàm in em nên gộp vào hay là viết thành 2 hàm riêng ạ hàm kiểm tra cũng chỉ gọi trong hàm in mà không gọi ở đâu nữa ạ
6 Likes

cách sử dụng và đặt tên biến,tên hàm : em muốn hỏi làm sao để sử dụng biến cục bộ và biến toàn cục cho hợp lý và cách đặt tên biến chuẩn để tránh nhầm lẫn giữa các key, và cách đặt tên hàm sao cho hiệu quả đủ để mình hiểu hàm đó làm cái gì mà không quá dài dòng

Tên hàm Đạt recommend viết như sau

void ThucHienCongViecX(int cu_ti);

Tên biến Đạt recommend viết như sau

int cu_teo;

em muốn hỏi làm sao để sử dụng biến cục bộ và biến toàn cục cho hợp lý

Không nên dùng biến toàn cục, nếu có dùng biến toàn cục thì nên là hằng số.

const int BIEN_TOAN_CUC;

Google recommends thêm chữ k ở phía trước, sau đó viết hoa chữ đầu mỗi từ.

const int kDaysInAWeek = 7;

Đạt thì thích thêm chữ g ở phía trước để cho biết đây là biến global

int g_BienToanCuc;
int gBienToanCuc;

và cách đặt tên hàm sao cho hiệu quả đủ để mình hiểu hàm đó làm cái gì mà không quá dài dòng

Tên hàm là động từ

int doSomething()

Tên biến là danh từ

float banh_beo;

Một số trường hoặc biệt

i) Tên hàm luận lý, thêm chữ is ở phía trước

bool isRunning(); // Kiểm tra thread có chạy hay không
bool isChecked(); // kiểm tra radio box có check hay không

ii) Hàm lấy hoặc tính toán trả về một giá trị, thêm get hoặc cal

char getLastChar();
double calTax();

iii) tên biến tính tổng thêm sum ở trước, biến là số đếm, thêm count ở trước

int sumInteger;
int countPositives;

2. cách comment vào code : làm sao để comment đúng chỗ và comment vừa đủ. Em bị mắc cái bệnh là comment quá nhiều đến lúc nhìn vào code thì hay bị lẫn và nhìn rất rối.

Suy nghĩ để làm sao khi viết code, người khác chỉ cần đọc code là hiểu được lý do tại sao code như thế. Dĩ nhiên sẽ không có chuyện không cần comment. Vậy khi comment ta tránh lặp lại những điều cơ bản.

i) Comment không cần thiết, lặp lại

// gán banh_tieu bằng 3
int banh_tieu = 3;

// lặp từ 0 tới 3
for (int i = 0; i < banh_tieu; ++i)

ii) không cần comment, hãy làm cho code dễ hiểu hơn.

// Gán số phần tử bằng 10
int x = 10;

Thì sửa lại như sau để không cần phải comments

const int MAX_ELEMENT = 10;
int totalElement = MAX_ELEMENT

iii) Khi nào comment?

Khi code quá khó hiểu, không thể diễn tả dễ hiểu hơn.

iv) Comment trên đầu mỗi dòng code, không comment cùng dòng code

// comment ở đây
int cafe_sua_da; // không comment ở đây, 
				 // vì khi sửa đổi biến `cafe_sua_da` sẽ làm ảnh hưởng tới dòng comment này

3. cách trình bày code : làm sao để cho code nó sáng nhất ạ. Sắp xếp các hàm như thế nào là hợp lý ạ.trong một hàm cách dòng ra sao để nó hợp lý ạ tab ra tab vào mà code sát nhau cứ rối rối sao ý ạ :’(


làm sao để cho code nó sáng nhất ạ

Em chỉnh màu nền màu trắng, chỉnh độ sáng màn hình lên mức cao nhất.

Sắp xếp các hàm như thế nào là hợp lý ạ

Không quan trọng.

trong một hàm cách dòng ra sao để nó hợp lý ạ tab ra tab vào mà code sát nhau cứ rối rối sao ý ạ :’(

Không quan trọng, mỗi project có một quy luật riêng. Mình theo người khác code ở trước, nếu là project của mình thì chỉnh thế nào cho thuận mắt là được.

tách hàm riêng : cho em hỏi khi nào thì cần tách hàm riêng ạ. Đôi khi em phân vân là nên tách ra hàm riêng hay để trong cùng một hàm ví dụ như em có một hàm kiểm tra(code dài) và một hàm in em nên gộp vào hay là viết thành 2 hàm riêng ạ hàm kiểm tra cũng chỉ gọi trong hàm in mà không gọi ở đâu nữa ạ


cho em hỏi khi nào thì cần tách hàm riêng ạ

Khi hàm đó làm nhiều hơn một việc hoặc khi ta có thể tách hàm hiện tại thành hai hoặc nhiều hàm nhỏ hơn mà các hàm nhỏ này làm đúng một việc riêng.

Đôi khi em phân vân là nên tách ra hàm riêng hay để trong cùng một hàm ví dụ như em có một hàm kiểm tra(code dài) và một hàm in em nên gộp vào hay là viết thành 2 hàm riêng ạ hàm kiểm tra cũng chỉ gọi trong hàm in mà không gọi ở đâu nữa ạ

Luật đơn giản khi tách hàm:

i) có thể tách, tách ngay
ii) tách làm rõ nội dung hơn, tách ngay
iii) một hàm làm nhiều hơn một việc
iv) hàm dài hơn 25 dòng


Quảng cáo :joy:

14 Likes

Anh nói bạn xem thử cái style guide của lớp cs106b này xem, cái này em thấy khá đầy đủ.
http://web.stanford.edu/class/cs106b/styleguide.shtml
Tên hàm thì đặt theo anh em thấy ổn rồi, biến thì có thể tham khảo theo cuốn code complete.

Ngoài ra, unreal engine cũng có một cái hướng dẫn đặt tên cho C++ dùng trong engine đó, nếu ai muốn thì cũng có thể xem qua cho biết.
https://docs.unrealengine.com/latest/INT/Programming/Introduction/index.html

6 Likes

Great, anh thích code chính xác thế này, không khai báo nhiều biến trên một dòng. Trong videos khóa học có nói tới cái này.

Nhưng ví dụ ở đây rõ ràng hơn.

Cảm ơn @iamz rất nhiều về cái nguồn :smiley:

Những thông tin khác cũng hữu ích. Anh sẽ quay một videos lấy link này làm gốc.


Link 2 về unreal engine thì anh nghĩ là phù hợp với project đó hơn.

4 Likes

thanks a. Em tìm hiểu mãi cái này chắc thuộc về kinh nghiệm chứ em thấy ở trường thầy cô không nói về phần này mặc dù em thấy nó cũng quan trọng :’(

1 Like

Hay … tuyệt vời
:))))))))

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?