我花了很多时间为我的最新项目构建测试,而且我真的不确定投资回报率是多少.
我是一个人操作,我正在构建Web应用程序.我不一定要"证明"我的软件工程,任何人(除了我的用户),我很担心,我花了很多时间一个很好的协议不必要rebugging测试代码在过去几个月.
我的问题是,虽然我喜欢TDD适用于小型到大型软件团队的想法,但它如何帮助一个人团队快速构建高质量的代码?
谢谢
=>今天遇到这个问题,来自于stackoverflow的创始人之一joel spolsky的博客:
http://www.joelonsoftware.com/items/2009/09/23.html
"Zawinski没有进行过多次单元测试.他们"原则上听起来很棒.鉴于悠闲的发展速度,这肯定是要走的路.但是当你看到时,'我们必须从零到完成六个星期,"好吧,除非我把东西剪掉,否则我不能这样做.而我要删除的东西是不是绝对关键的东西.单元测试并不重要.如果没有单元测试,客户就不会不会抱怨这个.""
随着我年龄的增长,我想我越来越意识到这一切都与速度和功能有关.我很乐意建立单元测试.但由于我们只有很多时间可以使用,我宁愿更快地构建它,依靠beta测试和良好的自动错误报告来解决任何问题.如果这个项目最终变得足够大,以至于这会让我陷入困境,它将产生足够的收入,我可以为重建辩护.
我有一个DTrace探针捕获函数的调用,函数的一个参数是a CFStringRef.这是一个私有结构,它包含一个指向unicode字符串的指针.但CFStringRef它本身并不是一个char*普通的DTrace方法,就像copyinstr()返回一样?cp?,这并不是很有用.
那么如何在DTrace动作中打印出字符串呢?
我正在尝试编写最终的"Yield"方法,以将当前时间片提供给其他线程.到目前为止,我发现有几种不同的方法可以使线程产生分配的时间片.我只是想确保我正确地解释它们,因为文档不是很清楚.因此,从我在stackoverflow,MSDN和各种博客文章中看到的内容,存在以下选项,它们都有不同的优点/缺点:
SwitchToThread[win32]/Thread.Yield[.NET 4 Beta 1]:产生同一处理器上的任何线程
Thread.Sleep(0)Thread.Sleep(0):在任何处理器上产生任何具有相同或更高优先级的线程
Thread.Sleep(1)Thread.Sleep(1):屈服于任何处理器上的任何线程
Thread.Sleep(1)如果
不使用timeBeginPeriod/ timeEndPeriod[win32],通常会将线程暂停约15ms
)怎么样Thread.SpinWait?可以用它来产生线程的时间片吗?如果没有,它用于什么?
我还有其他一些我错过或错误解释的东西.如果你能纠正/增加我的理解,我将不胜感激.
这就是我的Yield方法到目前为止的样子:
public static class Thread
{
[DllImport("kernel32.dll")]
static extern bool SwitchToThread();
[DllImport("winmm.dll")]
internal static extern uint timeBeginPeriod(uint period);
[DllImport("winmm.dll")]
internal static extern uint timeEndPeriod(uint period);
/// <summary> yields time slice of current thread to specified target threads </summary>
public static void YieldTo(ThreadYieldTarget threadYieldTarget)
{
switch (threadYieldTarget) { …Run Code Online (Sandbox Code Playgroud) 它由Microsoft作为框架设计指南给出,属性应该彼此独立,而不是依赖于按任何特定顺序设置.
假设您有一个需要支持dimmensions和面积计算的三角形类.你会如何模仿这个?
这当然是被认为是gauche的设计,因为Area依赖于Base和Height首先设置:
class Triangle{
public double Base {get;set;}
public double Height {get;set;}
public double Area {
get{
return (Base * Height) / 2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
假设您使用构造函数,您可以确保此情况的默认值,但这是正确的方法吗?
class Triangle{
public Triangle(double b, double h){
Base = b;
Height = h;
}
public double Base {get;set;}
public double Height {get;set;}
public double Area {
get{
return (Base * Height) / 2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
您仍然拥有一个依赖于其他属性的属性.为了成为一个纯粹主义者,我只能看到几种方法(我想它们可以合并):
Make Base/Height具有只能在构造函数中设置的只读成员
将面积计算成方法.
使用某种工厂模式+ readonly成员来确保尽管可能存在依赖关系,但只能通过实例化Triangle类的方法来设置值.
问题:
指南是否切实可行(为了支持它,您是否必须在您的类中建立很多复杂性)?[例如,SqlConnection类允许您初始化连接字符串属性,但允许您更改它的各个部分,例如命令超时]
您如何管理保持您的财产彼此独立?
对于使用Silverlight/MVVM类型体系结构的人来说,由于数据绑定对象的工作方式,您是否接受属性中的依赖项?例如,绑定一个三角形实例,在屏幕上显示高度,基数和面积.
通过使用多个python脚本可以在图的不同部分工作,是否可以简化图形生成?
例如,如果我有以下功能:
FunctionA:绘制一个直方图
FunctionB:在其中绘制一个带有文本的框
FunctionC:绘制一个C
的图形函数:绘制一个D的图形
如何在不同的脚本中重用上述功能?例如,如果我想创建一个带有C图形的直方图的图形,我会以某种方式从我的脚本中调用FunctionA和FunctionC.或者,如果我想要一个带有两个图的图形,我会调用FunctionC和FunctionD.
我不确定我是否在清楚地解释自己,但另一种问这个问题的方法是:如何将一个图形对象传递给一个函数,然后让函数在传递的图形对象上绘制一些东西,然后将其返回到主脚本添加其他东西,如标题或东西?
所以我不重新发明轮子,为Ruby on Rails设置注册,登录,注销和密码重置框架的最佳方法是什么?理想情况下,必须有一个处理这个问题的gem(库,包等)?
提前致谢!
R中是否有一个命令允许您编写一个CSV文件,其中包含矩阵的行名和列名(dimnames(M))?每当我输出文件时,名称都消失了.
help(write)
Run Code Online (Sandbox Code Playgroud)
没有提到这是可能的.
你好,我正在编写一个可以在Windows XP机器上运行的批处理脚本.此脚本需要能够可靠地验证作为命令行参数传递的目录确实存在.
假设我的脚本名为script.bat,它需要支持以下作为合法的命令行参数:
C:\> script.bat C:
C:\> script.bat C:\
C:\> script.bat ..\photos
C:\> script.bat C:\WINDOWS
C:\> script.bat "C:\Documents and Settings"
C:\> script.bat "C:\Documents and Settings\"
C:\> script.bat F:\music\data\
C:\> ...
Run Code Online (Sandbox Code Playgroud)
基本上,给一个带有或不带尾随反斜杠的驱动器号以及完整的,绝对的或相对的路径名,带或不带尾随反斜杠(在某些目录名中有或没有空格)是合法的. )).如果它包含空格以便被解释为一个参数,那么显然必须引用该名称.但是,如果没有其他要求,则应允许引用名称:
C:\> script.bat "F:\music\data\"
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试看起来像这样:
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
IF ErrorLevel 1 GOTO :NoExtensions
IF "%~1"=="" GOTO :NoDirectory
SET dir=%~1\NUL
ECHO You provided: %1
ECHO Testing using: %dir%
IF NOT EXIST %dir% GOTO :BadDirectory
SET dir=%~f1\
ECHO The following is …Run Code Online (Sandbox Code Playgroud) .net ×1
assembly ×1
batch-file ×1
c ×1
c# ×1
c++ ×1
cfstring ×1
concurrency ×1
dtrace ×1
file-io ×1
machine-code ×1
matplotlib ×1
matrix ×1
python ×1
r ×1
scripting ×1
tdd ×1
unit-testing ×1
windows ×1