Skip to content

Discussion: ColumnOptions actually a good name? #2884

@TomFinley

Description

@TomFinley

In #2878, @eerhardt had a comment that we should consider, the gist of which was, since all of our Options classes have mutable properties, is it appropriate for ColumnOptions to be called this, since they are not and often cannot be mutable? We also have issue #2854 where @rogancarr thought he couldn't get normalization information out of the structure since it was named options, so this is not actually as academic an issue than I might have thought, say, a few days ago.

The approach taken in #2709 was that these structures created for configuration of the per-column options should be called options, and that it was (apparently) assumed to be irrelevant whether those items were mutable or not. Now, I'm not saying we should revert that PR necessarily, but it is something to consider, since it seems to be confusing people.

Now then, the structures themselves obviously must not be mutable, since they are often the same structures used in the associated estimators and transformers to project schema, e.g., here it is for the n-gram hashing estimator:

private readonly ColumnOptions[] _columns;

Here it is in the transformer:

private readonly ColumnOptions[] _columns;

So, just something to think about, whether it was in fact a good idea for this thing to be called "options" really, in all the cases we named it options. Maybe we could have a refinement on the policy of naming this thing? Or maybe we decide to just live with it, because the confusion of calling all these things "options" vs. "info" vs. "whatever" is greater than this inconsistency in roles?

I'm fine with leaving it as is, but I do see some confusion so I think we should think about it, and at least formulate a psoition.

/cc @eerhardt and @rogancarr and @sfilipi and @artidoro ...

Metadata

Metadata

Assignees

Labels

APIIssues pertaining the friendly APIquestionFurther information is requested

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions