1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

One-word Naming: まず1語で命名してみる

Posted at

概要

  • 命名は最初1語のみで行うと保守性が向上する。

という持論、「One-word Naming」の紹介です。

嬉しいこと

  • 短くて意味の伝わりやすい名前をつけられる。
  • プログラムの分割する機会を逃しにくくなる。

内容

下記の3ステップで説明します。

  1. 1語のみで命名する
  2. 確認する
  3. 調整する

1. 1語のみで命名する

「1語」の定義は、英語においてスペースで分割され得る要素だとします。1

1語で、しかし内容が伝わる様に最善を尽くして命名します。

すると

  • 修飾語でない語
  • 具体的な語

を選ぶことになります。

例えば

  • user_name

は2語ですから、1語減らします。

  • user

はnameを修飾する語ですから

  • name

がより適切だと考えます。

「ユーザの名前」であり、「名前」ではありますが、「ユーザ」ではないのです。

他にも

  • fibonacci, sequence, number, term
  • article, body, text, html
  • output, response, json, stream

それぞれどんな場面なら選択されそうな1語でしょうか?

常に適切な一語を探すことで、対象の本質を理解することに繋がると思います。

2. 確認する

1語で十分に意味が通じるか?と考えます。

Yesなら1語で命名は完了とします。

Noの場合は言葉を増やす必要があります。

3. 調整する

前項で、1語では不十分だった場合。

周辺を分割して、命名する対象を増やせないか検討します。
(すぐ名前を長くしたくなりますが、こらえます。)

ユーザ名の例を再び取り上げます。
nameでは読み手にとって不十分だとしましょう。

例えば、User型と、その属性2としてnameを定義することもできるはずです。

C
typedef struct { char name[30]; } user;
Ruby
class User
  attr_reader :name

  def initialize(name)
    @name = name
  end
end
Haskell
data User = User { name :: String}

分割することで、一度に考えるべきことを減らせます。
名前も短い方が理解するのは楽です。

もちろん、分割することが常に望ましい結果をもたらすとは限りません。
一般に、保守のしやすさだけがプログラムに求められる性質では無いからです。

しかし、分割は面倒で、それゆえ適切なタイミングを逃しやすいです。
コード量が増えていくほど、更に面倒になります。

ですので、命名の度に分割の可能性を検討できることは
One-word Namingの良さだと考えています。

  1. 学術的な定義はより厳密だろうと思いますが、本記事では扱えません。。

  2. ここでいう属性は抽象的な意味です。インスタンス変数、メソッド、フィールド、スロット等に置き換えて理解ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?