相关疑难解决方法(0)

在构造函数中应该完成多少工作?

应该在构造函数中执行可能需要一些时间的操作,还是应该构造对象然后稍后进行初始化.

例如,当构造表示目录结构的对象时,应该在构造函数中完成对象及其子对象的填充.显然,目录可以包含目录,而目录又可以包含目录等.

这个优雅的解决方案是什么?

oop constructor

50
推荐指数
7
解决办法
1万
查看次数

缺陷:构造函数完成实际工作

我有一堂课,代表一组数字。构造函数有三个参数:startValueendValuestepSize。该类负责保存一个列表,其中包含在开始值和结束值之间的所有值,并考虑了stepSize。

示例:startValue:3,endValue:1,stepSize = -1,Collection = {3,2,1}

我目前正在创建该集合以及一些有关构造函数中对象的信息字符串。公共成员是只读信息字符串和集合。

我的构造函数此刻正在做三件事:

  • 检查参数;这可能会引发构造函数异常

  • 将值填充到集合中

  • 生成信息字符串

我可以看到我的构造函数确实在工作,但是如何解决这个问题,或者应该解决这个问题呢?如果我将“方法”从构造函数中移出,则就像具有init函数,并给我留下了一个未完全初始化的对象。我的物体的存在是否值得怀疑?还是在构造函数中完成一些工作不是很糟糕,因为仍然可以测试构造函数,因为没有创建对象引用。

对我来说,这看起来不对,但似乎我找不到解决方案。我也考虑了一个构建器,但是我不确定这是否正确,因为您不能在不同类型的创作之间进行选择。但是,单个单元测试的责任较小。

我正在用C#编写代码,但是我希望有一个通用的解决方案,这就是为什么文本不包含任何代码的原因。

编辑:感谢您编辑我的拙劣文字(:我改回了标题,因为它代表了我的意见,而编辑后的标题却没有。我不是在问真实的作品是否有缺陷。对我来说,是。这个参考。

http://misko.hevery.com/code-reviewers-guide/flaw-constructor-does-real-work/

该博客很好地说明了这些问题。我仍然找不到解决方案。

oop constructor unit-testing design-patterns

3
推荐指数
1
解决办法
1649
查看次数

可以在构造函数中创建Pthread吗?

我想创建一个线程池.我有一个名为ServerThread.cpp的类,其构造函数应该执行以下操作:

ServerThread::ServerThread()
   {
         for( int i=0 ; i<init_thr_num ; i++ )
         {
              //create a pool of threads
              //suspend them, they will wake up when requests arrive for them to process
         }
   }
Run Code Online (Sandbox Code Playgroud)

我想知道在构造函数中创建pthreads是否会导致任何应该避免进入的未定义行为.

谢谢

c++ multithreading constructor pthreads threadpool

2
推荐指数
1
解决办法
951
查看次数

WM_CREATE和MainWindow

我在互联网上看到了一些在WM_CREATE下创建按钮的例子,我做了一些项目,其中创建"一些"按钮,如开始/停止按钮或文本字段必须在MainWindow下创建,而不是在WM_CREATE下创建.

当我们可以在这两者之间做出选择时,是否有任何理由选择一个人而不是其他人?

c++ winapi window win32gui

2
推荐指数
1
解决办法
1363
查看次数