2009-07-20 39 views
6

Phần lớn thời gian của tôi dành cho việc phát triển các ứng dụng C++ là lãng phí khi triển khai các định nghĩa lớp. Bằng cách đó tôi có nghĩa là prototyping của các lớp học sau đó tạo ra các triển khai tương ứng của họ.C++ Tự động thực hiện lớp trong biên tập

Ví dụ:

#ifndef FOO_H 
#define FOO_H 

class Foo 
{ 
public: 
    Foo (const X& x, const Y& Y); 
    ~Foo(); 

    void PerformXYZ (int Count); 
}; 

#endif 

Và bây giờ tôi sẽ phải sao chép và dán, sau đó thêm các Foo lặp đi lặp lại :: vào từng chức năng.

Foo::Foo (const X& x, const Y& Y) 
{ 

} 

Foo::~Foo() 
{ 

} 

void Foo::PerformXYZ (int Count) 
{ 

} 

Hiện tại tôi sao chép các khai báo hàm vào tệp * .cpp tương ứng, xóa các dòng trống, sau đó thay thế ';' với "\ n {\ n \ n} \ n". Tuy nhiên, tôi vẫn phải chỉ định không gian tên cho mỗi hàm.

Có các công cụ trong Eclipse, Vim hay bất kỳ IDE/trình soạn thảo nào khác có gánh nặng này với nhà phát triển không?

+0

Người đàn ông, chúng tôi có thói quen giống nhau :) – GManNickG

+0

Bạn nghĩ rằng một cái gì đó như thế này sẽ tồn tại (nó sẽ rất hữu ích). Nếu không có ai đưa ra câu trả lời, bạn nên nghĩ đến việc viết một plugin hoặc chương trình để thực hiện việc này. – Kredns

Trả lời

5

Trong Visual Studio có các công cụ để thêm các hàm và biến. Công cụ tự động hóa quy trình được đề cập. Nhưng tôi không bao giờ sử dụng chúng :)

Trong Visual Assist Xfeature giúp bổ sung triển khai cho phương pháp. Đó là giải pháp tốt nhất.

+0

+1 Hỗ trợ trực quan. – peterchen

+0

Tôi cũng tìm thấy những người trợ giúp GUI sử dụng hạn chế này vì tôi có thể viết mã nhanh hơn tôi có thể tạo mã bằng các công cụ này. Điều đó nói rằng, tôi nghĩ những gì người hỏi sẽ đề xuất sẽ tiết kiệm thời gian. –

2

Trong Visual Studio 2008, bạn có thể thêm một lớp (nó sẽ tạo tệp .h và .cpp cho bạn) bằng cách sử dụng tùy chọn Project-> Add Class .... Nhưng nó rất thô sơ và chỉ viết các hàm tạo và các hàm hủy. Sau khi thêm lớp, bạn có thể vào chế độ xem lớp và sử dụng tùy chọn trình đơn 'Thêm phương thức' để thêm các phương thức vào lớp.

0

Zeus editor có thể được định cấu hình để thực hiện việc này bằng tính năng mẫu của nó như sau.

Bước 1: Tạo mộtc: \ temp \ test.tpl tập tin đó trông như thế này:

#ifndef $Word_H 
#define $Word_H 

class $Word 
{ 
public: 
    $Word (const X& x, const Y& Y); 
    ~$Word(); 
    void PerformXYZ (int Count); 
}; 
#endif 

$Word::$Word (const X& x, const Y& Y) 
{ 
} 

$Word::~$Word() 
{ 
} 

void $Word::PerformXYZ (int Count) 
{ 
} 

Bước 2: Sử dụngTemplate, Options menu để thêm mẫu sau:

$ExpandTemplate<c:\temp\test.tpl> 

Bước 3: Sử dụng File, New menu, gõ vào từ Bar, đặt con trỏ vào chữ Bar và chạy các mẫu mới được tạo ra và bạn nhận được văn bản này:

#ifndef Bar_H 
#define Bar_H 

class Bar 
{ 
public: 
    Bar (const X& x, const Y& Y); 
    ~Bar(); 
    void PerformXYZ (int Count); 
}; 
#endif 

Bar::Bar (const X& x, const Y& Y) 
{ 
} 

Bar::~Bar() 
{ 
} 

void Bar::PerformXYZ (int Count) 
{ 
} 
2

Cũng giống như bạn, tôi có suy nghĩ lâu thời gian của tôi như là một nhà phát triển C++ là lãng phí với việc viết các định nghĩa lớp tẻ nhạt. Công cụ duy nhất tôi đã tìm thấy cho đến nay mà một phần làm giảm bớt công việc này là VisualAssistX, như một trong những áp phích khác đề cập đến.

Trong khi thiếu hoàn toàn loại bỏ nhu cầu viết các định nghĩa lớp học, VA X có một số phương pháp "refactor" đẹp giúp ích trong lĩnh vực này. Ví dụ, bạn có thể tạo một khai báo phương thức, và nó sẽ tự động tạo ra một cơ quan thực hiện cho bạn. Bạn cũng có thể làm những việc như "Thêm thành viên tương tự", điền vào hộp thoại "thêm thành viên" với dữ liệu của phương thức hiện có hoặc thay đổi chữ ký của hàm và tự động truyền cho cả tệp cpp và h.

Nó không miễn phí, nhưng cũng đáng tiền.

Jeroen

1

Đối vim, tôi duy trì this suite cung cấp đoạn lớp (mà có thể dễ dàng thích nghi với nhu cầu của bạn).

NB: Việc tạo ra mỗi định nghĩa hàm có thể được tự động hóa bằng lệnh :GOTOIMPL, nhưng nó phải được thực hiện chức năng sau hàm.

1

Eclipse chắc chắn có liên quan đến điều này trong trình đơn cấu trúc lại của nó mặc dù tôi chưa sử dụng nó trong một năm và không nhớ bất kỳ chi tiết cụ thể nào.

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