calcite icon indicating copy to clipboard operation
calcite copied to clipboard

[CALCITE-4191] Improve the logic of creating aggregate calls

Open liyafan82 opened this issue 5 years ago • 0 comments

According to the current code base, the only way to create AggregateCall objects is by calling one of the two AggregateCall#create methods (other create methods are deprecated).

The two create methods have 9 and 11 parameters, respectively, 3 of which are booleans and 2 are ints. We find this makes the code less readable and error-prone, as some bugs are caused by specifying the wrong parameters.

In this issue, we improve the related logic by the builder pattern, which results in the following benefits:

  1. By creating the objects by the builder pattern, there is no need to maintain multiple overrides of the create methods.
  2. There is no need to maintain multiple overrides of the copy methods, either.
  3. The code becomes more readable and less error-prone, as it is less like to specify the wrong parameter.
  4. Creating AggregateCall objects becomes easier, as the user does not have specify the default parameters repeatedly.

Options

liyafan82 avatar Aug 25 '20 02:08 liyafan82