2009-08-07 55 views
5

có một tiêu chuẩn theo thứ tự các hàm trong tệp cpp không?thứ tự các hàm trong tệp cpp


có:

  • chức năng toàn cầu
  • constructors
  • destructors
  • getters
  • setters
  • chức năng algoritmic
  • nếu qt , Khe
  • nếu một lớp học có nguồn gốc, chức năng overrided
  • chức năng tĩnh
  • bất kỳ loại chức năng mà tôi không thể đặt tên ...

trong tập tin cpp, là có cách nào tốt để gọi món?

tôi yêu cầu chúng như tôi đã viết trong danh sách ở trên.

tôi biết rằng nó không thay đổi bất cứ điều gì nhưng tôi quan tâm đến mã tìm kiếm tốt ...

làm thế nào để bạn đặt hàng?

Trả lời

2

Bên trong lớp học, ngôn ngữ không có quy tắc nghiêm ngặt. Bên ngoài lớp học, bạn cần phải đảm bảo rằng một tuyên bố đứng trước một định nghĩa khi cả hai được tách biệt.

Nói chung, bạn sẽ thấy rằng nhóm bạn làm việc cùng sẽ đặt ra bất kỳ quy tắc định dạng nào liên quan đến tệp nguồn. Đây chỉ là thẩm mỹ, tuy nhiên, vì nó không có hiệu lực vào việc thực hiện thực tế của chương trình.

10

trật tự cá nhân của tôi được đưa ra theo lệnh bên trong khai báo lớp:

class MyClass 
{ 
public: 
    MyClass(); 
    ~MyClass(); 

    void start(); 

protected: 
    static void init(MyClass *); 

private: 
    int m_iCounter; ///< counter variable for.... 
}; 

sẽ trông như thế này trong cpp:

MyClass::MyClass() : 
    m_iCounter(0) 
{ 
    ... 
} 

MyClass::~MyClass() { 
    ... 
} 

void MyClass::start() { 
    ... 
} 

void MyClass::init(MyClass *) { 
    ... 
} 

Trình tự được định nghĩa như sau:

  1. Constructors + Destructors
  2. (chỉ dành cho dự án Qt s :) signals
  3. phương thức công khai - được sắp xếp theo mức độ quan trọng, ví dụ: đầu tiên đến start()stop(), sau đó getter và setter
  4. phương pháp bảo vệ ra lệnh bởi tầm quan trọng
  5. thành viên protected
  6. phương pháp riêng
  7. thành viên private

Hy vọng rằng sẽ giúp.

ciao, Chris

4

Điều này có vẻ ngớ ngẩn, nhưng tôi cố gắng để đặt hàng các phương pháp công cộng của tôi bằng cách "để sử dụng 'bình thường'", do đó nhà thầu đến trước, phương pháp doStuff sau đó công cộng, các phương pháp sau đó đóng .. ngoại lệ cho "quy tắc" này là ~ destructor, xuất hiện sau hàm tạo cuối cùng.

Lần cuối có bất kỳ phương thức "trợ giúp" riêng tư nào.

Tôi sử dụng cách tiếp cận tương tự này ở tất cả các ngôn ngữ ... (C++, Java, C#, Perl, sh hoặc bất kỳ thứ gì) và không ai thực sự đã bắn tôi (chưa).

Chúc mừng. Keith.

3

Con đường tôi đang sử dụng để đặt hàng là từ nền tảng Symbian nơi thứ tự là:

  • công cộng, bảo vệ, phương pháp tư nhân
  • công cộng, bảo vệ, biến tin

Các lý do cho điều này được hướng dẫn bởi các quy tắc để mở rộng các giao diện đã được phát hành để tương thích ngược. Vì điều có khả năng nhất để thêm vào là một biến riêng tư, chúng được đặt ở cuối lớp để thêm một lớp mới sẽ không thay đổi vị trí của bất kỳ biến nào khác trong lớp. Những thứ thay đổi giao diện rồi đến trước thứ tự này theo thứ tự 'công khai, được bảo vệ'. Thứ tự sau đó được sao chép cho các phương thức lớp mặc dù chúng sẽ không thay đổi vị trí bộ nhớ của bất kỳ biến nào trong một cá thể của lớp.

Và đừng hỏi về các hướng dẫn cho các chức năng ảo;)

2

Từ quan trọng nhất đến thấp nhất:

  • Private biến (không đùa, họ tiết lộ hầu hết các hoạt động bên trong của bạn lớp)
  • Constructors
  • Phương pháp Công
  • Phương pháp bảo vệ
  • Priv Các phương pháp được ăn

Bản thân các phương pháp phải được sắp xếp theo "mức độ trừu tượng": cao hơn: lên, thấp hơn: xuống, nói cách khác, cấu trúc phương pháp của bạn để họ chỉ gọi các phương thức bên dưới.

1

Tôi sử dụng IDE để goto các chức năng trong tệp cpp của tôi và đặt hàng theo thứ tự bảng chữ cái, hoặc tôi thực hiện tìm kiếm và tìm kiếm khi bạn nhập, quá trình này rất nhanh.

Vì vậy, đối với tôi, hoàn toàn không có sự khác biệt trong quy trình làm việc tùy theo thứ tự của các hàm trong tệp .cpp ...tiêu chuẩn

2

của công ty chúng tôi là:

  1. constructors
  2. destructors
  3. phương pháp công cộng (được sắp xếp theo thứ tự abc)
  4. methors tin (được sắp xếp theo thứ tự abc)
+0

Tôi không liên kết chữ cái. Nếu bạn refactor tên, sau đó nó có thể thay đổi vị trí. Đầu tiên, đó là một điều khác cần nhớ. Thứ hai, nó liên quan đến một sự khác biệt phức tạp hơn trong Kiểm soát nguồn để tìm ra những gì đã thay đổi. – Robert

+0

Thật hiếm khi chúng tôi đổi tên như bạn đang đề xuất. Chủ yếu là vì chúng tôi phải duy trì tính tương thích COM cho hầu hết các mã cũ hơn của chúng tôi (chúng tôi có các sản phẩm đã được vận chuyển trong hơn 15 năm). Hầu hết mã C++ đã biến mất, từ từ được thay bằng C# và VB.NET. Đó là sự hiểu biết của tôi về các thành phần cuối cùng được nghỉ hưu vào đầu năm tới. Các tiêu chuẩn mã hóa .NET khác nhau. – Tangurena

1

Đôi khi nó là tiện dụng để có một vài hàm trợ giúp cục bộ trong không gian tên chưa đặt tên (aka không gian tên ẩn danh) trong tệp CPP. Nếu vậy, tôi khuyên bạn nên có các chức năng trên đầu (trong tệp CPP), chỉ để đảm bảo rằng chúng được xác định trước bất kỳ chức năng nào khác sẽ gọi cho chúng.

3

Điều này ít quan trọng hơn so với trước đây. Tất cả các IDE phong nha những ngày này có (hoặc nên có) khả năng đi đến một định nghĩa hoặc tham chiếu với một nhấp chuột phải hoặc cử chỉ đơn giản khác. Tìm kiếm thông qua mã là một sự lãng phí thời gian.

tôi thường ra lệnh cho họ: Constructor Destructor Dù để tôi thực hiện phần còn lại

sau đó tôi quay trở lại và nhóm logic chức năng/liên quan với nhau

Nó có lẽ là quan trọng hơn đối với nhóm liên quan điều/thứ tự những thứ trong một tệp tiêu đề để dễ đọc hơn là trong tệp cpp.

Các vấn đề liên quan