良いコードを書く技術

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)


今日から読んでいます。

良いコードの定義

  • 保守性が高い
  • すばやく効率的に動作する
  • 正確に動作する
  • 無駄な部分がない

コード検索サービス

(良いも悪いも)他人が書いたコードを読もう。

言語別の良書の例

Java

プログラミング言語Java (The Java Series)

プログラミング言語Java (The Java Series)

  • 作者: ケン・アーノルド,ジェームズゴスリン,デビッドホームズ,柴田芳樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2007/04
  • メディア: 単行本
  • 購入: 38人 クリック: 1,044回
  • この商品を含むブログ (69件) を見る

JavaScript

JavaScript 第5版

JavaScript 第5版

Perl

プログラミングPerl〈VOLUME1〉

プログラミングPerl〈VOLUME1〉


プログラミングPerl〈VOLUME2〉

プログラミングPerl〈VOLUME2〉

C

プログラミング言語C 第2版 ANSI規格準拠

プログラミング言語C 第2版 ANSI規格準拠

Ruby

プログラミング言語 Ruby

プログラミング言語 Ruby

PHPはどれかな・・・?ないのかな・・・

名前付け

大学の研究室の教授も「名前は重要」って言ってたな。その通りだな。

名前の省略の例
  • 先頭の文字を残す。複数形の場合は最後のsは残すことが多い。
  • ingの削除。
    • これは初めて知った
  • 単語の削除。
  • 語頭以外の母音を削除する。
    • image→img
    • imgはこのパターンだったのか。へー。
  • 強い音を残す。
    • server→svr
    • これも初めて
  • 一般的な略語の利用
    • database→db

スコープ

  • 変数は使用する直前で宣言する
  • メソッドに抽出する
  • イテレータの一時変数のスコープをループ内に閉じ込める
  • 代入されない変数にはfinalをつける
JavaScript1.6にはブロックスコープがない

関数内で宣言されたローカル変数のスコープは、すべて関数の先頭で宣言されたものと同じ意味になる。

  • 見かけ上のスコープ(でもこっちのほうがいい)
function calc() {
  var total = 0;
  for (var i = 1; i < 10; i++) {
    var n = i * i;
    total += n;
  }
  alert(total);
}
  • 本当のスコープ
function calc() {
  var total, i, n;
  total = 0;
  for (i = 1; i < 10; i++) {
    n = i * i;
    total += n;
  }
  alert(total);
}

メソッド

引数
  • 情報量は少ないほうがいい
  • ただし引数の数が多くなりすぎる場合は、引数の型をオブジェクトにしたほうがいい(目安として5個以上)

こころがけ

抽象化

  • ペアで管理する変数がでてきたら、1つのオブジェクトにまとめられる。かも。

コードリーディング

  • 静的
  • 動的
    • 動かしながら

参考文献(抜粋)

ソースコードリーディングから学ぶ Javaの設計と実装

ソースコードリーディングから学ぶ Javaの設計と実装


リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

  • 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 94人 クリック: 3,091回
  • この商品を含むブログ (299件) を見る

Code Craft ~エクセレントなコードを書くための実践的技法~

Code Craft ~エクセレントなコードを書くための実践的技法~


エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)