我使用CodePlex的Subversion项目将自己描绘成一个问题 - 为此我在这里寻求帮助.我有一个本地存储库,CodePlex有它的项目的Internet存储库,这两个不混合:-(.
但我亲爱的离去的父亲曾经告诉我,一个聪明的人和一个聪明人之间的区别在于智者不会进入陷阱,一个聪明的人找到他的出路.换句话说:我一定是做错了.所以:
假设你是一群开发者.您想要开始修改的Internet上有一个Subversion控制的项目.您希望在本地处理它,根据您的需要进行更改.您想要本地版本控制.您希望控制哪些Internet更改可以接受到您的存储库 - 那些相关且重要且不会产生噪音的更改.您希望将一些本地更改提交到Internet - 您确定这些更改是稳定的,并且与整个社区相关.
这种操作方法在我看来是常识,但后来我从未参与过开源项目.所以:1.这确实是一种常见的操作方法吗2.你如何使用Subversion进行操作而不会遇到麻烦?
我真的很尴尬地问这么一个微不足道的问题,但调试一些软件现在说服我,我真的不明白这个问题:
从20,000英尺高度看.NET事件是如何工作的?我不是指委托/事件处理程序模式和所有这些.我的意思是 - 大图是什么:
现在,什么是魔术?这与线程有什么关系?当事件发生时,运行我的代码的线程是否被中断,然后在事件处理程序返回后恢复?但我搜索并发现 .NET处理程序在原始线程中同步调用.那么谁负责停止和恢复代码A?如果事件是嵌套的(即事件1的事件处理程序运行时发生事件2)会发生什么?
编辑:据我所知,答案说,下一个事件的事件处理只有在当前运行的事件处理程序完成后才会运行.这意味着您的代码不会被中断:第n行将始终在第n-1行之后和第n + 1行之前立即运行.然而就在我发布问题之前,我正在调试程序,通过自动化控制Internet Explorer(使用Webius的SWExplorerAutomation).我非常肯定,当我在代码中踩线时,我被"绑架":-)到一些事件处理程序,并在事件处理程序完成其业务后返回到代码中的中断位置.这意味着要么不理解答案,要么在逐步通过调试器时程序的行为不同!
我有这样的代码:
string uriString = @"C:\Temp\test.html";
Uri uri = new Uri(uriString);
bool goodCond = uri.IsWellFormedOriginalString();
Run Code Online (Sandbox Code Playgroud)
但是goodCond是假的!我究竟做错了什么?
编辑:谢谢Johannes和Catdirt.我将集中讨论我的问题:如何将有效文件路径转换为有效文件Uri(使用uri.IsWellFormedOriginalString作为Uri有效性的指示)?看看这个:
DirectoryInfo di = new DirectoryInfo(@"c:\temp");
FileInfo [] fis = di.GetFiles("test.html");
FileInfo fi = fis[0];
string uriString = fi.FullName;
Uri uri = new Uri(uriString);
bool goodCond = uri.IsWellFormedOriginalString()
Run Code Online (Sandbox Code Playgroud)
Obviosly fi.fullName是一个结构良好的路径,但仍然是goodCond很糟糕!
我正在尝试将List转换为IEnumerable,因此我可以验证不同的列表不为null或为空:
假设myList是List <T>.然后在我想要的来电代码中:
Validator.VerifyNotNullOrEmpty(myList as IEnumerable<object>,
@"myList",
@"ClassName.MethodName");
Run Code Online (Sandbox Code Playgroud)
有价值的代码是:
public static void VerifyNotNullOrEmpty(IEnumerable<object> theIEnumerable,
string theIEnumerableName,
string theVerifyingPosition)
{
string errMsg = theVerifyingPosition + " " + theIEnumerableName;
if (theIEnumerable == null)
{
errMsg += @" is null";
Debug.Assert(false);
throw new ApplicationException(errMsg);
}
else if (theIEnumerable.Count() == 0)
{
errMsg += @" is empty";
Debug.Assert(false);
throw new ApplicationException(errMsg);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.它编译,但是无数是空的!为什么?
我试图理解为什么我不能让WPF让我的图像显示活泼,而像Facebook和Apple这样的创业公司似乎不得不让他们的软件表现出来;-)
嗯,一个明显的区别是EQATEC是免费的,DotTrace不是.然而,考虑到通常免费版本是不够的,并且必须转向$$版本,并且鉴于DotTrace具有针对个体开发者的"个人许可证",这不是最初可以相信的差异化因素.我也有Resharper ......
那么,撇开"自由"因素,EQATEC剖面仪可以与Jet Brains相媲美吗?
为什么ASP.Net MVC 3会在模型中显示注释?是不是View负责显示?
当然,我不是在与ASP.NET MVC设计团队争论,但我试图检查我的理解.
如果确实这是关注分离的转变,是否有另一种方法可以避免这种情况?
编辑:我正在引用注释,如DataType,DisplayName和DisplayFormat.我现在正在观看PluralSight(优秀)讲座,他们将这些属性放在模型上.
我总是验证论点。我刚刚开始进行单元测试。我是否应该添加测试来验证是否因无效参数引发异常?
例如,假设整数参数应在 3..5 范围内。然后我有一个验证,如果低于 3 或高于 5,则会引发超出范围的异常,但现在我必须编写额外的两个和一点测试用例 - 两个验证是否随值引发异常低于 3 和大约 5,以及一个测试用例,用于验证当所有参数都有效时不会引发异常。
我很矛盾——“魔鬼和角度在我的肩膀上”的情况:)。“没有人因为选择 IBM 而被解雇”的逻辑是:“有人会传递无效的论点。您已经投入精力通过验证论点来验证这是否得到了处理。加倍努力,为每个论点投入一些测试用例验证你的参数验证是否有效。”
但脚踏实地的逻辑是——“这是自重。验证代码本身只是保险。在验证上添加测试用例是浪费金钱,增加了另一层保险”。
我应该怎么办?
所以,我的问题是:“我是否应该为每个公共方法的每个参数编写测试用例来验证参数验证代码确实有效? ”
.net ×3
c# ×3
arguments ×1
asynchronous ×1
casting ×1
codeplex ×1
generic-list ×1
ienumerable ×1
profiler ×1
profiling ×1
repository ×1
svn ×1
unit-testing ×1
uri ×1
validation ×1