Personally, I'd prefer to see the English conventions carried over to
the use of general use of hyphen and underscore in identifiers in
the core (and everywhere else).

By that, I mean that, in English, the hyphen is notionally a
"higher precedence" word-separator than the space
(or than its intra-identifier stand-in: the underscore).

For example: there's an important difference between:

    initiate_main-sequence_detonator_phase()

and:

    initiate_main_sequence-detonator_phase()

The former initiates the detonator phase for the main sequence;
the latter initiates the main phase of the sequence detonator.

More simply, there's a difference between:

     $obj1.set_difference($obj2);

and:

     $obj1.set-difference($obj2);

The first is setting a difference; the second is computing a difference-of-sets.

The rule I intend to use and recommend when employing this new
identifier character in multiword names is that you should place an
underscore between "ordinary unrelated" words, and a hyphen only
between a word and some modifier that applies specifically to that word.

Which, if applied to Temporal, would lead to:

    my $now = DateTime.from_epoch(time);

    The C<day> method also has the synonym C<day-of-month>.

    (These are also available through the methods C<week-year> and
    C<week-number>, respectively.)

    There's a C<day-of-week> method,

    The C<weekday-of-month> method returns a number 1..5

    The C<day-of-quarter> method returns the day of the quarter.

    The C<day-of-year> method returns the day of the year,

    The method C<whole-second> returns the second truncated to an integer.

    The C<time-zone> method returns the C<DateTime::TimeZone> object

(i.e. only C<.from_epoch()> actually uses underscore).

Oh, and the optional C<:timezone> argument to C<.new()> should probably
become C<:time-zone> for consistency with the C<.time-zone()> method
(or, preferably, we should jut bite the bullet and go with C<timezone>
throughout).

Damian

Reply via email to