martinfowler.com流し読み - FunctionLength

はじめに

最近、https://martinfowler.com/tags から過去の全ての投稿を閲覧できることを発見したので、新しいものから順に遡って読むことにした。
いつまで続くかはわからない。

本日のエントリ

日本語訳はこちら。

概要

  • あるコードを関数として切り出す際には、その長さや再利用性(二度以上利用するなら関数として切り出す)ではなく、意図と実装を分離するという観点で考えるとよい。
  • 何をしているのかを理解するのが難しいコードがあった場合に、これを関数として切り出し、その"何"にちなんだ名前をつけるべきである。こうすることで、この関数をもう一度読んだ時に、その目的がすぐ理解でき、(多くの場合)関数の中身を気にかける必要がなくなる。
  • 関数の名前付けは練習が必要だが、上手くできるようになればコードを自己文書化することができる。

感想

僕はよく適切な責務・粒度で切り分けられたコードのことを「個々の関数・メソッドが何をやっているか詳しくはわからないけど、全体として何をやっているかはわかる」と表現していたのだけど、このエントリの最後に

Larger scale functions can read like a story, and the reader can choose which functions to dive into for more detail as she needs it.

とまさに同じようなことが書かれていたのでちょっと自信がついた。
「物語のように読める」、とてもいい表現だと思ったので積極的に使っていきたい。