「あなたの人生の物語」と「優しい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%この対応が正解かというとそうではなく、例外ケースもあるかと思いますが、基本的にはこの対応を行うことで、処理の共通化や、定数化などが自然と進むと思います。そして何より「簡単」なのです。重複した処理があればそれを半機械的に潰していけばよいのです。初心者の方にもお勧めの一手だと思います。
「重複処理の排除」が初心者にも行いやすい手という結論に達しましたが、それ以外の項目も重要ですので、時間をかけて習得していくとよいと思います。あなたのプログラムはどんどん育っていくことでしょう。
あなたのプログラムに幸あれ
久しぶりに読み返してみたら3番でもうひとつ重要なことがあったので強引に以下を追記。
3-3. 入れ物に対してコード量が多すぎないこと
ひとつのファイルや関数にたくさんのコードを入れると可読性が落ちメンテナンス性が落ちます。何よりプログラマのテンションが落ちます。さらにUnit Testも難しくなります。私も2000行の関数などを見ると家に帰りたくなってきます。巨大な処理をひとつ作るより、小さな処理をたくさん作って組み合わせたほうが幸せになれるのです。しかも処理が分割されていると、自然と重複したコードが減り3-2も満たしやすくなります。3-2と共に半機械的にリファクタリングできるのでこちらもお勧めの一手です。
DELLが掲げる「新・仮想化アセスメントサービス」
APC SOLUTIONS FORUM 2008をレポート
Techno Exchange
仮想化環境で求められるストレージの要件
「シンプル」&「低コスト」な運用管理
ZDNet Japan Green IT
セキュリティ対策レベルテスト公開!
Webセキュリティ特集
ZDNet Japan ホスティング特集
フォトレポート:飛行機の祭典--米国最大、オシュコッシュ航空ショー
L・トーバルズ氏:「主要Linuxプログラマーになるのは楽じゃない」
ブログの未来はどうなる--新しいコミュニケーション手段「ライフストリーミング」