你会给这个物体起什么名字?

问题描述 投票:0回答:12

我有一张这样的桌子:

   =========================
   ID | Col2 | col3 | col4 |
   =========================
-> 21 | balh | blah |  foo |
   22 | balh | blah |  foo |

我正在创建一个对象,可以使用表达式中的列名称从一行读取数据。像这样的东西:

 myrow.getValue(col => col.Col2)

我目前遇到的问题是命名该对象,我无法真正找到一个描述它的功能而不很长的名称。

你会叫它什么?

编辑:我将添加更多细节。我正在使用一个 COM 对象,它一次只能读取一列。 因此,我正在编写一个包装器,它可以使用 ID 从表(COM 对象内部)获取行,然后让用户使用表达式提供列名(细节并不重要)。该对象进入表并使用 ID 和列名称获取该行的数据。

naming-conventions
12个回答
2
投票

行读取器?

代码看起来像(Get 命名的一些变体)

var reader = new RowReader(sourceRow);

//var value = reader.GetValue(col => col.Col2);
//var value = reader.ByColumn(col => col.Col2);
//var value = reader.ReadColumn (col => col.Col2);

根据其他人的信息,也许:RowColumnsReader。在这种情况下,该方法将为 Read。


1
投票

这是对象的方法而不是对象本身,但我个人的选择是

myRow.ReadRowByCol(...)
,因为它捕获了意图。但我也喜欢保罗的“鲍勃”:-)


1
投票

ColumnSpaceShipRowReader

如果您正在存放太空飞船。


1
投票

我会退一步问:为什么要创建一个专门用于从列中读取值的新对象?

在我看来,最好在封装表本身的类中创建一个新的方法(例如readColumn())。

这将是更好的面向对象实践。

类对一个对象进行建模,该对象具有:

  • 某些属性/数据(成员data
  • 某些行为(成员方法)。

在您的特定情况下,表格是数据,读取是对该数据执行的行为

因此,应该将 read 方法实现为现有数据类中的方法。

如果您创建另一个类来读取数据,您可能需要打开存储数据的类(例如,通过使用 C++ 中的友元类)。 这违反了类的封装,因为您突然允许外部类自由访问您的数据,尽管是以一种潜在受控的方式。


1
投票

鲍勃? :-)

如果您创建一个使用列名从行中获取一些数据的方法,那么您想要的是方法而不是对象?

data = row.read(columnName);

符合您的描述。如果您比这更具体,您可以使用更能反映您的实际领域或抽象级别的名称。

一般来说,如果你能用一两句话描述你正在做什么,那么名词就是宾语,动词就是方法。


0
投票

ColumnReader


0
投票

这与做有什么不同:

myrow.Select(col => col.Col2);


0
投票

行渲染器


0
投票

在我看来,您正在描述一种方法,而不是一个对象。

如果你的对象是代表某行某列的值,那么我想将其称为 Cell 会很省。


0
投票

RowReader
RowByColumn
ColumnGrabber

实际上,问题在于您应该设计

Row
对象 - 一个封装与给定行关联的数据的对象(我猜在您的情况下是
ID
)以及该对象应该使用的方法 on返回值。 将
Row
对象称为“
Row
”或“
Case
”或“
DataReference
”或任何对您的应用程序有意义的名称。 然后这些方法就很容易命名(例如,
Row.getColumn('col2')

注意:仔细想想,

RowReader
对于这个类来说是一个糟糕的名字。 它是不明确的,因为它读取的是“列”,而不是行。 ColumnReader 也不好,原因相反(它通过读取行来读取列)。
Row
需要类,而不是函数。
    


0
投票

列数据获取器

已编辑

之后:abatishchev 评论。谢谢阿巴蒂什切夫。


-1
投票
valueAt

而不是

getValue
:

myrow. valueAt( col => col.Col2 );

此外,重载 
[]

运算符可能会很好而且很有意义:


var x = myRow["name"]; var x = myRow[ col => col.Col2 ];

	
© www.soinside.com 2019 - 2024. All rights reserved.