[
https://issues.apache.org/jira/browse/IMPALA-7867?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul Rogers updated IMPALA-7867:
--------------------------------
Description:
When using Java collections, a common Java best practice is to expose the
collection interface, but hide the implementation choice. This pattern allows
us to start with a generic implementation (an {{ArrayList}}, say), but evolve
to a more specific implementation to achieve certain goals (a {{LinkedList}} or
{{ImmutableList}}, say.)
For whatever reason, the Impala FE code exposes {{ArrayList}}, {{HashMap}} and
other implementation choices as variable types and in method signatures.
This ticket tracks a gradual process of revising the declarations and
signatures to use the interfaces {{List}} instead of the implementation
{{ArrayList}}.
Also, the FE code appears to predate Java 7, so that declarations of lists tend
to be in one of two forms (with or without Guava):
{code:java}
foo1 = new ArrayList<Bar>();
foo2 = Lists.newArrayList();
{code}
Since Java 7, the preferred form is:
{code:java}
foo = new ArrayList<>();
{code}
was:
When using Java collections, a common Java best practice is to expose the
collection interface, but hide the implementation choice. This pattern allows
us to start with a generic implementation (an {{ArrayList}}, say), but evolve
to a more specific implementation to achieve certain goals (a {{LinkedList}} or
{{ImmutableList}}, say.)
For whatever reason, the Impala FE code exposes {{ArrayList}}, {{HashMap}} and
other implementation choices as variable types and in method signatures.
This ticket tracks a gradual process of revising the declarations and
signatures to use the interfaces {{List}} instead of the implementation
{{ArrayList}}.
> Expose collection interfaces, not implementations
> -------------------------------------------------
>
> Key: IMPALA-7867
> URL: https://issues.apache.org/jira/browse/IMPALA-7867
> Project: IMPALA
> Issue Type: Improvement
> Components: Frontend
> Affects Versions: Impala 3.0
> Reporter: Paul Rogers
> Assignee: Paul Rogers
> Priority: Minor
>
> When using Java collections, a common Java best practice is to expose the
> collection interface, but hide the implementation choice. This pattern allows
> us to start with a generic implementation (an {{ArrayList}}, say), but evolve
> to a more specific implementation to achieve certain goals (a {{LinkedList}}
> or {{ImmutableList}}, say.)
> For whatever reason, the Impala FE code exposes {{ArrayList}}, {{HashMap}}
> and other implementation choices as variable types and in method signatures.
> This ticket tracks a gradual process of revising the declarations and
> signatures to use the interfaces {{List}} instead of the implementation
> {{ArrayList}}.
> Also, the FE code appears to predate Java 7, so that declarations of lists
> tend to be in one of two forms (with or without Guava):
> {code:java}
> foo1 = new ArrayList<Bar>();
> foo2 = Lists.newArrayList();
> {code}
> Since Java 7, the preferred form is:
> {code:java}
> foo = new ArrayList<>();
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]