コラム

【技術情報配信】命名について

お疲れ様です。マサダです。
システムエキスパートからの技術情報配信です。

先日専門書をしまい込んでいる棚を整理していたところ、
学生の頃に使っていたと思われる3.5インチFDを発掘しました。
少々苦労して読み出したところ、アセンブラとCのコードが保存されてました。
就職決まって入社までに勉強しておこうと組んでいたものです。
(30年以上前のものですが、必死に勉強していたので覚えていた)
Cコードの中に画像をサラサラとドット単位で消していく関数があったのですが、
その関数の名は「sara()」でした。
震えました。(戻り値、引数は省略)

そんなわけで今回は命名についてのお話です。
(以前の「可読性、保守性」に被ります)

開発において命名はとても重要なファクターです。
可読性と保守性に大きな影響を与えます。
自身も設計、コーディングに際して命名に結構な時間を割いていて、
命名出来たらほぼ完成くらいの気持ちで取り組んでます。

以下簡単ですがいくつか説明します。

 可読性:
  適切な命名はコードの可読性を大幅に向上させます。
  変数や関数の名前がその目的や機能を明確に表している場合、
  他の開発者(もしくは未来の自分)がコードを読む際、
  その部分が何をするのかをすぐに理解することができます。
  適切な名称はそれだけで設計書となります。
   →とあるモジュールが「is~()」という関数を公開していたとします。
    その関数内で状態の更新やら行われていたら使うの怖いですよね。

 保守性:
  適切な命名でコードの保守性が向上します。
  コード修正が必要となった場合、その部分が何をするのかを名前で示せていることで
  どこをどのように修正すべきかがわかります。
  バグの発見と修正を容易にします。

 バグの防止:
  関数名、変数名がその役割を反映していない場合、
  使用方法の誤解からバグに繋がる可能性大です。
   →これは実際よくあります。

では処理内容を示す関数名にするとして
 input_and_normalization_and_update_and_request()
という関数名になってしまう場合、
それは「詰め込みすぎなので関数分けた方がいい」となります。
命名は良い設計に繋がるかと思います。

また、モジュールに対する機能追加において、
「既存関数に処理を追加することで低コストで実現可能」というケースが多々あるかと思います。
追加する処理が対象関数の役割を超えてしまう場合、
命名を意識していれば追加ではなく関数を分けることを考えます。
それにより変更量が増えてしまうかもしれませんが、
長期的に見ればメリットの方が大きいです。
(プロジェクトの状況にもよります)

かなりざっくりですが「命名」の重要性についてのお話でした。