这"总是"困扰着我......
假设我有一个接口IFiddle和另一个接口,除了聚合几个不同的IFiddles 之外什么都不做:
public interface IFiddleFrobbler
{
IFiddle Superior { get; }
IFiddle Better { get; }
IFiddle Ordinary { get; }
IFiddle Worse { get; }
IFiddle Crackpot { get; }
}
Run Code Online (Sandbox Code Playgroud)
(具体的IFiddleFrobblers和IFiddles取决于配置,由工厂创建.)
我一再偶然发现这种"伞"类型的命名 - 我想用描述性的东西来交换"Frobbler".
请赐教,我的"伞"类型的命名方案是什么?
编辑:正如xtofl在评论中指出的那样,实际上比我上面首次公开的语义更多.如果我改为做以下事情,我认为我的需要更清楚:
//
// Used for places where the font width might need
// to be tapered for a rendered text to fit.
//
public …Run Code Online (Sandbox Code Playgroud) 在C++中,我经常需要NVI才能在API中获得一致性.不过,在C#中我没有看到它用得那么多.我想知道这是因为C#作为一种语言,提供的功能使得NVI不再需要吗?(尽管如此,我仍然在C#中使用NVI.)
在boost::shared_ptr析构函数中,这样做:
if(--*pn == 0)
{
boost::checked_delete(px);
delete pn;
}
Run Code Online (Sandbox Code Playgroud)
其中pn是一个指向引用计数器的指针,该指针的类型定义为
shared_ptr::count_type -> detail::atomic_count -> long
Run Code Online (Sandbox Code Playgroud)
我本来期望的long是volatile long在给定螺纹使用和非原子0检查和-删除shared_ptr上述析构函数.为什么不变化?
编辑:
事实证明,我查看了未指定多线程使用时使用的标头(atomic_count.hpp).在atomic_count_win32.hpp中,为多线程用法正确实现了减量.
我正在寻找一个在我的Compact Framework应用程序中使用的IoC容器.尝试Funq我注意到我找不到用它来进行Property Injection的方法.
我查看了项目网站的讨论和单元测试,但我找不到任何Property Injection的例子.
Funq是否支持Property Injection?
.net dependency-injection compact-framework inversion-of-control funq
在一个实现的类中IDisposable,什么时候检查对象是否已被处理并且ObjectDisposedException如果它已经被丢弃是合理的?在所有公共方法和属性中(除外Dispose)?有时?决不?
我有一个带有成员函数的类模板,该成员函数有一个想要使用类模板参数类型的lambda.它无法在lambda内部编译,但正如预期的那样在lambda之外成功.
struct wcout_reporter
{
static void report(const std::wstring& output)
{
std::wcout << output << std::endl;
}
};
template <typename reporter = wcout_reporter>
class agency
{
public:
void report_all()
{
reporter::report(L"dummy"); // Compiles.
std::for_each(reports_.begin(), reports_.end(), [this](const std::wstring& r)
{
reporter::report(r); // Fails to compile.
});
}
private:
std::vector<std::wstring> reports_;
};
int wmain(int /*argc*/, wchar_t* /*argv*/[])
{
agency<>().report_all();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译错误:
error C2653: 'reporter' : is not a class or namespace name
Run Code Online (Sandbox Code Playgroud)
为什么我不能在成员函数lambda中访问类模板参数类型?
我需要做什么才能访问成员函数lambda中的类模板参数类型?
我们有一个带有业务逻辑的WinRT组件,可以在内部按摩C++ unsigned char缓冲区.我们现在想从C#中提供缓冲区byte[].完美的边界会是什么样的,即SomeWinRTFunction下面的函数的签名是什么?
void SomeWinRTFunction(something containing bytes from managed land)
{
IVector<unsigned char> something using the bytes given from managed land;
}
Run Code Online (Sandbox Code Playgroud)
对于搜索引擎来说,这类问题看起来似乎太新了......
我们有一个约定来验证构造函数和公共函数/方法的所有参数.对于引用类型的强制参数,我们主要检查非null,这是构造函数中的主要验证,我们在其中设置了类型的强制依赖.
头号我们之所以这样做是为了赶上早错误,并没有得到一个空引用异常几个小时上下行不知道哪里引入错误参数或当.随着我们开始转向越来越多的TDD,一些团队成员认为验证是多余的.
作为TDD声音倡导者的Bob叔叔强烈建议不要进行参数验证.他的主要论点似乎是"我有一套单元测试,确保一切正常".
但我可以在它的生命中看不到单元测试可以阻止我们的开发人员在生产代码中使用错误参数调用这些方法的方式.
请单位测试人员,如果你能用合理的例子向我解释这个问题,我会非常乐意抓住这个参数验证!
考虑缓存和数据局部性的积极作用主存储器中搜索时,我倾向于使用std::vector<>同std::pair<>样的键值项,进行线性搜索两种,如果我知道,键值项的总金额绝不会"太大"严重影响业绩.
最近我遇到过很多情况,事先我知道我将拥有大量的键值项目,因此std::map<>从一开始就选择了.
我想知道在上述情况下你如何为适当的容器做出决定.
你呢
std::vector<>(或类似)?std::map<>(或类似)?谢谢!