我仍然有问题为自己辩护TDD.正如我在其他问题中提到的,我写的90%的代码绝对没有
提出代码需要在TDD下处理的假数据所花费的时间是令人难以置信的 - 我花了5倍的时间来提供示例数据,就像编写应用程序代码一样.
这个问题的部分原因是我经常使用我没有经验的API编程,这迫使我编写小应用程序来向我展示真实API的行为,以便我可以在API之上编写有效的假货/模拟.首先编写实现与TDD相反,但在这种情况下它是不可避免的:我不知道真正的API如何表现,那么我怎么能够创建一个虚假的API实现而不用它呢?
我已经阅读了几本关于这个主题的书,包括Kent Beck的测试驱动开发,例如,以及Michael Feathers的"有效地使用遗留代码",这似乎是TDD狂热分子的福音.Feathers的书与描述破坏依赖关系的方式接近,但即使这样,提供的示例也有一个共同点:
我的程序不遵循这种模式.相反,程序本身的唯一输入是它运行的系统.
如何在这样的项目中有效地使用TDD?在实际使用该API之前,我已经将大部分API包装在C++类中,但有时包装器本身会变得非常复杂,并且值得进行自己的测试.
我试图对django lfs项目做一个小修改,这将允许我停用没有股票的产品.不幸的是,我刚开始学习python,所以我的语法很麻烦.这就是我想要做的.如果我的产品是子类型,我正在使用方法'is_variant'返回tru.如果它是一个变种我转向母产品,得到它的活跃变种并检查他们的股票.如果stock大于0,则变量active为0,否则为1.如果在循环变量'active'后仍为1,则将parent product的active设置为false.
我不知何故不能使它正常工作.使用时:
def deactivate(self):
if self.is_variant():
prod = self.parent
prod.active = all(var.get_stock_amount() != 0 for var in prod.variants.filter(active=True))
else:
prod.active = self.get_stock_amount() != 0
self.parent.save()
Run Code Online (Sandbox Code Playgroud)
它会停用我的产品,无论它的变体是否有库存.使用时:
inactive = 0
if self.is_variant():
prod = self.parent
for s in prod.variants.filter(active=True):
if s.get_stock_amount() == 0:
inactive = 1
else:
inactive = 0
if inactive == 1:
prod.active = 0
prod.save()
else:
if self.get_stock_amount() == 0:
self.active = 0
self.save()
Run Code Online (Sandbox Code Playgroud)
同样的情况发生,所以我的产品每次都被停用.
我已经检查了shell中的返回类型,self是一个变体,它是活动的.
我有一系列食谱,每种都有许多成分.此信息存储在连接表中.给一个食谱,我想根据成分找到类似的食谱.我该怎么做呢?
我在Windows窗体中使用HtmlEditor控件.
我从这个页面得到了控件:
http://windowsclient.net/articles/htmleditor.aspx
我想通过允许用户从剪贴板粘贴图像来扩展控件功能.现在,您可以粘贴纯文本和格式化文本,但在尝试粘贴图像时,它什么都不做.
基本上我认为当用户在编辑器上按下Ctrl + V时检测到,检查剪贴板上的图像,如果有图像,则将其手动插入编辑器.
这种方法的问题是我无法获取要引发的表单的OnKeyDown或OnKeyPress事件.
我在表单上将KeyPreview属性设置为true,但仍未引发事件.
我也试图子类形式和编辑器(如解释在这里)拦截WM_PASTE消息,但它也不会被上调.
关于如何实现这一点的任何想法?
非常感谢
我发现两个编译器(g ++ 4.5,VS2010 RC)之间存在一些不一致的方式,它们将lambdas与类模板的部分特化相匹配.我试图为lambdas实现类似boost :: function_types的东西以提取类型特征.请查看此内容以获取更多详
在g ++ 4.5中,operator()lambda 的类型看起来像一个独立函数(R(*)(...)),而在VS2010 RC中,它看起来像一个成员函数(R( C::*)(...)).所以问题是编译器编写者可以自由地解释他们想要的任何方式吗?如果没有,哪个编译器是正确的?请参阅以下详细信息.
template <typename T>
struct function_traits
: function_traits<decltype(&T::operator())>
{
// This generic template is instantiated on both the compilers as expected.
};
template <typename R, typename C>
struct function_traits<R (C::*)() const> { // inherits from this one on VS2010 RC
typedef R result_type;
};
template <typename R>
struct function_traits<R (*)()> { // inherits from this one on g++ 4.5
typedef R result_type;
};
int main(void) …Run Code Online (Sandbox Code Playgroud) 我正在考虑对装配有一些非常基本的了解.我目前的目标很简单:在使用-S开关为x86/x86-64编译C/C++时,对GCC汇编器输出有非常基本的了解.
足以做一些简单的事情,例如查看单个函数并验证GCC是否优化了我希望消失的东西.
有没有人知道一个真正简洁的汇编介绍,与GCC相关,特别是为了阅读的目的,以及任何随便阅读汇编的人都应该知道的最重要的指令清单?
我正在寻找任何专门讨论PHP类和对象的PHP /编程播客剧集.也许这太具体了,但任何参考都可以.
顺便说一下,PHP初学者有没有专门的播客?
如何在Objective-C(iPhone OS 3)中获得时区偏移?
例如,GMT -5是美国东部时间.我想要-5它的一部分.我该怎么办?
我有一个可排序的UITableView,但就是这样.现在,我将所有单元格设置为UITableViewCellEditingStyleNone,但这仍然将单元格的TextLabel向右移动了40个像素.反正是否有编辑模式和右侧的排序图标,而没有移动TextLabel?
我正在寻找一个将从csv文件一次解析一行的正则表达式.基本上,string.readline()做什么,但如果它们在双引号内,它将允许换行.
或者有更简单的方法吗?