ようこそ。睡眠不足なプログラマのチラ裏です。

オブジェクト指向

オブジェクト指向は、シンプルできれいだが脆い。関数型プログラミングは、強く美しいが複雑。F#はいろいろな書き方が混ぜこぜになるよ。楽しいよ。

オブジェクト指向プログラミングが好きだ。関数型プログラミングが好きだ。 オブジェクト指向プログラミングオブジェクト指向プログラミングは、コンテナの一般性を確保している点で優れている。 データと振る舞いをコンテナとしてまとめることで、プログラ…

第54回CLR/H勉強会発表資料を公開します。

第54回CLR/H勉強会(2011/01/15)にて、3つのセッションと、LTを行いました。 そのときの発表資料をSkyDriveにて公開します(5.3MB)。 01オブジェクト指向と契約による設計 ・オブジェクト指向と契約による設計.pptx 02Code Contracts入門 ・Code Contract入門…

実はオブジェクト指向ってしっくりきすぎるんです! 不変オブジェクトのすゝめ。

バグのないソフトウェアを作りたいお仕事では主にVB.NETとC#を。趣味のプログラミングでは関数型言語F#を利用しています。 私自身のF#スキル(関数型的な考え方)は、まだまだ実践レベルとはとても言えないシロモノだけど、 面白い発見と多くの可能性を感じら…

とある契約の備忘目録。契約による設計(Design by Contract)で信頼性の高いソフトウェアを構築しよう。

「より堅牢で正確性の高いソフトウェアを作りたいぜ!」と願う.NETデベロッパーお待ちかねの、 契約による設計(DbC)をサポートするCode Contractsが.NET Framework4より利用できるようになります。 C#をベースとして契約による設計をサポートする「Spec#」を…

ExpandableObjectConverterっていちいち実直に実装するのは面倒だよね。Reflectionを活用してネストしたプロパティを楽に量産してみよう。

ExpandableObjectConverterのサブクラスで実装する内容TypeConverterAttribute属性を用いて、ExpandableObjectConverterおよび、その派生クラスを指定することで プロパティグリッドにネスト表示されるプロパティを作成することができます。 通常、Expandabl…

オッカムの剃刀と論理的思考とオブジェクト指向

ある事柄について考察する足がかりとして、 オッカムの剃刀的な考えを適用し、まず物事を単純化して考えるというスタンスには異論はない。 がしかし、削ぎ落とした仮説が必ずしも間違いであるということにはならない以上、 常にオッカムの剃刀的な考えを適用…

ソフトウェアの品質要因 その7「可搬性」

可搬性(portability) ■定義:可搬性(portability) 「可搬性」とは、多用なハードウェアおよびソフトウェア環境へのソフトウェア製品の移植しやすさである。 可搬性とビジネス戦略可搬性における対象は、ハードウェアのような物理的なものに対してだけではな…

ソフトウェアの品質要因 その6「効率性」

効率性(efficiency) ■定義:効率性(efficiency) 「効率性」とは、処理時間、内部記憶および外部記憶上の空間、通信装置で使用する帯域幅などの ハードウェア資源を出来る限り必要としないソフトウェアシステムの能力である。 ソフトウェア業界の人々における…

俺流オブジェクト指向Q&A

Q.オブジェクト指向って簡単ですか?A.理解してしまえば簡単だが、理解するまでが難しい(と言われている)。 また、間違いやすいのは、「オブジェクト指向」そのものが難しいのではなく、 物事をオブジェクト指向で考えることができるように、 非オブジェ…

ソフトウェアの品質要因 その5「互換性」

互換性(compatibility) ■定義:互換性(compatibility) 「互換性」とは、ソフトウェアの要素の、ほかのソフトウェア要素との組み合わせやすさである。 「互換性」とは、ハードウェアやソフトウェアが、 仕様の異なるものに置き換えられた上でも、元通りの動作…

日本のソフトウェア業界が絶望的に遅れている件

高橋寿一氏の「遅れた日本のソフトウェア開発」脱・下流エンジニア (仮)より そのとーり!(児玉清)って共感した部分多々。 この業界で今後も飯を食っていくのであれば、「生涯一技術者」でありたいと考える。 そのためには、歳をとっても最前線で戦える力を…

ソフトウェアの品質要因 その4「再利用性」

再利用性(reusability) ■定義:再利用性(reusability) 「再利用性」とは、多種多様なアプリケーションの構築に使うことのできる、ソフトウェア要素の能力である。 再利用は、他の品質要因を高めることに繋がるなぜ「再利用性」が要求されるようになったのか…

ソフトウェアの品質要因 その3「頑丈さ」

頑丈さ(robustness) ■定義:頑丈さ(robustness) 「頑丈さ」とは、異常な条件に対して適切に対応するソフトウェアシステムの能力である。 頑丈さとは正確さを補完する要素頑丈さとは、正確さを補完するものである。 「正確さ」は、仕様に記述されている振る舞…

ソフトウェアの品質要因 その2「拡張性」

拡張性(extendibility) ■定義:拡張性(extendibility) 「拡張性」とは、仕様の変更に対するソフトウェア製品の適応のしやすさである。 拡張性と規模の関係ソフトウェア製品のおいて、拡張性の問題のほとんどは規模に起因する。 小さなプログラムの変更は、基…

ソフトウェアの品質要因 その1「正確さ」

正確さ(correctness) ■定義:正確さ(correctness) 「正確さ」とは、仕様によって定義されているとおりに仕事を実行するソフトウェア製品の能力である。 「正確さ」は、外的品質要因の中で最も重視されるべきものである。*1つまり、システムがすべきことを正…

なぜデザインパターンを学習するのか

デザインパターンを学習する4つの理由 1.解決策の再利用 2.共通用語・共通認識の確立 3.個人々々のオブジェクト指向技術の向上 4.チームの開発効率の向上 1.解決策の再利用先人たちの経験や実績により、既に確立されている設計パターンを再利用す…

オブジェクト指向技術初心者の方へ

.NETを利用しているオブジェクト指向技術初心者の方は、まずこちらを読んでみてはいかがでしょうか。 Microsoftが概念の簡単な説明から、OOPの実装についてまで、入門的な内容を丁寧に解説してくれています。 つ継承とインターフェイス つ継承を使用する状況…

オブ脳の人いわく

インターフェイスを制する者はオブジェクト指向を制す。 まったくそのとおりだと思う。 「本質」を見極め、「構造で考える」ことと「抽象化する」ことこそが オブジェクト指向を制することなんだな。

開放/閉鎖原則

開放/閉鎖原則(OCP:The Open-Closed Principle) Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification. モジュール(クラス)は拡張に対して開いており、修正に対して閉じていなければならない…