OPENLAB-IMAGE PROCESSING
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Những vấn đề khi đọc source code

Go down

Những vấn đề khi đọc source code Empty Những vấn đề khi đọc source code

Bài gửi by jackauk Sun Mar 19, 2017 1:50 pm

Khi bạn đọc source code được chia sẻ hay từ các dự án lớn thì bạn sẽ thường gặp những vấn đề sau:
1/ Các cấu trúc lớp thừa kế, hàm virtual
2/ Các hàm khởi tạo
3/ Các kiểu ép kiểu và gán
4/ Các cấu trúc template

Mình sẽ nói từ từ về các mục này. Nói thật là mình không có các kiến thức vững chắc về các vấn đề này mà mình sẽ trình bày theo cách đọc tài liệu rồi trình bày cách hiểu của mình. Có thể là SAI hay chưa ĐÚNG nên mình mong người đọc chỉ ra lỗi sai của mình để mọi người cùng tiến bộ.
Bắt đầu từ:

1/ Các cấu trúc lớp thừa kế, hàm virtual

Các ngôn ngữ lập trình cấp cao đều là các OOPL (Object Oriented Programing Language_ ngôn ngữ lập trình hướng đối tượng). Bởi tính hướng đối tượng là đặc trưng của ngôn ngữ lập trình nên vấn đề này bạn sẽ gặp phải trong hầu hết các ứng dụng lớn đòi hỏi sử dụng tài nguyên và thời gian để viết mã dài. Những ứng dụng nhỏ thì khỏi phải nói rồi: vài dòng lệnh tuần tự, vài cấu trúc if else thì chẳng bàn tới.
Những ứng dụng lớn cần phải viết mã lệnh dài, sử dụng các thư viện có sẵn hay tự dựng nên mình cần tối ưu code, càng viết ngắn và càng rõ ràng, chặt chẽ thì càng tốt

Một dự án lớn thì ta phải bố trí code theo từng lớp lang không chỉ cho nó trông có vẻ chuyên nghiệp mà đơn giản là để cho chúng ta đỡ khổ khi phải làm việc với nó. Ta phân nó theo chức năng nhiệm vụ, ta phân nó theo vị trí tầm quan trong sao cho ta tiện nhất. 
Một dự án sẽ có những namespace và bên trong namespace là những class, những struct. Namespace đóng vai trò là một cái vỏ bao ngoài giúp đóng gói code thành từng vùng, khối riêng biệt
Ví dụ: Ta có namespace std là một namespace  chứa các thư viện tiêu chuẩn của C++. Ta có std::cin, std::cout cho việc xuất nhập dữ liệu từ và ra màn hình hiển thị; std::vector, std::map cho các cấu trúc mảng động; std::abs cho phép lấy giá trị tuyệt đối
Ta sẽ có thể có những hàm cin, cout, abs, cấu trúc vector, map cho riêng mình nhưng sẽ nằm ở một namespace khác.
Namespace là một lớp vỏ bao ngoài nên khi ở bất cứ đâu ta muốn bất cứ thành nào đó thuộc namespace thì  cho nó nằm trong vỏ là được

Ví dụ: Ta có 2 class ở 2 file ( .h, .cpp, .hpp thì tùy) rồi struct, enum ở file khác mà chung 1 namespace thì ta làm như sau:

Code:
File 1:
namespace  openLAB
{
class Network
{
} // KHai bao và định nghĩa lớp Network luôn
}

File 2:
namespace  openLAB
{
class Timer; // KHai báo ở đây và  định nghĩa ở chỗ khác
}

File 3:

namespace  openLAB
{
struct point3D
{
     double x;
     double y;
     double z;
     bool fixed;
};

enum
{
   NONE =0,
  PHYSIC,
  VIRTUAL
};
}
jackauk
jackauk
Thành viên thường

Tổng số bài gửi : 63
Điểm danh tiếng : 2
Join date : 16/08/2015
Age : 35
Đến từ : TP Hồ Chí Minh

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết