Readable Code: Stacking Tokens

Burdette Lamar - May 18 '19 - - Dev Community

If a collection of tokens serves as a list, consider making it look like a list.

As an example I'll use Ruby's class method attr_accessor, which accepts any number of arguments.

Unstacked:

  attr_accessor :arity, :name, :original_name, :owner, :parameters, :receiver, :source_location, :super_method

Stacked:

  attr_accessor \
    :arity,
    :name,
    :original_name,
    :owner,
    :parameters,
    :receiver,
    :source_location,
    :super_method

Much more readable, no?

Note: For a user-defined method that accept many arguments, stacking may not be the best option. Consider instead whether such a method should accept an object.

Nevertheless:

  def initialize(
    name:,
    address:,
    phone:,
    date_of_birth:,
    debit_card_number:,
    debit_card_pin:,
  )
  end

Another stack-worthy notation:

  %w/
    apple
    banana
    orange
    peach
    persimmon
    pineapple
    scuppernong
    tomato
  /

And of course pretty much everyone already does this:

  {
      :cabbages => 0,
      :cucumbers => 2,
      :peas => 200,
      :potatoes => 4,
      :radishes => 8,
      :sweet_potatoes => 0,
  }

Others? In Ruby? Or in another language?

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .