假设一个允许在空间树上查询的接口
public ISpatialTree
{
int FindChildIndex(Vector point);
bool IsLeaf { get; }
ICollection<ISpatialTree> Children { get; }
}
另一种允许改变树的方法:
public ISpatialTreeWriter : ISpatialTree
{
void Add(Vector point);
bool Remove(Vector point);
void Clear();
}
我正在寻找一个名称来表示可写界面。理想情况下,它应该是合理的简短和可读的字。它不仅适用于这个示例,而且我想对项目中的所有代码使用约定,因为这是一个常见的情况。
有谁知道这个问题有一个很好的会议吗?在其他项目中使用哪些约定?
讨论过的单词包括Writer (歧义,常用于其他上下文)、Mutator (混淆)、Rw (不可读,而不是一个单词)。
一个很好的解决方案是一个单词,不超过6-8个字母,这就很明显,这是作者的界面。
发布于 2014-05-14 10:47:42
作家和突变者是一个糟糕的选择,因为他们意味着变异其他东西。如果更改对象本身,则适当的表单是可写的和可变的。
如果您有一个只读接口,但基础对象可以通过另一个接口进行更改,则该对象不是不可变的。这意味着可变性与不可变性并不是您想要在这里进行的区分。
因此,只有ReadOnly、ReadWrite或Writable仍然存在。由于您根本没有WriteOnly访问权限,所以不需要区分ReadWrite和WriteOnly。ReadWrite不是一个恰当的词,所以我宁愿使用简单的Writable。
按照.NET中现有集合的约定,适当的选择将是IReadOnlySpatialTree
和ISpatialTree
,后者是可写的。
如果您的大多数代码只是读写访问是例外,则可以偏离此约定,使用ISpacialTree
作为只读接口,使用IWritableSpacialTree
作为可写接口。
发布于 2014-05-14 10:09:10
我建议您指定只读接口样式,例如:
interface IReadOnlySpatialTree
{
}
然后,可写接口扩展了它的名称,即:
interface ISpatialTree : IReadOnlySpatialTree
{
}
在不需要只读部分的情况下,很少使用可写接口。如果你不小心,你将得到至少3个接口为每种类型(只读/只写和ReadW区),这不是特别有用,是浪费精力的维护。
拥有只读接口是有用的,因为这些方法大概是纯的,从而简化了缓存和其他方面。这也意味着我们可以确保书写不会发生在无意中。然而,对于一个可写的接口来说,同时阅读也并不重要--只读接口没有副作用。
在列表.AsReadOnly框架中有一种非常奇怪的方法,因为MS一开始没有考虑只读。
https://softwareengineering.stackexchange.com/questions/239032
复制相似问题