give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

OOP

【プログラミング初心者向け】クラスメソッドとインスタンスメソッドはどう使い分けるべき?

はじめに ruby-jpのSlackで以下のような質問が投稿されていました。 クラスメソッドとインスタンスメソッドの具体的な違いがわかりません。 現状「クラスメソッドはクラスから実行でき全体に関する処理を書くときによく使うもの。インスタンスメソッドはイン…

TDDBC大阪2.0の自動販売機問題はなかなかの良問だった

はじめに 僕とAkiさん(@spring_aki)で毎月主催している西脇.rb & 東灘.rbの合同もくもく会で、前回(第3回)、参加者の寺田さん(@aq2bq)がTDD Boot Camp 大阪 2.0の自動販売機問題を自習のテーマにしていました。 その問題を読んでみると、「簡単そう&面白そ…

Rubyのクラスメソッドは同じクラスのprotectedメソッドやprivateメソッドにアクセスできない

C#やJavaのプログラマがRubyの世界にやってくると「あれれ?」と思ってしまう言語仕様をまた見つけてしまいました。 タイトルにも書いた通り、Rubyのクラスメソッドは同じクラスのprotectedメソッドやprivateメソッドにアクセスできません。 言葉だけではピ…

JavaやC#の常識が通用しないRubyのprivateメソッド

衝撃を受けたできごと 最近Rubyを勉強しています。 JavaやC#でオブジェクト指向プログラミングの基本はマスターしてるから、Rubyもそのあたりは楽勝〜!・・・と思っていたら、JavaやC#の常識が全く通用しない振る舞いに遭遇してかなり衝撃を受けました。そ…

レガシープログラマさんと一緒にリファクタリングをする、の巻

前回のエントリではレガシープログラマの判断項目について、書きました。 その日、仕事でレガシープログラマさんの一人が書いたプログラムを一緒にリファクタリングしました。 レガシープログラマさんと言っても、おいらより年下の女性エンジニアです。 今回…

レガシープログラマかどうかを判断する10項目

※2011.3.30追記 11個目の判断項目を追加しました。 また、「昔はね...」の補足説明を各項目に追加しました。 レガシープログラマ = モダンな言語のおいしい機能をうまく使いこなせていないプログラマ おいらは時々社内システムのコードレビューなんかをやっ…

共通関数継承のデメリットを考える

OOP

id:katzchang さんのエントリに触発されて、おいらも共通関数継承のデメリットを考えてみました。 共通関数継承のデメリットを説明せよ - @katzchang.contexts 共通関数継承のデメリット 低凝集度、密結合のクラスができあがる。その結果、変更に弱く、再利…

O/Rマッピングツールに対する誤解をときたい -実装編 Part9-

Part8を読む これまでのまとめ 当初考えていた以上に長いシリーズとなってしまったので、一度全体を振り返ってみます。 また、その後でO/Rマッピングツールを採用するかどうかの判断基準や考慮点、アンチパターンなんかも書いてみたいと思います。 これまで…

O/Rマッピングツールに対する誤解をときたい -実装編 Part8-

Part7を読む NHibernateに関する補足説明 できればサンプルプログラムを1から10まで説明していきたいのですが、そうするとボリュームが凄いことになってしまうので、注目すべき部分のみをピックアップしてみたいと思います。 Lazy Loading機能 Lazy Loading…

O/Rマッピングツールに対する誤解をときたい -実装編 Part7-

Part6を読む データベース関連の説明 Part1でもお話しした通り、ここまで「あ・え・て」データベース関連の説明をしてきませんでした。 なぜならO/Rマッピングツールは SQLを書きたくない人のためのツールではない からです。 そうではなく、O/Rマッピングツ…

O/Rマッピングツールに対する誤解をときたい -実装編 Part6-

Part5を読む NHibernateの利用を簡略化するヘルパークラス(NHibernateHelper.cs) 書籍Facadeの説明をする前にヘルパークラスの説明をしたいと思います。 実装コードの全体を載せる前にまずはクラスのAPIから紹介します。 namespace Junichi.Ito.NHibernateBo…

O/Rマッピングツールに対する誤解をときたい -実装編 Part5-

Part4を読む Facadeクラスの実装 次はFacadeクラスの実装です。 実はO/Rマッピングツールの説明をすると言っておきながら、ここまでほとんどO/Rマッピングツールに関するコードが登場していませんでした。 ここからようやくNHibernateを使ったコードが登場し…

O/Rマッピングツールに対する誤解をときたい -実装編 Part4-

Part3を読む ドメインモデルクラス それではここからドメインモデルを構成する注文クラス、注文明細クラス、書籍クラス、和書クラス、洋書クラスを説明していきます。 注文クラス(BookOrder.cs) using System; using System.Collections.Generic; using Syst…

O/Rマッピングツールに対する誤解をときたい -実装編 Part3-

Part2を読む 実装コード それではここからいよいよ実装コードの説明を進めていきます。 書籍注文ページを実装するには以下のようなクラスやファイルが必要になってきます。 書籍注文ページのUI(aspx + aspx.cs) ドメインモデルを構成する注文クラス、注文明…

O/Rマッピングツールに対する誤解をときたい -実装編 Part2-

Part1を読む プログラム設計 クラス設計 このプログラムの核となるクラス(ドメインモデル)を以下に示します。 この図はER図でもなく、テーブル設計図ではありません。 あくまでクラス図です。 基本的にこれがこのままC#のコードとして実装されます。 しかし…

O/Rマッピングツールに対する誤解をときたい -実装編 Part1-

2010.12.28追記 Part9にて、実装編Part1〜Part8の概要を載せています。 かなり長いシリーズ記事なので、この記事を初めて読む方はまずこちらに目を通してもらうと全体像が分かりやすいかもしれません。 イントロダクション 以前からやりたいやりたいと思いな…

ダックタイピングは間違い?

OOP

twitterで↓のネタを見つけました。 detail.chiebukuro.yahoo.co.jp すみません、ダックタイピングって時々耳にしたことはあったんですが、タイピング(文字入力)方法の一種だと勘違いしていました。お恥ずかしい・・・。 Wikipediaの説明を読んで、ようやく正…

「オブジェクト指向」という名の火種

OOP

またまたコメント欄でオブジェクト指向に関する議論(というより半分ケンカ?)が少々盛り上がっているようです。 Innovation “D”: オブジェクト指向。教科書と現実のはざまで http://el.jibun.atmarkit.co.jp/densol/2010/08/post-8443.html オブジェクト指向…

(独断による)Rubyの良いところ、残念なところ

OOP

現時点でのRubyに対する感想をまとめてみます。 Rubyについてはほとんど開発経験もなく、最近ようやくじっくり調べてみた程度なのでエキスパートの人からすると「何言っとんねんコイツ!」とつっこまれるかもしれませんが、ご勘弁を。 ちなみにおいらは大規…

失敗は成功の元

なんか微妙なコラムが載っていました。 第11回 新しいシステム開発技法への挑戦 〜オブジェクト指向の失敗経験より〜 http://gihyo.jp/lifestyle/serial/01/dilemma/0011 始めての挑戦で失敗に終わったら即、否定的ですか?? 初心者ばかりを集めたチームで…

オープンソースから美しい設計を学ぶ

最近社内でWindows Formを使った開発案件が出てきました。 「そういえばWindows Formってあまり開発経験がないし、設計のベストプラクティスみたいな本も見たことないなあ」と思い、インターネットでWindows Formのアーキテクチャ設計が学べるサイトがないか…

DIコンテナ(IoCコンテナ)なんて使うのヤメた!

OOP

・・・っていう人のブログがありました。 Breaking Up with IoC Containers http://justinbozonier.posterous.com/breaking-up-with-ioc DIコンテナを使うとコードからオブジェクトの依存関係が読み取れなくなるのがイヤだ、っていう主張みたいです。 でもま…

なんちゃってデザインパターンで条件分岐をなくす

昨日会社のメンバーからコーディングについて相談を受けました。 話を聞いていると、オブジェクト指向設計を利用してコードをリファクタリングしたい様子でした。 彼は頑張ってインターフェースやクラスを自分で定義していたんですが、ちょっとぎこちない設…

O/Rマッピングツールに対する誤解をときたい

OOP

2010.12.23 追記 本エントリの続編となる「実装編」のブログを書きました。 こちらも合わせて読んでみてください。 O/Rマッピングツールに対する誤解をときたい -実装編 Part1- - give IT a try 本文にコメントすると泥沼に巻き込まれそうなので、ここに書い…

Microsoftの功罪?

例の残念なコラムの筆者さんのコメントから。 私はデータベースを活用してます。コメントをいただいた何名のかたはC#を使っているそうですが、DataSet DataTable テーブルオブジェクトとかDataTableからGridView(表)へのバインドなどのテクニックを使って…

オブジェクト指向関連書籍リスト

自分はどれくらいオブジェクト指向について勉強してきたんだろう?というのを整理する意味で、これまでに読んできたオブジェクト指向関連の本をまとめてみます。 エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)作者:…

残念なコラム

全くパラダイムシフトが出来ていない方の愚痴です。 しかも最後の方は何が言いたいのかよく分からないまま終わってしまう、不思議なコラムです。 実はオブジェクト指向ってしっくりこないんです! http://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc…