   element and encapsulate the generation and manipulation of
   such tuples. Many functionality provided by this module happens
   at compilation time, meaning they don't add any overhead while
-  considerably improving the quality of our software.
+  considerably improving the quality of our code.
 
   For those reasons, Records are frequently used in Elixir and
   they are also very useful when used with Protocols. This module

  example, is only available inside the `User` module and nowhere else.
  You can find more information in `Kernel.defrecordp/2` docs.

  Elixir also provides first-class support for exportable Records,
  which will we learn next.

  ## defrecord



      defrecord User, name: "José", age: 25

  Notice that, different to `defrecordp`, `defrecord` expects an
  alias as first argument. This is because `defrecord` is going
  to create a module named `User` with all the relevant metadata.
  This module can then be imported and we can manipulate the user
  as with `defrecordp`:

      Record.import User, as: :user
      user()        #=> User[name: "José", age: 25]
      user(age: 26) #=> User[name: "José", age: 26]

  Notice that now, since the record definition is accessible, Elixir
  shows the record nicely formatted, no longer as a simple tuple.

  Since working with external records is frequent, Elixir allows
  developers to skip importing the record altogether in favor
  of a `Module[args]` syntax:

      # Skipping a field uses its default value
