記事一覧

良いプログラムは過去との自分と対話ができるもの - (2)

 
目次  
 


 

対話可能なプログラムにするために想いを盛む

ハロー、みなさん。エジソンです。

前回ポストした記事を掘り下げてみようと思いキーボードに手を置いています。

Related Posts

良いプログラムは過去との自分と対話ができるもの



人が書いた(自分が書いて三日経過したものも含む)プログラムコードを読み解く事は、そこに込められた想いを読み解く作業でもあるのではないでしょうか。

プログラムというものは千差万別で、人の数だけ異なるソースコードが出来上がると言っても過言ではありません。

プログラムには、どんなに隠しても、書き手の癖が表出するものであり、またそこに込められた想いが渦巻いてしまうものです。

コードリーディング力は、そのような癖を読み解く能力であるとも言えます。また一方でコードライティング力が高いということは、繰り返しになりますが、想いが込められたプログラムを書ける(一貫性があり、思想が見え、統一感があるという事)ということではないでしょうか。

プログラムに想いを込めるということは、このプログラムは何をするものなのか、何をしたいのか、通常時の処理はどう書くのは、エラーが起きうる可能性はあるのか、あれば例外処理を書く必要があるのか。何かを書くということは、書いたものに対して、書き手が全てを説明できるはずなのです。その説明を一つずつ丁寧に表現ができるということが、読み手に想いを伝えることになるのでしょう。

処理を端的に表すキーワードを関数(メソッド)に盛り込もう

良いプログラムというものはネーミングにこだわるということを、前回書きました。プログラムの処理の大半は関数(メソッド)に存在します。関数(メソッド)に良い名前をつけるということは、即ち良いプログラミングができるということになるのではないでしょうか。

※もちろん、その上位に位置するクラスの名前も大事!

プログラムの処理を最小単位で大別すると以下のようになるのではないかと思います。
(本当かな…、もっとあるかも…!?)

  • 状態を設定するもの
  • 状態を取得するもの
  • 受け取った情報(引数)から変換を行うもの
  • 外部リソース(ファイルやDBなど)を読み取るもの
  • 外部リソース(ファイルやDBなど)を書き込むもの

上述した処理に名前をつけるとしたらどうなるでしょう。名前というのは万人に分かりやすいものでなければなりません。振り仮名を付けないと読めないようなキラキラとしたものではダメな訳です。

最近では、プログラムの命名をアドバイスしてくれるWebサービスなどもあり、そちらを活用するのも良いかと思います。

プログラミングで変数名や関数名のネーミングに迷ったときに便利なカンニングペーパーまとめ

システム内で共通的に使われる言葉は統一しよう

日本語圏で生きている我々は、ことプログラミングという分野では不利な立場にあると言っても良いでしょう。それは何故かと言いますと?

プログラミング言語は基本、英語で構成されています。そのため、日本人の頭の中では、日本語と英語で一々変換が起こっているのです。この変換コストは馬鹿にできません。

システムを構築する際には、システムを構成する要素を日本語として抽出し、設計書を書き上げ、プログラムに起こす際には英単語で名付け直してコーディングするという流れが、ほとんどのように思います。

しかしながら、英語の習熟度が不足しがちな私たちは、日本語を英語に正しく適切に変換する事が苦手です。そもそもプログラミング言語が英語で構成されていることや、APIが英語ベースで提供されていることも、不利な要因です。

例えば、システムの要素に”会員”がある場合に、会員をMemberとする人や、会員をAccountとする人、会員をUserとする人が同時に存在してはいけないのです。

例えば、会員をUserとした場合に、もしあなたがその英単語のチョイスに疑問を感じていたとしても、後に続く人たちはUserという英単語を愚直に使うべきです。

そうしなければ、システム内での名前がバラバラになり、後で知らない人がプログラムを見直したときに全く別の単語が出てくるということになり混乱させてしまうことになります。混乱が生じるということは、バグの発生要因にも繋がり、とても不健康な状態です。

もし、英単語のチョイスに疑問を感じ、それを看過できないのならば、チーム全体に対して異議を唱え修正を試みなければなりません。何より大事なのは、統一感です。

名前を付けることはクラス・モジュールを適切に分割すること

的確な名前をつけるということは、クラスやモジュールを適切に設計できるということなのです。的確な名前を付けるためには、処理の実現方法や細部を知らなければいけないし、ボキャブラリーも必要です。

何かに名前をつけるということは、高度で知的な作業に他なりません。ネーミングセンスに日々磨きをかけて、設計、プログラミングに邁進して行きましょう。
関連記事

このエントリーをはてなブックマークに追加

コメント

コメントの投稿

非公開コメント

プロフィール

EZOLABブログへようこそ。
EZOLABは、札幌のソフトウェア会社です。

http://ezolab.co.jp