今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

OO

的確な命名はコストダウンにつながる

なんか結論をタイトルに書いただけですべて言い尽くしてしまった感があるんだけど、一応書く。 設計の質が向上する 設計時点でクラスの責務とかメソッドの処理内容などを検討するとか、レビューなんかでも議論されるんだろう。そのときに同時に、クラスやメ…

Webアプリケーション内のMVCアーキテクチャ

twitter とか(もちろん自分のTL)で MVC アーキテクチャのことが話題になってるみたいなので、ちょっとメモ程度のことを書いておく。 まず、ここで言及してるのは、MVC2アーキテクチャのことではないので念のため。Webアプリケーションは、一般的に三層アーキ…

ユーティリティクラスの憂鬱

ユーティリティクラスみたいなのを作って、そこにクラスメソッドを集めるのはよくあることだと思いつつ、悩ましいコードを眺める。 利便性のためにユーティリティクラスを作るという趣旨はわかるんだけど、クラスメソッドにすると安易にどこからでもアクセス…

ひとつのModelに対する複数のView

OO

ある Model があったとして、その Model に対する View を生成する。異なる種類の View を生成する場合、View によって生成するアルゴリズムが異なる。まあ、異なってるのは当たり前。 さて、それらの異なるアルゴリズムで生成した View を比較すると、不整…

どのデザインパターンが重要か?

OO

なんて、トピックスが mixi の Java コミュニティに立てられてる。どのって?みんな重要に決まってるやん。 ざっと目を通したけど、いろんな人がコメント書いてるけど、Template Method パターンのファンが多いのが気になる。とりあえず、そこにもコメントし…

カプセル化と情報隠蔽は違うヨ

しつこいかもしれんけど、カプセル化と情報隠蔽は違うってことを啓蒙するためにさらに書き足してみる。 昔、何かで読んだセキュアなクラスの書き方のひとつに final を使う方法が紹介されていた。インスタンス変数を final 宣言すれば、カプセル化してあるけ…

カプセル化の補足

OO

コメントとトラックバックがあったので、軽く補足。 かれこれ1?年ほど前、オブジェクト指向を勉強し始めた当時は昨日書いた説明のようにきっちり分けられてたことの方が多かったし、「カプセル化=情報隠蔽は間違いだよ」と見かけることが多かった。そのころ…

カプセル化・情報隠蔽・データ抽象化

OO

あちこちのサイトを見てると、間違った解釈をしてるのが多い。カプセル化なんて、情報隠蔽まで含んでるのが常識になりつつあるような。。。ここまで一般化してると情報隠蔽してるのがカプセル化というのが常識なのかも。 とりあえず、本来の意味を書いておく…

中心的クラスへの依存を避けよう

とあるプログラムの修正をやってる。このプログラムでは、メインになってるクラスのインスタンスを、staticメソッドで取得できるようになってる。メインのインスタンスだから、設定やログの役割を持ったインスタンスを持っていて、他のオブジェクトが設定や…

Joomla!をハックしてみる

記事の中には適当なキーワードを並べといて、そのキーワードを適切に処理するような Joomla! のプラグインを作れば、記事のテンプレートができることに気づいた。ってことで、プラグインをどう作ればいいのかを、ほかのプラグインを参考にしつつ書いてみた。…

ポリモーフィズム

専門学校でのJavaの授業の話題。前回の授業のことをここに書いてないけど、前回からポリモーフィズムについて教えてる途中。テキスト「基礎からのJava」では Shape インターフェースと、それを実装した Rect クラスと Circle クラスをサンプルにしてあるけど…

内部クラスと匿名クラス

改造を依頼されたプログラムのコードを眺めつつ思う。匿名クラスばかりを使ってて、明示的に名前をつけた内部クラスを作ってない。これって、可読性が悪いんだけどなー、と。 匿名クラスにするってことは、メソッドの中に新たにクラスを記述することになる。…

マルチスレッドと Singleton パターン

mixi の Javaコミュニティのトピックス「業務で使うマルチスレッド」で延々と続いている話題。 マルチスレッドって業務システムで使わなきゃならないケースってあるでしょうか。 前から疑問に思っていて知人にも聞いてみたのですが、ないという答えばかりで…

インタフェースと実装クラスの命名

Java のコアAPIの中でも、実装クラスの名前にインタフェース名+Impl とした命名をしているクラスがある。確かにダサい。そういった命名をされているクラスのドキュメントを見ると分かるんだけど、そういったクラスは、コアAPIの中でもかなり初期のころに作ら…

Code Kata

XP OO

先日紹介したCode Kataだけど、改めて読んでみたら、意外とたくさんの知識を前提としていることに気がついたり。 以前、誰かからプログラマ入門者向けの課題がないか尋ねられたとき、Code Kataはどうかと答えたような記憶があるけど、今考えてみるとレベルが…

Code Kata

XP OO

かなり前に紹介したページがなくなっていたので、どこかに残ってないかと探してみた。 今になって読み返しても、どれもおもしろそうな課題。

アジャイル分析設計をする前に、ユースケースをひとつだけに絞り込もう

OO

「アジャイル開発」に先行して「アジャイル分析設計」をというの記事で言っている「アジャイル分析設計」の要旨は、以下の部分にまとまっている。 ユーザーからの要望にもとづいて素早く『ユーザーが理解できるモデル』を描き広げ、それを用いて要望をより具…

同じ情報を複数箇所に持たせないように気をつける

プログラムの試験をしていたときのこと。ある部分の設定を変更して動作確認したところ、設定が反映されていない不具合があった。画面上で確認する限りでは、新しい値に変更されているのに、動作を見ると、設定値を変更する前の値で動作していることが分かる…

やっぱり継承は分かりにくい

OO

ずいぶん前に書いた、Template Method パターンを使用したクラスをメンテナンス。具体的にはキューを制御するためのクラスなんだけど、Java5 には便利なキュー制御のクラスがいくつも追加されている。ちょっとうらめしい。 実際に欲しかったのは DelayQueue …

Java において static 修飾するときの注意

Java において、static 修飾を単独で使うときには注意が必要。static 修飾は、必要最低限度の範囲内で使うのが好ましい。 クラス変数があったとしたら、それは定数である可能性が高い。初期化後に更新することがなければ、static final にして定数として定義…

IOP(Inside-Out Priciple)

OO

平鍋さんが書いた内容と二人のコメントがいまいち噛み合ってないような気がする。 一般的にシステムなんてのは、何もしなければ何も変わらない。まずはそういった static な面がある。そして、システム外からのアクションに対して、システムが動作する。シス…

JUDE/Community で成果物MindMapの自動生成機能を提供しました(^_^)

OO

さっそくダウンロードしてみた。でも、ダウンロードが集中しているのか、ものすごく時間がかかった。 ダウンロードしたのをさくっとインストールして起動。今までは 2.4.3 だったので、チェンジビジョンに変わった後では初めてのインストール。リリースノー…

命名ルールの変更

某システムの拡張が発生した。もともとはひとつのビルにある複数の事務所が監視の範囲だったので、それを前提に各オブジェクトの命名ルールを作っていた。しかし、今回の拡張で他のビルにある事務所も監視することになった。命名ルールが破綻した。 システム…

更新する

情報を更新するオブジェクトのクラス名を決めようとして updater なのか updator なのか迷った。 Google先生に聞いてみたら、updater が 2,810,000件で updator が25,400件だったので、updater の圧倒的勝利だということがわかった。

グローバル変数の罪

某に VC++ でアプリケーションを作らせた。作らせたアプリケーションは、以前、Java で作ったものとよく似たもの。当然、設計の大半も流用できる。 今日、そのアプリケーションのコードレビューをした。 設計が変わっていた。OO的には、本来あってはならない…

あり得ないデータを持つインスタンスの生成を禁止すべきではない

OO

一般的には、あり得ないデータだからという理由でインスタンスの生成を禁止するのは好ましくない。たとえば、何らかの理由で「あり得ない」範囲に変化があったとする。その変化によって、従来は生成できなかったインスタンスを生成しなければならなくなった…

文書をオブジェクト指向で作成する

昨日書いたプレゼンテーション資料の作成手順を参考にしつつ、文書というターゲットに対して、オブジェクト指向のアプローチを適用してみる。 文書の目的を明確にするのは同じ。目的が明確になれば、目次をざっと書いてみる。文書の構成を目次として書き出す…

オブジェクト指向クイズの答え

OO

正解は Boundary。id:m_pixy さん正解。 設定ファイルは、Entity の一部を抜き出してファイル化したものにすぎない。設定ファイルは、Entity に対するひとつの Boundary 表現といえる。Boundary は、もとの Entity を表現する方法を自由に選択できる。例えば…

オブジェクト指向クイズ

OO

修行中の某氏が設定ファイルを読み込む部分のコードを書いていた。その某氏に質問してみた。 設定ファイルは BCE (MVC) のどれか? 間違った答えが返ってきた。 みんな、間違ってないよね?

初歩のUMLモデリング

ついでに紹介しとくけど、これは萩本さんの比較的最近の著作。2004年2月発売。同時期に児玉さんのUMLモデリングの本質が出版されてたので、タイミングが悪くあまり話題にならなかったけど、これも良書。