gpt4 book ai didi

C# 样板代码

转载 作者:行者123 更新时间:2023-12-02 00:10:45 24 4
gpt4 key购买 nike

我正在考虑构建一些通用扩展,这些扩展将采取所有这些 null、抛出检查和断言的方式,并使用流畅的 API 来处理此问题。

所以我正在考虑做这样的事情。

Shall() - Not quite sure about this one yet
.Test(...) - Determines whether the contained logic executed without any errors
.Guard(...) - Guards the contained logic from throwing any exception
.Assert(...) - Asserts before the execution of the code
.Throw(...) - Throws an exception based on a certain condition
.Assume(...) - Similar to assert but calls to Contract.Assume

用法:father.Shall().Guard(f => f.Shop())

问题是,我不想在运行时进行这些额外的调用,并且我知道 AOP 可以为我解决这个问题,我想将这些调用直接内联到调用者,如果您有更好的方法,请这样做一定要告诉。

现在,在我研究或做任何事情之前,我想知道是否有人已经这样做过或者知道有一个工具正在这样做?

我真的很想构建类似的东西并将其发布给公众,因为我认为它可以节省大量时间和头痛。

一些例子。

DbSet<TEntity> set = Set<TEntity>();

if (set != null)
{
if (Contains(entity))
{
set.Remove(entity);
}
else
{
set.Attach(entity);

set.Remove(entity);
}
}

更改如下。

Set<TEntity>().Shall().Guard(set =>
{
if (Contains(entity))
{
set.Remove(entity);
}
else
{
set.Attach(entity);

set.Remove(entity);
}
});

与其搞笑,试图取笑别人,有些人真的可以学到一些关于成熟的东西,你可以分享你的经历,告诉我它有什么好处或坏处,我会接受。

我不是在尝试重新创建代码契约,我知道它是什么,我每天都在使用它,我正在尝试将写入的样板代码移动到一个地方。

有时,您的方法对于每次调用都必须检查返回的对象,并且不是您的代码,因此您无法确保被调用者不会导致 null,因此在调用者中您必须对返回的对象执行 null 检查返回对象,因此我想到了一些可以让我在链接调用时轻松执行这些检查的方法。

更新:我必须再考虑一下并更改 API,以使意图清晰并使代码更具可读性。

我认为这个想法根本没有完善,而且我确实对所有这些方法做得太过分了。

总之,我暂时先不管了。

最佳答案

听起来您正在描述类似代码契约(Contract)的内容:http://msdn.microsoft.com/en-us/devlabs/dd491992

关于C# 样板代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8639689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com