タグ

ブックマーク / blog.fuktommy.com (5)

  • コーディング規約とメタ仕様(仮用語)

    コーディング規約とメタ仕様(仮用語) 堅牢なコーディングルールを策定する方法(2) - 都元ダイスケ IT-PRESSの まぁつまり「Javadocに書かれていない挙動をしたらバグ」です ってのはどんな頓知だよ、というか、 僕の興味のあるところとは微妙にレイヤが違うなあと思った。 なので以降は興味のあるレイヤについて書きます。 関数がどういう挙動をするべきかというのを仕様だとすると、 その上に「どういう仕様を定めるべきか」という問題があって、 それを仮にメタ仕様と呼んでみます。 実際には「意図」って言ってることが多い気がする。 関数の引数にヘンなものを渡したらどうするべきなのか。 nullを返す? falseを返す? 例外を発生させる? 例外は組み込み例外を使う? ユーザー定義の例外を使う? なんとなくPHPを想定。 コメントに書いてあるのが正しいというのはその通りだけど、 さて、どの方針

  • 私の頭の中のソースコード

    私の頭の中のソースコード 今いちばん興味があるのは頭の中にある設計図を できる限りそのままプログラムに書き出すことなんだよね。 多くの場合はプログラミング言語の書き方に引きずられて、 設計図がそのままプログラムにならない。 コンパイラでソースをアセンブリ言語に変換することができたりするので、 それを比喩に使うと、 真のソースは頭の中にしかなくて、 プログラム書いたよと言ってる「それ」は コンパイル済みのアセンブリコードであり、 読もうとすれば読めないこともないけど、 ソースじゃないよね、という感じです。 つってもこれって個人的な技能の域を出ない話なんだよなあ。 設計の技能、つまり頭の中にある設計図をよりよいものにする技能の方が、 よりプロダクトに貢献するだろうし。 いやもちろん、設計図がそのままソースコードになっていれば理解しやすいから、 メンテナンスコストが下がるとか、 重複コードを書か

  • プログラムの出来がわかるのは半年後

    プログラムの出来がわかるのは半年後 「渋日記: きれいなソースコードを書けるようになるためには」を読んで連想したこと。 プログラムって書いたときには「わかりやすくて、きれいなソースコード書いたぞー」 って思ってるはずなんですね。 最初から出来が悪いと思ってるコードを番環境にマージしたりはしないはず。 ところがですよ。 半年くらい経つと、新機能を追加しなければならなくなったりして、 このコードに手を入れることになるんですが、 このときに、はたして「わかりやすくて、きれいなソースコード」かというと、 そんなことなかったりするんですね。 そもそも何をやってる関数なんだ、これ? どこに手を入れればいいんだろう? 直すべき箇所はわかったけど、 ここを直すと関数名と処理が不整合になっちゃうよな。 直したはいいけど、既存の機能に悪影響を与えていないかな? 短かった関数がどんどん長くなるよー 最初にプロ

  • ユニットテストを書こう

    ユニットテストを書こう 自動テストなので一度書いておけば「めんどくさいからテスト省略」→省略したところに不具合あった、のコンボを阻止できる。 関数を大きくしすぎるとテストしにくくなるので、 適度なサイズに保つ働きがある。 クラスを大きくしすぎるとモックが使いにくくなるので、 適度なサイズに保つ働きがある。 新機能追加のときにエンバグする可能性が減る。 新機能追加のときに、最初にテストの方に手を入れれば、 コードのどこを直せばいいかすぐわかる。 デバッグのとき、バグが再現するようなテストを書いておけば、 直ったと自信を持って言える。 テストしやすくしようとすると、自然に疎結合になる (cf. 疎結合: ソフトウェアの依存関係を緩和してアプリケーションの柔軟性を高める)。 クラスや関数について、 通常の使い方とテストでの使い方の2種類を最初から用意するわけなので、 以降の拡張で3種類、4種類と

  • ToDo管理と記録のしかた

    ToDo管理と記録のしかた たまにはライフハックな記事も書く。 ToDo管理とか、今日何やったかとか、今日やったことについてのメモとか、 今日やるべきことについてのメモとか、どうやって管理するかということについて。 就職したときに考案して、 その後特に変更もなく1年ちょっと使っているわけなのだけど、 こんな感じです。 log2008-06-01.txt のようなファイルを作る。 一番上に出勤時刻・昼休み開始・終了・退勤時刻を書く。 やったことは「●何々のコード書く」のように書く。 補足があれば「(tab)・何々だけ書いた」のように書く。 やることは「ToDo:」のコーナーを作って 「・何々のコード書く」のように書く。 メモは「●何々」のコーナーを作って「・何々に注意」のように書く。 毎朝、昨日の分を今日の名前にしてコピーする。log2008-06-02.txt 昨日やったこと、昨日のための

  • 1