タグ

oopに関するt-murachiのブックマーク (29)

  • O/Rマッピングは百害あって一利なし! - Qiita

    O/Rマッピング(Object-relational mapping)について、Wikipediaには以下のように書かれています。 データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法である。 O/Rマッピングを実現する仕組みを、O/Rマッパーと言います。(両者を区別しなくても私が言いたいことは伝わると思いますので、ORMと統一して記述します)(また、個人的な理由で、プログラミング初学者向けに語りかける口調にしていますが、初心者向けの記事というわけではありません) 最近はWEBアプリ開発をするにあたって、WEBフレームワークに標準で何らかのORMが組み込まれていることが多いため、その存在を知らない人はまずいないでしょう。 私も何度かORMと向き合ってきましたが、そうこうしているうちに気がつきました。 ORMはめんどうくさい! …ってことに。 みん

    O/Rマッピングは百害あって一利なし! - Qiita
    t-murachi
    t-murachi 2018/11/20
    こういうことを書く人にPHPerが多い印象…(フレームの元-1) / 型整合性をコンパイルレベルでチェックしようという考え方が根底に無いと中々有り難みが得られないものなのかもとは思うが…(´・ω・`)
  • オブジェクト指向の呪いと、その避け方 - mizchi's blog

    このテーマで書く前に、まず、最初に自分に多少の偏りがあることを認めておかなくてはなりません。 オブジェクト指向より、関数指向寄り オブジェクト指向のアプローチは有用だが、ただしそれを実現する手段はクラスと継承ではない。 階層化されたツリー構造(GUI/リレーショナルな参照構造)に埋め込まれる状態はコード品質を悪化させるので、できるだけ出現するべきではない。 ただし、状態は確実に存在する。だからこそ慎重に扱うべきだ、という派閥です アンチパターン: 特に理由もないクラスメソッドへの所属 何かのバリデータを実装したいとします。 その関数がどこに所属するかについて、よく見るこれらの実装は全部アンチパターンといっていいと思います export class Validator { static validate() {...} } export class Validator { validate(

    オブジェクト指向の呪いと、その避け方 - mizchi's blog
    t-murachi
    t-murachi 2018/08/01
    概ね同意できる。これに批判してOOP (つかクラス指向) 擁護するブ※の趣旨の大半が「大規模開発ならワンチャンある」なの、闇深すぎだと思うよ(´・ω・`)
  • Elixir から Elm の流れで、いよいよオブジェクト指向に対する懐疑心が無視できないレベルに達した2017年冬。 – ゆびてく

    Elixir から Elm の流れで、いよいよオブジェクト指向に対する懐疑心が無視できないレベルに達した2017年冬。 – ゆびてく
    t-murachi
    t-murachi 2017/12/03
    「設計判断の根拠となる「スコープが適切でない」ということを、後から文脈をズラすことでいくらでも言えてしまう」humm... 書いてる最中に問題に気づいて変数の位置を変えるだけでも結構な手戻り感だったりはする。
  • 俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita

    ちなみに、最初に結論だけ言っておくと、まずSandi Metzの「オブジェクト指向設計実践ガイド」を読め、という話です それだけで終わってしまいたい気持ちはあるが、不親切過ぎるしもうちょっとRails向けの話を書こうと思う。 ただ言いたいことは、よく分かってないのに使うのは止めろということ。 自分もで書いたりした手前、それが参考にされた結果なのかもしれないが、世の中には当に酷いクラスが存在するもので、雑にサンプルで書くと以下の様な感じのコードが存在したりする。 class HogehogeService # Hogehogeはモデル名まんま def process(hogehoge, option_a: nil, option_b: nil, option_c: false) history = hogehoge.histories.last unless hogehoge.activ

    俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita
    t-murachi
    t-murachi 2016/12/16
    「手続的な処理の羅列を書いたサービスクラスが跋扈し、モデルレイヤーがただのデータアクセスレイヤーとトランザクションスクリプトの群れになるドメインモデル貧血症」<そんなコードを.NET MVCのprojectで見た覚えが…
  • オブジェクト指向の欠点をカバーする努力 - Qiita

    オブジェクト指向の問題点 インターネッツを良くするポエムというのは、「こういう問題に対して、こういうソリューションでカバーしてきたよ」をみんなでシェアすることだと思うので、ここに挙げられていることの一部に対して、オブジェクト指向界隈が今までこんな工夫をしてきたよとか、僕の目から見えている「技術発展の流れ」について書いてみようと思います。まあ僕も全ジャンルをまんべんなくやっているわけじゃないし、一部想像で補っている部分もあります。他にもあればぜひシェアしてください! 上記のサイトで書かれている内容のうち、 オブジェクトのつながり具合が手続きでしか表現できない/知識表現が手続き側に偏っている 関係性が表現できない ユーザレベルでの部品化再利用に全然なっていない について取り扱います。 オブジェクトのつながり具合が手続きでしか表現できない/知識表現が手続き側に偏っている 元は2項目ですが、内容的

    オブジェクト指向の欠点をカバーする努力 - Qiita
    t-murachi
    t-murachi 2016/05/20
    すんげえいろいろまとまっとる。
  • N1875: C言語にクラスを追加する提案

    ask.fmで、面白い質問が来た。なんと、C言語にクラスを追加する提案論文が、先月末に公開されているというのだ。 N1876: Adding classes to C C言語の標準規格は追っていないのだが、なかなか興味深い。 この提案は、C言語にC++風のクラス機能を追加する提案だ。ただし、C++のクラスをそのまま持ってくるのではなく、だいぶ保守的な採用の仕方をしている。 この論文で提案されているクラス機能は、C++の文法によく似ている。クラスstructかclassキーワードで宣言する。アクセス指定子もあり、structはデフォルトでpublic、classはデフォルトでprivateなのも、C++と同じだ。 派生はあるが、多重派生は認められていない。 virtual関数やRTTIはない。 また、C++にある、自動的に呼ばれるコンストラクター、デストラクターは存在しない。 かわりに、イニ

    t-murachi
    t-murachi 2014/10/02
    これは…(・_・;)
  • RubyのClassクラスとかのモヤッと感をズバッと解決したい - Qiita

    ClassクラスとかModuleクラスの継承関係やら、 それ自体のクラスとかの関係てなんかモヤっと感あるなあと思っていて、 上手い事キレイに説明したいなと思い色々考えていたらそっぽい答えが出たので書きます. まあひとまず以下のコード見て頂いてモヤっとしなければこんなクソ記事すぐ閉じるが宜しいかと. もしモヤっとした方で興味があったらお読み頂ければなと. '1'.class => String '1'.class.class => Class '1'.class.superclass => Object '1'.class.class.class => Class '1'.class.class.superclass => Module '1'.class.class.superclass.class => Class '1'.class.class.superclass.superclas

    RubyのClassクラスとかのモヤッと感をズバッと解決したい - Qiita
    t-murachi
    t-murachi 2014/09/30
    |_`)。oO(YOU! クラス図書いちゃいなYO!!)
  • ソフトウェア原則[1] - OCP(Open-Close Principle) - Qiita

    週刊オブジェクト倶楽部 2003-01号の書評『オブジェクト指向入門』の中で、 OCP"Open-Close Principle"として、 「ソフトウェアモジュールは、変更に対して閉じており、拡張に対して開いているべき」 を紹介しました。第1回目は、このOCP からです。次のC言語コードを見てどう思いますか? typedef struct { int x, y; } Point; typedef struct { Point p1, p2; } Line; typedef enum { LINE, POINT } Kind; typedef union { Point* point; Line* line; } ShapeUnion; typedef struct { Kind kind; ShapeUnion of; } Shape;

    ソフトウェア原則[1] - OCP(Open-Close Principle) - Qiita
    t-murachi
    t-murachi 2014/09/18
    ポリモーフィズムの利点が理解できない人に読ませるといいかも。
  • クラスの命名のアンチパターン - Qiita

    昔から「名は体を表す」と言ひます。クラスの名前がクラスの果たす役割と一致してゐるかどうか常に考へ続けませう。 ImageInfo, AccountData, etc. Info って何やねん? Data って何やねん? ImageInfo って Image とはどう違ふねん?? FooInfo や FooData よりも好ましいかもしれない名前の例: FooAttribute, FooProperty, FooMetadata, FooDescription FooConfiguration, FooSetting, FooParameter FooResult, FooStatistics, FooSummary FooBuffer, FooList, FooCollection, ... ProductListItem, TranslationTableEntry, etc. Prod

    クラスの命名のアンチパターン - Qiita
    t-murachi
    t-murachi 2014/09/04
    語彙力ないのツライorz
  • かわいそうなGoF Stateパターンに愛の手を - Qiita

    はじめに 下記を見ていたらStateパターンがとても不憫になったので、「僕はそばにいるよ」とコードで示してあげたくなりました。 http://qiita.com/irxground/items/d1f9cc447bafa8db2388#3-20 http://qiita.com/magicant/items/64685c41fdb85d03c33b#3-4 せいか 書いたのはこんな感じでiPhoneのストップウォッチを真似したものです(jsdo.itが終了してたのでcodepenにしました)。 https://codepen.io/ms2sato/pen/JjGPdWy コードはGitHubにあります。 https://github.com/ms2sato/gof/blob/master/state/main.js おもっていること 上記のコード、ifやswitchのような条件分岐をひとつ

    かわいそうなGoF Stateパターンに愛の手を - Qiita
    t-murachi
    t-murachi 2014/08/29
    State パターン的な書き方って普通に使うけどなぁ… 確かに Web サーバーアプリでは知らんけど。
  • オブジェクト指向について - きしだのHatena

    参考までに、ぼくの基的な定義は、ランボーの「データ構造と振る舞いが一体となったオブジェクトの集まりとしてソフトウェアを組織化すること」という定義に従っています。そのようなオブジェクトが単体ではなく組織化されるということが重要です。オブジェクト指向を勉強するとはそのような組織化のしかたを勉強することだと考えています。 現在のシステムは、データはデータベースに格納され、振る舞いとは分離して管理されています。そのような中では、システムをオブジェクトの集まりとして組織化することはできません。 局所的にも、ステートレスを前提としたHTTPの処理では、オブジェクト組織の必要な局面はありません。 個別のオブジェクトの共通化に継承を使うという点では「クラスは単にユーザー定義型であり、継承は部分型と差分プログラミングを実現する仕組みだととらえる」だけで充分だと考えています。 そうしたシステムにオブジェクト

    オブジェクト指向について - きしだのHatena
    t-murachi
    t-murachi 2014/07/25
    まぁーSIer、Web開発者が構築するアプリケーションでこれが必要になる局面って、よく知られている典型例以外ではあんまり無さそうだ罠。
  • オブジェクト指向は禁止するべき - きしだのHatena

    プログラムがまだ不慣れな人が「プログラムちょっとわかるようになったけど、まだぜんぜんオブジェクト指向とかできてません」のように言ったり、ちょっと慣れた人が「このソース、ぜんぜんだめ。オブジェクト指向ができてない」にようなことを言ったり、まるで、オブジェクト指向ができてるかどうかがよいプログラムかどうかを表すことになってるようだ。 Javaのアルゴリズムのに、「Javaなのにオブジェクト指向ができていない」のような書評がついているのを見たときには、お前は何を求めてるんだと思ったりもした。 そのようなオブジェクト指向は、窓から投げ捨てるべきだ。オブジェクト指向はプログラムのよしあしの基準にならない。 むだにHogeインタフェースとHogeImplクラスがあったり、むだにnewするだけのcreateメソッドがあったり、どこで値が設定されてるかわからないオブジェクトがひきまわされてたり、ソースコ

    オブジェクト指向は禁止するべき - きしだのHatena
    t-murachi
    t-murachi 2014/07/25
    面白い。しかし「禁止すべき」と強い忌避を表明する必要性を感じるほどに、Javaプログラマーとは斯くもオブジェクトに束縛されるものなのだろうか。
  • https://qiita.com/kenokabe/items/13ea8d2da6adce1b3b9a

    t-murachi
    t-murachi 2014/07/15
    クラス内クラスとか普通に使うけどなぁ… そんなに特殊なモノ扱いだったっけ? 仮想機械という発想がバカバカしいという論には割と同意。
  • プログラミング勉強中の人にオブジェクト指向とは何なのかを何となく伝えたい話 - かまずにまるのみ。

    この文章について OOP(オブジェクト指向プログラミング、オブジェクト指向パラダイム)について プログラミング勉強中の大学生さんに説明する機会が何度かあったので、 自分の中で整理するために書きました。 中には適切でない説明もあります。ばっさり省いているところもあります。 詳細より イメージを掴んでもらうことを優先しているためです。 「それにしてもあんまりだなー」という表現がありましたらご連絡いただけると嬉しいです。 大学生さん 大学生さんたちはいろんな背景を持っています。 プログラミングを始めたばかりの人 独学で Objective-C や JavaScript を書いた経験がある人 Web やコンピュータの仕組みについてもこれから勉強する予定の人 使用言語 大学生さんたちはプログラミングの第一歩として JavaScriptPHP を使っています。ここでは説明に PHP のコードを使

    プログラミング勉強中の人にオブジェクト指向とは何なのかを何となく伝えたい話 - かまずにまるのみ。
    t-murachi
    t-murachi 2014/04/15
    オブジェクト指向の利点について問われるような場合に、要件分析から詳細な設計に至るまでのプロセスを UML を活用する形で例示、それをプログラムに落としこむ作業を実践させる、みたいな教材があると助かるんだが…
  • DB 操作の視点からオブジェクト指向を考える: 国民宿舎はらぺこ 大浴場

    シナリオ 出席簿をつけるアプリケーションを想定してみることにします。まずマスターとして、学生、講師、講義の 3つが存在するものとします。 学生 学籍番号 (PK) 氏名 性別 学年 etc... 講師 教員番号 (PK) 氏名 性別 役職 etc... 講義 講義識別番号 (PK) 講義名 担当講師 (教員番号) 場所 時間割 期間 単位数 概説 etc... それから、マスター以外のテーブルとして、受講者リストと出席記録があるものとしましょう。 受講者リスト 講義識別番号 (PK) 受講者 (学籍番号) (PK) 点数 成績 (優|良|可|不可) etc... 出席記録 講義識別番号 (PK) 受講者 (学籍番号) (PK) 講義回数 (N回目) (PK) 遅刻 (時刻) etc... さて、ログインした講師が受け持つ講義の 1つを選択し、新たに出欠をとる画面を開いたとします (講義回数

    t-murachi
    t-murachi 2013/06/23
    最近よその現場に出向いて仕事しているおかげでこういうレベルの記事もちょくちょく書かないとダメだなと思うようになった。 C# ですまんこ
  • オブジェクト指向できていますか?

    3. 自己紹介 1992年~1997年 某ゲーム会社 プログラマ SFC,GB,PS1,N64のゲーム開発経験 1998年~現在 日工学院八王子専門学校 @mozmoz1972 専任講師 プログラミング教育を中心に担当 twitterもfacebookも実名です。よかったらフォローしてください。

    オブジェクト指向できていますか?
    t-murachi
    t-murachi 2012/08/29
    理想論だけど、ひとつの理想とされているもののゴールがどこにあるのかを知っておくだけでも、普段のコーディングへの取り組みは全く違ってくるように思う。
  • オブジェクト指向について語った時に使ったメモ

    今日、オブジェクト指向について1時間ほど語りました。整理するため自分用に書いたメモを公開します。大まかな構成はメモどおりに話しましたが、メモに書いていないこともたくさん話していますし、書いていても話さなかったこともあります。 前提として自分自身のオブジェクト指向へのスタンスを書いておきます。 自分のプログラマとしてのキャリアとオブジェクト指向の隆盛の重なりを考えると客観的に見て自分はオブジェクト指向世代のプログラマなんだと思います。一方で、世間で過剰にもてはやされる技術には反発してきました。オブジェクト指向も例外ではありません。オブジェクト指向を否定はしませんが、金科玉条のように扱う人の前では、オブジェクト指向なんて技法のひとつに過ぎないと、冷たく突き放してきました。 ただここ数年、かつてに比べてオブジェクト指向の威光は下がっている気がします。関数型プログラミング支持者から、オブジェクト指

  • 『いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して』へのコメント

    暮らし いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して

    『いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して』へのコメント
    t-murachi
    t-murachi 2011/06/24
    この手の初歩的な記事にブクマが集まるのを見るにつけ、如何に基礎的な教科書を読まないプログラマー (学生含む) が多いかを思い知らされる。
  • 多くの日本人がオブジェクト指向プログラミングを苦手とするのは英語アレルギーだからか? - 達人プログラマーを目指して

    やはり、多くの人からいろいろなコメントをいただくと、意外な発見がありおもしろいです。 プログラミングと設計は来切り離せないものなのでは - 達人プログラマーを目指して のブクマのコメントに 何か、主語がないから理解が難しい読み物 というのがありました。私の文章の拙さをまずは反省しなくてはなりません。ただ、普段から日語を話したり、文章を書いたりする際にはあまり意識していなかったのですが、よくよく考えてみると日語の文章で「主語」と呼ばれるものがなんとなく省略されることも多いように思えてきました。中学校の国語の授業では「は」や「が」という助詞がついた言葉が主語であると習ったと記憶しているのですが、実際に、文中で明示的にそのような文節が表れない現れないことが多いように思います。 そこで「日語 主語」で検索してみたら、非常に興味深い記事がいくつか見つかりました。 http://www.geo

    多くの日本人がオブジェクト指向プログラミングを苦手とするのは英語アレルギーだからか? - 達人プログラマーを目指して
    t-murachi
    t-murachi 2010/12/02
    おいらもエーゴは苦手だけどね。ただ、某メーカー研究所出向時は担当上司が英語脳だったこともあって英文の APIマニュアル読みまくったりシンボル名を英語で考えたりしてたからそれが下積みになったかもとは思う。
  • コラム「システムエンジニア 生き残りの極意」でちょっとした祭りになっている件 - babydaemons’ blog

    "ちょっとした祭り"の実態は? えーと、ソースはこちらです↓ 気分はstatic!: 実はオブジェクト指向ってしっくりこないんです! とりあえず現時点でのこのコラムへのコメントのエッセンスを纏めます。 それよりも、ポリモーフィズムがオブジェクト指向の肝だと思います。 ポリモーフィズムをうまく使うと条件分岐の記述を減してすっきりしたコードが書けます。 ぬ様 貴重なご意見ありがとうございました。ポリモーフィズムについては勉強したいと思っております。 ポリモーフィズムについては、私は 「関数へのポインタ(C言語)のデラックス版を使って、何かをやる」 と捉えています。C言語において、関数をそのまま呼ぶのではなく、ポインタを通じて呼ぶようにすると、 「たまたまその時、どんな関数がそのポインタに指し示されていたか」 によって、結果がまちまちになりますよね。 この特性を意図的に活用すると面白いことができ

    コラム「システムエンジニア 生き残りの極意」でちょっとした祭りになっている件 - babydaemons’ blog
    t-murachi
    t-murachi 2010/08/24
    あの時代背景を思えば、ご年配のプログラマーにそういう方が多いのは仕方のないことであるように思う。oop も最初から正しく輸入されていたわけではなかったし、C++ は変数を関数の途中で宣言できる C でしかなかった。