Murga

個人的に言いたいコト・主張・気持ち。

同じものを表現するなら同じ単語を使う

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • メディア: 単行本(ソフトカバー)
  • 購入: 68人 クリック: 1,802回
  • この商品を含むブログ (137件) を見る

設定情報を持つ1つのオブジェクトなのに、config だったり setting だったりと、場所によって変数名が異なる。

DB 操作を行う Entity クラスのメソッド名が、モノによって saveUser() だったり updateAddress() だったり modifyBook() だったりする。中でやっていることは同じフレームワークを使って UPDATE 処理を行うので何も変わらないのに、メソッド名だけが微妙に異なる。

同じモノなのに、わざわざ違う文言を使う意味は全くない。config ならずっと config と呼べばいい。無神経に setting とか違う単語を使うメリットがまるでない。わざと読み手に分かりにくくさせようとしているとしか思えない。


どの単語に統一するか、については、使用するフレームワークが使っている文言に寄せるのが楽。あるライブラリの挙動を変えるオプションが config プロパティなら、プロパティの内容を持つオブジェクトの変数名は hogeConfig にするべきだし、API リファレンスで options と表記されているなら hogeOptions とするのが楽。

ある機能において createUser() とコーディングしたなら、別の箇所で insertBook() とはせず createBook() とすべき。よく似たもの、同じ処理は、同じ単語で表現することで規則性を表現するのだ。


こういうものを毎度毎度違う単語で書けてしまう人って、「configsetting ってどういうニュアンスの違いがあるんだろう?」とか一切考えないんだろうな。直訳して「設定」っぽかったら全部同じものに見えるんだと思う。英語で考えていない、語彙力が少ない、単語や物事を概念化して捉えていないからこそ、全く違う単語を曖昧に同じものと捉えられるんだと思う。

だがこういう無神経な考え方で書かれると、通常の人間にとっては極めて複雑怪奇・奇妙奇天烈な文章・コードに見えるのだ。理由なく不可解なコードを埋め込みやがって、読み手が理解に苦しむ無駄な時間を費やせやがって、腹が立ってしょうがない。