![]() |
1
7
如果您知道两个主要因素,属性就可以了:
只要你意识到这些问题,并对它们表示同意,就可以继续下去。 |
![]() |
2
5
据我所知,您主要考虑添加属性以使容器注册更容易。您仍在使用decorator设计模式实现缓存,这是imo实现缓存的正确方法。
我们在safewhere也这么做,但是我们使用
基于约定
改为注册。我们还使用了Castle Windsor,所以我不知道这是否适用于structuremap,但是我们只是用任何命名的东西扫描适当的程序集。
添加自定义属性是否是一种代码味道取决于代码的可重用性程度。我的经验法则是我想成为 能够的 把所有东西都连接起来 穷人的迪 .我仍然使用DI容器,但是这个规则为我提供了一个健全性检查。 一般来说,我不喜欢将我的代码耦合到一个特定的容器,但是我不能真正弄清楚您是否在这里这样做。这取决于是否需要引用structuremap来定义自定义属性。如果你必须参考结构图,我会认为它是一种气味。 |
![]() |
3
2
我在这里看到的唯一缺点是没有缓存对象的中心点。通常有一个特定的层完成缓存。用你的技术,情况并非如此。 我还认为您的代码有责任决定是否应该缓存某些内容,而不是类/接口。 但要回答你的问题,这是一种代码味道吗?我会说不,但一旦这个系统在很多地方被使用,新开发人员就可能难以掌握它的窍门。 |
![]() |
4
1
我不能说我完全理解每件事,但就我的2美分而言,这似乎可以说是好的;但我只是想知道,在不重新编译的情况下,是否很容易改变它。也许您希望通过配置条目而不是编译来更改缓存持续时间。我可能会将这些数据存储在一个我可以轻松配置的地方。(也许我误解了…) |
![]() |
5
1
我倾向于同意关于缓存的说法必须由您的代码决定,但另一种情况是,我认为您可能需要考虑“需要缓存什么,整个对象?” 您可能想玩弄这样一个想法:让属性设置不想缓存对象的成员。 也许是属性
? |
![]() |
6
1
我认为每当您使用属性时,应该考虑的是意图与类的耦合。一点是,您不能在缓存持续时间为10秒的同一位置使用该实体,而在另一个缓存持续时间为60秒的位置使用该实体。imho这总是任何类型属性的权衡。 |
![]() |
7
1
我参加这次聚会有点晚了,但我最近一直在考虑这个问题,总的来说, 使用属性进行缓存是一种代码味道 . 原因如下:
归根结底,在表面上,通过属性进行缓存似乎是一个好主意,但是在实践中,缓存解决的问题的本质意味着它不适合由属性驱动。 |