如何清理杂乱的main()
how to clean a cluttered main()?
为了保持main()(在c++中)尽可能干净/小,有几个选项你可以选择,但其中哪一个是最好的?在main中初始化所有变量,在main之外初始化它们为global,在.h中初始化它们,在main中初始化它们,但在其他地方设置它们的值(通过将它们传递给函数)。可能有其他方法,但是,保持main()尽可能干净/清晰/小的最佳方法是什么?
避免像猪流感一样的全局/单例,这是一种不好的做法,对大型多线程项目会产生非常糟糕的影响。鉴于你正在使用c++,你可以把你的应用程序包装成一个大的管理器类型类,它的所有东西都很好地融入了一个适合你/你的编码风格的风格,那么你主要需要做的就是:
int main(int argc, char** argv)
{
Application MyApp(argc,argv);
return MyApp.start();
}
非常整洁
有一些常见的模式,比如将数据和操作封装在类中是有意义的。例如,如果您从文件处理命令行参数或配置,您可以创建从argc
和argv
初始化的Config
类和/或可能的文件,然后将其用作用户可控参数的存储。
另一个常见的模式是将所有main
移动到一个类中,该类包含作为成员属性的状态,并具有run
(或main
,您可以随意调用它)成员函数。这样可以轻松地重构main
,而不必将所有状态作为函数参数传递。有时这两个选项混合使用,类从main
的参数初始化。
没有明确的答案,因为这取决于你的main
目前正在做什么,在某些情况下,如果不同的部分被清楚地分开,它仍然可以保持长主,如果它不是太长,其中长和长是主观的衡量标准…
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 代码在main()中运行,但在函数中出现错误
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- rcpp函数中的清理时间很长
- Python中的for循环与C++有何不同
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 函数是否可以访问传递给main()的参数
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 为什么 ulimit -v 在 Clang 的地址清理器下不起作用?
- 我的 int main() 中出现堆栈溢出错误
- LeetCode 1:两和 - 地址清理器:堆缓冲区溢出地址
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- 当我尝试在 Main 中调用插入函数时,它不是取数字?
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- 在C++中释放内存期间,迭代器与指针有何不同
- 即发即弃 std::线程对象清理自身
- 为什么类和 main() 函数中也有动态内存分配
- 如何清理杂乱的main()