2006年12月24日(日)

読者指向プログラミング

テーマ:コーディング
私は英語は苦手である。辞書があれば、英文を読むくらいなら何とかなるが、書く方はほとんどできない。日本語の場合も、読むよりも書くほうが難しいと思う。実際、こうしてブログを書いているが、なかなか上手く書けず、何度も書き直している。

しかし、プログラムのソースコードは、読むよりも書くほうが簡単な気がする。なぜだろう。


ソースコードを読むのが難しい理由のひとつは、プログラマによって書き方が大きく違うという点だろう。日本語の文章に例えれば、色々な方言が混ぜ合わされて書かれているようなものだろうか。

なるべく書き方が揃うようにと、「コーディング規約」のようなものを設けることも多いが、細かいところまでルール化するのは難しく、どうしてもプログラマの癖のようなものが出てしまう。

TMTOWTDI という言葉があるように、色々な書き方があるということは、必ずしも悪いことではない。しかし、コードの読みやすさという点に限って言えば、それを難しくしている要因のひとつだろう。


コードを読むのが難しいもうひとつの理由は、「表現下手なコード」が多いということだ。日本語でも、ブログなどを読んでいると、何を言いたいのか全く分からないような文章に出会うことがあると思う。ソースコードでは、それがもっと頻発する。

文章を書く場合は、その第一の目的が「伝える」ということなので、書き手は読みやすさということを意識するものだ。しかし、ソースコードを書く場合は、「伝える」ということ以前に「プログラムが正しく動作すること」に意識が行く。そのため、可読性はなおざりにされがちなのだろう(「誰のためのコード? 」も参照)。


同じ機能のプログラムを作る場合でも、ソースコードは色々な書き方ができる。そんな中で、より読みやすい「表現」を選ぶこと。私はそれを「読者指向プログラミング」と呼んでいる。読みにくいコードはバグを混入させやすく、変更もしにくい。同じ機能を作るなら、読みやすいコードを書くべきである。

読みやすい文章を書くためには、ある程度の技術が必要である。それと同じ様に、読みやすいコードを書くためにも技術が必要だろう。例えば、関数設計、クラス設計が上手くできなければ、読みやすいコードを書くことはできない。しかし、読者志向プログラミングでもっと大事なことは、「読者を意識する」ということである。そして、どう書けば読みやすくなるか、ということを考えることだ。


プログラミング初心者には、どんなコードが読みやすいか分からないかもしれない。最初は、とにかく他人のコードを読むという経験が必要だろう。自分で多くのコードを読めば、どんなコードが読みやすく、どんなコードが読みにくいか、よく分かるようになるだろう。

そもそも、プログラマにとって、コードを読むことは、コードを書くことと同じくらい重要である。他人の書いたコードをデバッグしたり、改造したり、流用したりする際には必須のスキルだ。入手可能なコードは積極的に読み、読みにくいコードも読みこなせるような力をつけることも必要だろう。





■関連記事
誰のためのコード?
まずは丁寧なプログラミングを
プログラムは二度書け
慣例的コーディングルール
TMTOWTDI ~ 人生色々、プログラミングも色々



ソースコードリーディングから学ぶ Javaの設計と実装
WINGSプロジェクト 佐藤 匡剛 山田 祥寛
技術評論社
売り上げランキング: 9274


Code Reading―オープンソースから学ぶソフトウェア開発技法
トップスタジオ まつもと ゆきひろ 平林 俊一 鵜飼 文敏
毎日コミュニケーションズ
売り上げランキング: 50755
おすすめ度の平均: 4.0
3 意外なほどに教科書的な内容
4 ホップ・ステップ・ジャンプ
3 例題がわかりにくい


AD
いいね!した人  |  コメント(4)  |  リブログ(0)

argvさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントをする]

4 ■RE: 無題

ともさん、こんにちは。
ありがとうございます。
頑張ります。

3 ■無題

ともと言います!!

いろいろ解かりやすいブログで、何度も訪問させてもらっています。

これからもいろいろ良い情報をお願いします。

あなたのブログのファンより・・

コメント投稿

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。