あなたのプログラムの育て方

こまつ みつのり(Mitsunori Komatsu) 2007-09-10 23:55:10

あなたの人生の物語」と「優しいRailsの育て方」がごっちゃになったようなタイトルですが、まぁ気にせず…

さて、世の中には「プログラムを書く人」と「書かない人」の二種類が存在しますが、今回は前者向けです。そして、いつも通り難しい話は抜きで進めます。

プログラミングを覚え始めた頃。期待通りの動作をするプログラムが完成して、「オレってばスゲー」とドーパミンが溢れる(イメージです)のもつかの間、「この後どうすればいいの?何をすべきなの?」と途方にくれた経験はないでしょうか?私はあります。

Web上の情報を漁ってみたり、ものの本などを読み漁っていくと、良いプログラムにするためには色々と難しいことを覚えていかないといけないみたいです。さらにGoFデザインパターンなんて23個もあって、覚える以前に数えられません。

と、まあ、良いプログラムに育てるために抑えておくポイントはたくさんありますが、着手しやすいところから取り掛かるのが第一歩でしょう。着手しやすく効果が大きい手法は何でしょうかねぇ?

まず、良いプログラミングとは何だろう?と考えてみると…

1. バグが少ない(0が理想)

2. 十分な性能(実用に耐えうるレベル)

3. メンテナンスしやすい

などがあると思います。一昔前であれば実行モジュールの大きさなども要素の一つかもしれませんが、今回は省きます。

さて、1番を実現するためには、

1-1. 使用言語についての理解(想定外の動作をするようなコードを書かない)

1-2. 十分なテスト

があります。1-1についてはしっかり勉強するしかなさそうです。1-2についてもテスト技術を身につけ漏れの無いテストを効率よく行えるようになって下さい(テスト技術の書籍も出ていますし)。ということで1番は簡単にはいかないようです。

2番はどうでしょう?

2-1. 使用言語についての理解(処理時間がかかる/使用メモリが異常に大きくなるコードを書かない)

くらいでしょうか?どちらかというと性能は設計にかかってくることが多い(どこでキャッシュしておくか?/並列処理での排他ポイントは?など)と思います。2-1も1-1同様、勉強が必要そうで、一朝一夕にはいかないですね。

さて3番ですが、

3-1. 疎結合であること

3-2. 重複した処理が無いこと(DRY原理)

があると思います。3-1については個人的には経験をつんでいかないとなかなか身につかない気がします。体で覚えるまで時間がかかるというか。そして3-2は「お勧め」です。ちなみにDRY原理とはDon't Repeat Yourselfの略で「重複は避ける(悪)」という考え方です。 まあ、100%この対応が正解かというとそうではなく、例外ケースもあるかと思いますが、基本的にはこの対応を行うことで、処理の共通化や、定数化などが自然と進むと思います。そして何より「簡単」なのです。重複した処理があればそれを半機械的に潰していけばよいのです。初心者の方にもお勧めの一手だと思います。

「重複処理の排除」が初心者にも行いやすい手という結論に達しましたが、それ以外の項目も重要ですので、時間をかけて習得していくとよいと思います。あなたのプログラムはどんどん育っていくことでしょう。

あなたのプログラムに幸あれ

追 記

元タイトルは「Webコンテンツへのアクセス」となっていましたが、変更しました。

久しぶりに読み返してみたら3番でもうひとつ重要なことがあったので強引に以下を追記。

3-3. 入れ物に対してコード量が多すぎないこと

ひとつのファイルや関数にたくさんのコードを入れると可読性が落ちメンテナンス性が落ちます。何よりプログラマのテンションが落ちます。さらにUnit Testも難しくなります。私も2000行の関数などを見ると家に帰りたくなってきます。巨大な処理をひとつ作るより、小さな処理をたくさん作って組み合わせたほうが幸せになれるのです。しかも処理が分割されていると、自然と重複したコードが減り3-2も満たしやすくなります。3-2と共に半機械的にリファクタリングできるのでこちらもお勧めの一手です。

※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。

SpecialPR

  • デジタル変革か?ゲームセットか?

    デジタルを駆使する破壊的なプレーヤーの出現、既存のビジネスモデルで競争力を持つ
    プレイヤーはデジタル活用による変革が迫られている。これを読めばデジタル変革の全体像がわかる!

  • 【3/31まで早期割引受付中!】「IBM Watson Summit 2017」開催

    日本IBMが主催する最大の国内総合イベント。テクノロジー・リーダーの疑問を紐解く「企業IT、セキュリティー、モバイル、データ解析などの進化を探る」詳細はこちらから!