我讨厌编写代码,使我的软件更加牢固。这些框架应该做的!因此,任何知道一个代码"加强"实用工具,凝固的代码?

如果我必须创造这样的东西我自己,它的工作如下:当你在编写代码中有一个调试的标志,它会自动神奇添加"巩固"代码的每个方法:

经代码有一个尝试获物和把一个调试。Assert(true)在捕捉(所例外被夹在它们的起源)。

记录每个方法的条目,印刷"ToString()"价值观的参数,这样我就可以追踪这是怎么回事。

检查每个参数对于空。

使用"IsValid"的框架,以检查对象本身和各个论点,在那里IsValid()为对象的方式的声明,其期望是真正的(例如,如果我是一个TableOfContentsEntry我希望能永远在一本书,是IsValid()并指页的IsValid().

所以,为什么不呢?

有帮助吗?

解决方案

如果你想要登录的方法的话,可以使用一个AOP框架喜欢 PostSharp.事情就像强制执行方法前/后置条件将是最好的通用设计-通过合同机制(如新 代码合同 库,它将船舶。net4.0.它肯定没有意义只是检查参数的空,因为这可能是一个有效的价值根据不同的方法。注入调试。称为代码可能是有问题的,因为你可能不想要/能够处理例外情况,在来源功能。我认为这将是不切实际的,如果不是不可能建立一个通用框架这样的事情,因为要求将有所不同所以大大地之间的项目。

编辑:为澄清我的评论关于加入"调试"的断言进的方法-我读了你的建议是转换一个方法体成像这样的东西:

public void SomeMethod(args)
{
    try
    {
        //original method body
    }
    catch(Exception ex)
    {
        Debug.Assert(false);
        throw;
    }
}

这个问题是,声称指示的事情,永远不应该是假的-所以这种结构意味着方法永远不能扔掉,这是不正确的。现在的问题是,如果方法不会扔的,断言将会失败,甚至如果调的方法处理异常适当。从你的意见,看来你正在做的事情是这样的:

public void SomeMethod(object arg)
{
    Debug.Assert(arg != null);
    if(arg == null) throw new ArgumentNullException("arg");

    //rest of method
}

这是一个有用的做法,而且我相信,代码的合同图书馆支持的'传统'的先决条件的检查(扔例外)在其静态的分析。

其他提示

这是很好的看到被堵塞我的书!对我来说,最大的问题是,我认为代码生成的目标应该是“旁边的”开发人员的代码 - 即。理想情况下,生成的代码将无法与开发人员的代码混合。我不知道是否有任何的方式来添加此“从而巩固了”代码的分部类或将类和被调用它的客户端之间设置了代理?当然,它肯定可以生成代码并将其插入到开发人员的代码,但是你想创建某种约定,这样,当开发者进行更改并重新生成“soldifying”的代码,该工具可以删除旧代码并根据开发人员的代码的最新版本生成新的代码。

我喜欢的东西时,你传递的东西开了个工作线程不会丢失你的筹码。我甚至不知道这个(C#)的一种解决方法。将是巨大的,知道父母的堆栈紧扣到创建工作线程的地步。

在一般我觉得很多真正有用的东西需要被内置到语言,并不能真正被单独图书馆或框架干净实现。我记得在高中教他们总是在某个函数的意见前/后条件写的,但我真的很想看到的是编写在编译期进行检查,如果可能的前/后置条件,如果没有则在运行。他们会被标记某种方式使得编辑器可以有选择地显示或隐藏,因此它不会在阅读真正的代码的方式获得。

我怀疑有类似的东西,如果,那么它肯定是不是有用。这取决于你的规则定义,不同的人想象的不同,有不同的需求和框架... 您所描述的事情可以通过元编程或一些宏系统来实现。 在Java中,有一些项目,从而有助于实现这种方法usign注释,不知道是否有一些相当于在C#中的宇宙。 然而,isValid()的功能,看起来很像合同理念设计,也许是一些框架。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top