Visual Studio 2013 年自动生成的代码。头文件和源文件
Auto-generated code in Visual Studio 2013. Header and source files
我和我的团队正在用 C++ 启动一个游戏项目。根据我们教授的说法,头文件应该只包含接口,源文件 (.cpp) 应该包含我们在头文件中找到的代码的实现。然而,在 Visual Studio 中闲逛之后,我注意到自动生成的代码(比如单击按钮)被扔到头文件中,并准备好实现主体。
Game.h
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
}
我预期的位置:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e);
然后在我们的源文件中实现。
Game.cpp
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
// Code here
}
这样做有什么原因吗?我真的必须修改代码才能遵循正确的接口和实现分离标准吗?
从技术上讲,自动生成 Visual Studio 就能够编译而言是正确的。不过,你教授讲的比较常规
这是一种简单的方法,可以减少修改 UI 设计时必须处理的麻烦。添加一个新的事件处理程序非常简单,当需要再次删除它时,麻烦就开始了。假设您从 window.
中删除按钮
按照现在的方式,代码仅在两个地方生成,即 InitializeComponent() 方法和 Click 事件处理程序方法本身。删除事件很简单,设计者只需删除 InitializeComponent() 中的语句,您不会丢失在 Click 事件处理程序中编写的任何代码。拯救或放弃您编写的任何代码都很简单,您只需 copy/paste 并删除该方法。无论哪种方式,该项目仍然编译。
在三个地方生成的代码更麻烦。删除 .h 文件中的声明并让项目不再编译或删除您在方法中编写的任何代码都是有吸引力的选择。
完全没有什么可担心的,如果您愿意,只需将方法主体移动到 .cpp 文件中即可。当设计稳定时,您可以执行此操作。或者根本不,因为它按原样工作得很好。
我和我的团队正在用 C++ 启动一个游戏项目。根据我们教授的说法,头文件应该只包含接口,源文件 (.cpp) 应该包含我们在头文件中找到的代码的实现。然而,在 Visual Studio 中闲逛之后,我注意到自动生成的代码(比如单击按钮)被扔到头文件中,并准备好实现主体。
Game.h
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
}
我预期的位置:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e);
然后在我们的源文件中实现。
Game.cpp
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
// Code here
}
这样做有什么原因吗?我真的必须修改代码才能遵循正确的接口和实现分离标准吗?
从技术上讲,自动生成 Visual Studio 就能够编译而言是正确的。不过,你教授讲的比较常规
这是一种简单的方法,可以减少修改 UI 设计时必须处理的麻烦。添加一个新的事件处理程序非常简单,当需要再次删除它时,麻烦就开始了。假设您从 window.
中删除按钮按照现在的方式,代码仅在两个地方生成,即 InitializeComponent() 方法和 Click 事件处理程序方法本身。删除事件很简单,设计者只需删除 InitializeComponent() 中的语句,您不会丢失在 Click 事件处理程序中编写的任何代码。拯救或放弃您编写的任何代码都很简单,您只需 copy/paste 并删除该方法。无论哪种方式,该项目仍然编译。
在三个地方生成的代码更麻烦。删除 .h 文件中的声明并让项目不再编译或删除您在方法中编写的任何代码都是有吸引力的选择。
完全没有什么可担心的,如果您愿意,只需将方法主体移动到 .cpp 文件中即可。当设计稳定时,您可以执行此操作。或者根本不,因为它按原样工作得很好。