在计划过去2周的迭代时,我采用了一个用户故事:
并将其分解为以小时计算的任务:
然后我会选择一个任务来处理,并跟踪花在它上面的时间.然后我会用另一个任务重复这个过程.在迭代结束时,我可以查看每个任务所花费的时间,将其与估算进行比较,并使用此信息来改进未来的估算.
在完全由测试驱动的情况下,提前明确定义的唯一工作是启动开发的验收测试,并且对于涵盖大量工作的用户故事,验收测试的范围可能过于宽泛给出一个很好的估计.
所以我可以猜测最终完成的任务(如前所述),但是花在它们上的时间要难以跟踪,因为测试会让你在很小的垂直切片中工作,通常会在每个切片上工作任务同时进行.
是否有任何技术可用于提供更详细的估算并准确跟踪执行TDD的时间?我正在使用TargetProcess,它鼓励将用户故事分成如上所述的任务,因此保持这种格式的内容会很有帮助.
Castle Windsor Container是否可以让一个组件实现两个不同的接口,然后在解析它时返回相同的组件实例?例如;
var windsor = new WindsorContainer()
.AddComponent<InterfaceA, ClassAB>()
.AddComponent<InterfaceB, ClassAB>();
var classAB1 = windsor.Resolve<InterfaceA>();
var classAB2 = windsor.Resolve<InterfaceB>();
Assert.AreSame(classAB1, classAB2);
Run Code Online (Sandbox Code Playgroud)
如果我按照所示尝试这个,我得到一个异常,消息已经为给定的密钥注册了一个组件,如果我提供了不同的密钥,那么它将返回该类的两个独立实例ClassAB.
编辑:理想情况下,我想在配置文件中执行此操作.
我在Windows PC上的共享文件夹中有一个Git存储库,我使用UNC路径访问该文件夹,例如
git clone //server/share/MyRepo.git
Run Code Online (Sandbox Code Playgroud)
当我从家中通过VPN获取此存储库中的更改时,需要很长时间git-upload-pack.exe才能运行.我意识到没有涉及服务器(如此),我的本地PC正在运行所有可执行文件.
这个名字git-upload-pack.exe告诉我,我的本地PC正在从远程文件共享中读取文件,以便将它们上传到某处,但这本身就是自己的,这没有任何意义.这反过来又让我觉得它fetch远没有达到预期的效果.这就像本地机器正在做所有工作来减少要传输的数据,但要做到这一点,它必须传输所有数据.
任何人都可以阐明它是如何工作的吗?没有通过SSH或远程端的任何东西运行真正的Git服务器,或者是不必要地来回传输文件,性能是否尽可能好?
如果我有一个MultiPresenter并且我使用a ListBox来显示Presenters它是托管,我如何让Caliburn发现并绑定视图并查看项目的模型?
例如,如果我有一个看起来像这样的简单视图:
<UserControl x:Class="MyProject.Views.CarView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<ListBox ItemsSource="{Binding Parts}" />
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
哪个是必然的CarViewModel:
public class CarViewModel : MultiPresenter
{
public BindableCollection<IPartViewModel> Parts { get; }
}
Run Code Online (Sandbox Code Playgroud)
并且该Parts集合包含实现IPresenter并具有相应视图的各种对象,例如WheelViewModel和WheelView,EngineViewModel和EngineView.
我希望Caliburn使用视图策略为我解析视图.这可能吗?在这种情况下,我需要做些什么才能正确设置演示者的层次结构?
使用现在遗留的.NET MongoDB驱动程序,我曾经使用以下内容创建一个上限集合(如果它尚不存在)(不是防弹,但它在几个场合意外地阻止我们使用无上限集合):
private MongoCollection GetCappedCollection(string collectionName, long maxSize)
{
if (!this.database.CollectionExists(collectionName))
CreateCollection(collectionName, maxSize);
MongoCollection<BsonDocument> cappedCollection = this.database.GetCollection(collectionName);
if (!cappedCollection.IsCapped())
throw new MongoException(
string.Format("A capped collection is required but the \"{0}\" collection is not capped.", collectionName));
return cappedCollection;
}
private void CreateCappedCollection(string collectionName, long maxSize)
{
this.database.CreateCollection(collectionName,
CollectionOptions
.SetCapped(true)
.SetMaxSize(maxSize));
}
Run Code Online (Sandbox Code Playgroud)
如何使用新版本的.NET MongoDB驱动程序执行相同的操作?理想情况下,我希望保持与上面相同的行为,但抛出异常就足够了.虽然可以使用CreateCollectionAsync它来创建上限集合,但似乎无法检查现有集合是否有上限.
shell有,db.collection.isCapped()但我没有在.NET API中找到的等价物.另一种方法是获取集合的统计数据并检查capped标志,但我也看不出如何做到这一点.
我有两个ViewModel,它们为不同的视图提供相同的模型.一个将模型显示为a中的项目ListBox,另一个将其显示为a中的选项卡TabControl.本TabControl是为那些在选定的项目显示选项卡ListBox,从而使标签来来去去,选择的变化.
我可以通过向IsSelectedModel 添加一个属性并将ViewModels绑定到它来轻松地同步这两个控件(有点像这样),但这会使模型与实际上不属于那里的演示细节混乱.
似乎我需要Model和ViewModels之间的东西来保持这个额外的状态.是否有任何好的方法可以做到这一点?
我已经定义了我的课程:
public class Host
{
public string Name;
}
Run Code Online (Sandbox Code Playgroud)
然后是强类型字典:
Dictionary<string, Host> HostsTable;
Run Code Online (Sandbox Code Playgroud)
然后我尝试比较一个值:
if (HostsTable.Values.Where(s => s.Name == "myhostname") != null) { doSomething }
Run Code Online (Sandbox Code Playgroud)
问题是,没有找到任何东西,即使我确定该项目在列表中.我做错了什么?
鉴于在.NET中的System.String类是密封的,你如何创建一个简单的领域特定的字符串类,所以你可以使用类型检查,以确保正确的排序字符串使用?你有这样一个班级最喜欢的实现吗?
例如,您可能希望创建一个表示电子邮件地址的类,以确保不会意外地将电子邮件发送到某人的邮政地址.虽然这不是一个很好的例子,但我正在考虑的情况是,你需要的只是类型安全,但没有额外的逻辑或验证.
.net ×3
mvvm ×2
wpf ×2
agile ×1
c# ×1
caliburn ×1
dictionary ×1
estimation ×1
git ×1
itemscontrol ×1
linq ×1
mongodb ×1
silverlight ×1
string ×1
tdd ×1
windows ×1
xaml ×1