遵循测试驱动开发.
我最近实现了一个需要干净界面的算法(A*).通过干净我想要的是一些属性和一个搜索方法.
我发现很难找到的是测试搜索方法.它包含大约五个步骤但我基本上被迫在一个大的进程中编写这个方法,这使得事情变得困难.
对此有什么建议吗?
编辑
我正在使用C#.不,我目前没有手头的代码.我的问题依赖于一个测试只在实现整个搜索方法后才通过 - 而不是算法中的一个步骤.我自然重构了代码,但它实现了我发现很难.
我有这个LINQ查询.日期作为字符串存储在数据库中,但我需要按顺序排序.所以我将它转换为DateTime,但它没有订购.
(from m in dbDataContext.TimeCards
where m.TIMECARDDATE != ""
&& m.TIMECARDDATE != null
orderby Convert.ToDateTime(m.TIMECARDDATE) descending
select Convert.ToDateTime(m.TIMECARDDATE)).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)
知道为什么它不起作用吗?我无法更改数据库,所以我必须按照它的方式处理数据.我得到的数据像这样订购......
2/27/2009
2/26/2009
2/25/2009
2/28/2009
2/24/2009
Run Code Online (Sandbox Code Playgroud) 嘿,我有一个关于正则表达式的相当基本的问题.我想只返回body(包括)body标签中的文本,我知道以下是不对的,因为它也会匹配开始body标签之前的所有字符.我想知道你怎么去跳过那些?
x = re.match('(.*<body).*?(</body>)', fileString)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我<table>以网格形式显示结果.有一个ID列.无论如何通过HTML或CSS,我可以隐藏第一列?
我正在跑步RHEL 5.1和使用gcc.
我如何告诉cmake添加-pthread到编译和链接?
在matplotlib中,我如何在刻度线之间放置刻度标签(不低于刻度线)
例如:当绘制股票价格随时间变化时,我希望x轴次要刻度显示连续x轴主刻度线之间的月份和年份(不仅仅是主要刻度线之下)
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
jan feb mar apr may jun jul aug sep oct nov dec jan feb mar apr may jun jul aug sep
2008 2009
Run Code Online (Sandbox Code Playgroud) 如何消除以下语法的左递归?
E := EE+|EE-|id
Run Code Online (Sandbox Code Playgroud)
使用常用程序:
A := Aa|b
Run Code Online (Sandbox Code Playgroud)
翻译为:
A := b|A'
A' := ?| Aa
Run Code Online (Sandbox Code Playgroud)
将其应用于原始语法我们得到:
A = E, a = (E+|E-) and b = id
Run Code Online (Sandbox Code Playgroud)
因此:
E := id|E'
E' := ?|E(E+|E-)
Run Code Online (Sandbox Code Playgroud)
但这个语法似乎不正确,因为
?E+ -> ? id +
Run Code Online (Sandbox Code Playgroud)
将是有效的,但这是一个不正确的后缀表达式.
compiler-construction grammar parsing lexical-analysis context-free-grammar
众所周知,COM在发布新组件或应用程序时可以实现向后兼容性.这是可能的,因为COM中的接口是稳定的,即它们不会改变.
我努力寻找一个参考或书籍来处理如何从版本到版本躲避COM接口的描述.
以下是我的要求:
我们有一个可以由ole自动化驱动的应用程序.此应用程序的新版本可以与旧版本并行安装.
此应用程序的COM客户端可以使用独立于版本的PROGID,在这种情况下,它们可以使用最新版本的应用程序或依赖于版本的PROGID,在这种情况下,它们可以使用特定版本的应用程序.
对COM自动化的更改不应该破坏任何客户端.
让我们看一个例子:
#include <olectl.h>
#include <fxbase\autoif.h>
[
uuid(A1B3A66F-806F-46a2-82D9-9C278F415148),
lcid(-1),
version(1.0)
]
library LIB
{
importlib("stdole2.tlb");
[
uuid(82CDE055-790A-4505-BF3E-3282170C8FC6),
helpstring("Document"),
oleautomation,
dual,
nonextensible
]
interface IDocument : IDispatch
{
[id(0x00000001), propget, helpcontext(0x0012c94a)]
HRESULT Name([out, retval] BSTR* psName);
[id(0x00000001), propput, helpcontext(0x0012c94a)]
HRESULT Name([in] BSTR psName);
}
[
uuid(919B9E6E-76C0-4c23-A188-5840E5900997),
helpstring("Application object."),
oleautomation,
dual,
nonextensible
]
interface IApplication : IDispatch
{
[id(0x00000001), propget, helpstring("Returns the active document of the application.")]
HRESULT ActiveDocument([out, retval] IDocument** retval);
}
[
uuid(E0AA6FCA-AEF1-460b-A1F9-26250C28594B),
helpstring("Application 1.0 …Run Code Online (Sandbox Code Playgroud) 我相信之前有人可能已经问过这类问题,但我似乎无法找到类似的问题.
我有这样的事情:
client = Client.GetInstance(type.objectA));
if (client != null)
{
result += client.SaveObjectA(object);
}
client = Client.GetInstance(type.objectB));
if (client != null)
{
result += client.SaveObjectB(object);
}
client = Client.GetInstance(type.objectC));
if (client != null)
{
result += client.SaveObjectC(object);
}
client = Client.GetInstance(type.objectD));
if (client != null)
{
result += client.SaveObjectD(object);
}
Run Code Online (Sandbox Code Playgroud)
我想找到一种减少重复代码的好方法.
请让我知道你的好主意.
谢谢
***除了我之前放入的内容忘记提及一个非常重要的部分这些方法是从Web服务生成的.这是界面.
public interface Client
{
string SaveObjectA(object);
string SaveObjectB(object);
string SaveObjectC(object);
string SaveObjectD(object);
}
Run Code Online (Sandbox Code Playgroud) c# ×3
python ×2
.net ×1
cmake ×1
com ×1
css ×1
grammar ×1
html ×1
html-parsing ×1
html-table ×1
linq-to-sql ×1
matplotlib ×1
ole ×1
parsing ×1
pthreads ×1
refactoring ×1
regex ×1
tdd ×1
unit-testing ×1
winapi ×1