タグ

programmingとoopに関するlizyのブックマーク (34)

  • オブジェクト設計スタイルガイド

    オブジェクト設計において、コードの読みやすさ、書きやすさ、メンテナンス性を向上させるにはどうすればよいでしょうか? 書は、より良いオブジェクト指向のコードを書くためのルールを紹介します。オブジェクトの種類に応じたオブジェクトの構築、メソッドの定義、状態の変更や公開など、設計ルールを説明します。JavaPython、C#など、あらゆるオブジェクト指向言語に適用できるテクニックを、擬似コードを使ってわかりやすく解説します。コードの品質を上げるためのルールを紹介する書は、プログラマ必携の一冊です。 まえがき 序文 書について 1章 オブジェクトを使ったプログラミング入門 1.1 クラスとオブジェクト 1.2 状態 1.3 振る舞い 1.4 依存関係 1.5 継承 1.6 ポリモフィズム 1.7 コンポジション 1.8 クラスの整理 1.9 Return文と例外 1.10 ユニットテスト

    オブジェクト設計スタイルガイド
    lizy
    lizy 2023/07/07
    今どきのOOPの書き方、みたいな感じなのかな
  • [Article] Multiple ways to inheritance in Perl - The Phoenix Trap

    Inspired by my parents coming to visit at the end of the week, I thought I’d write about how Perl classes can have ​“parents” as well, from which they inherit methods. Although it might seem on the surface as though there’s more than one way to do it, these techniques all share the same underlying mechanism. Where it all BEGINs: @ISA Perl classes are just repurposed packages, i.e., a namespace for

    [Article] Multiple ways to inheritance in Perl - The Phoenix Trap
  • オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだのHatena

    某所でオブジェクト指向についていろいろ書いたのでまとめておく。 問題意識としては初学者がなにかというと「オブジェクト指向できるようになりたい」のようなことを言うけどそこまでの優先順位でがんばるものではないんでは、というところです。 まず前提として、オブジェクト指向は1980-2000年くらいに流行って発達したものの、それ以降は時代にあわせた進歩はしていない20年以上前の技術ってのがあります。 そのころは今だとCPUのキャッシュにも満たないようなメモリをやりくりしてプログラムを書く必要があったので、オブジェクト指向はメモリ上のデータをコピーすることなくうまく使いまわせるようなプログラム技術になっています。 そしてオブジェクト指向にはそこから目だった更新はなく、タイトルに書いたように、カメラがやっとついたくらいのガラケーのような古い技術という感じがします。 オブジェクト指向について、アプリケー

    オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだのHatena
    lizy
    lizy 2021/01/21
    従来はオブジェクトが滞留して生存期間が長かったけど、今は関数の間をオブジェクトが流れていくイメージ?
  • 僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 - 亀岡的プログラマ日記

    はい、ポエムです。自分が正しかろうとは欠片も考えていません。異論や示唆は歓迎ですが、そう考えろと言っているわけではないので、そこはご容赦を。 前置き終わり。 さて、Nullは50億ドルの過ちだそうですね。 null参照の考案は10億ドル単位の過ち? | スラド デベロッパー そして、それを回避するため、Maybe / Nullable / Optional などの言語機能が生まれ、各言語に埋め込まれています。 それは、大変喜ばしいこと、だと思います。 なんですが、どうもどうも、僕はどうしてもしっくりこないのです。これら全てに対して。Nullと同じように。 Nullは何がダメなんだっけ? Nullがダメな理由、ってなんなんでしょう。よく言われる批判として、以下があるのかなぁと思っています。 ①Nullは型ではない Nullと言っていますが、こいつはNullポインタ、でございます。 からの「何

    僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 - 亀岡的プログラマ日記
    lizy
    lizy 2015/11/27
    SmalltalkのifTrue:ifFalseみたいにifNull:ifNotNullをNullObjectか否かで振る舞いを変えると言うこと?
  • Swiftにおけるプロトコル指向プログラミング

    WWDCにて、C++/Boostで知られ、現在はAppleSwift Standard Libraryグループのリーダを務めるDave Abrahams氏が、Swiftをプロトコル指向言語として紹介し、プロトコルがコード改善にどう使えるのか説明した。 プロトコル指向プログラミングというのは、OOP(オブジェクト指向プログラミング)のパラダイムの一つで(注:Abrahams氏はそうは言っていないとのこと)、クラスよりもプロトコル(インターフェイスに相当)と構造体の利用を好んでいる。 クラスは素晴らしい? OOPで知られているように、クラスは以下を提供するのに使われる。 カプセル化 アクセス制御 抽象化 名前空間 表現力 拡張性 実のところ、これらはすべて型の特性であり、クラスは型を実装する一つの方法にすぎないとAbrahams氏は言う。だが、クラスはプログラマに多大な犠牲を強い、次のような

    Swiftにおけるプロトコル指向プログラミング
  • 私が愛するオブジェクト指向とそれを使わない理由 - takuto_hの日記

    この記事では、私がオブジェクト指向のどこを愛しどこを素晴らしいと感じていて、そのうえでなぜオブジェクト指向を使うことを避けているのかを書き留めておきます。関数型言語使いの方で、「オブジェクト指向の何がいいのかわからない」「オブジェクト指向難しすぎ・複雑すぎ」とおっしゃる方にぜひ読んでいただきたいと思っています。また、「オブジェクト指向言語完璧に理解したわ」と思っている方にも読んでいただきたく思います。 なお、ここでのオブジェクト指向の定義は、「各言語でオブジェクト指向と呼ばれているものすべて」とします。JavaScalaJavaScriptやSmalltalkやRubyやCommon LispやOCamlがオブジェクト指向と呼んでいるものすべての総称です。もっとまともな定義が知りたい方は以下の記事がおすすめです。 オブジェクト指向の概念の発明者は誰ですか?(改訂版) - Smallta

    私が愛するオブジェクト指向とそれを使わない理由 - takuto_hの日記
    lizy
    lizy 2013/06/13
    oopといえばguiアプリのイメージだけどweb化で下火になってきた?でも最近はjsで複雑なguiを実現しようとしてmvcフレームワークも出てきて、そこではまだまだ活躍しそう
  • 2013年 のPerl5 の OOP について考える - tokuhirom's blog

    Moo今年の命? 新しくつくるならこれが無難な気がします。速度的にも Mouse とあまりかわらない。 若干依存がおおい気もするけど、インストールベースがふえれば気にならなくなるかな、ともおもいます。 Class::XSAccessor とかつかってるんで、速度的にもホットスポットは速いのがよい。 なお発音はムーだとおもう。 (http://www.forvo.com/word/moo/) Mouse完成している感じがする。得にわるい点もないが、あえていうと xs 部分がおおいので、gfx 以外がメンテできないかんじがするのが欠点か。 Xslate をつかっている場合は自動的に xslate が mouse つかってるので、自然と Mouse がロードされるので、そういった意味では Mouse つかってもいいかなとおもっている。

  • オブジェクト指向の開放/閉鎖原則:An Agile Way:オルタナティブ・ブログ

    Open/Closeは、変更の論理を、追加の論理にすり替える、ということなのだけど、ぼくがコンパイル言語特有と言ったのは、Close=触らない=固められる、ということが名前にまで影響していると気づいたからです。それが、ポリモフィズム、あるいは動的束縛のトリック。

    オブジェクト指向の開放/閉鎖原則:An Agile Way:オルタナティブ・ブログ
    lizy
    lizy 2012/12/23
    名前空間を共有することによる弊害というか混乱はないのかな。interfaceがあれば名前に対してcontextを与えることができそうだけど
  • オブジェクト指向できていますか?

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

    オブジェクト指向できていますか?
  • JavaScriptとprivateの見果てぬ夢 (JavaScript Advent Calendar 2011 オレ標準コース 6日目)

    JavaScriptとprivateの見果てぬ夢 (JavaScript Advent Calendar 2011 オレ標準コース 6日目) JavaScript Advent Calendar 2011(オレ標準コース)6日目です。他の方々のレベルが高すぎてビクビクしながら書いてます。 JavaScriptのオブジェクト指向は若干クセがあります。他のオブジェクト指向言語を使ってきた人にとって気になるのは、privateが作れないことでしょう。JSで教科書通り素直にクラス(もどき)を書くと、オブジェクトのプロパティは全てpublic、完全にオープンなものになってしまいます。 var Klass = function(){}; Klass.prototype = { methodA: function(){ ... }, methodB: function(){ ... } }; //---

    JavaScriptとprivateの見果てぬ夢 (JavaScript Advent Calendar 2011 オレ標準コース 6日目)
    lizy
    lizy 2011/12/06
    紳士協定で特に問題なさそう
  • 普通の構造化プログラマーがオブジェクト指向の存在意義を理解するコツ - 達人プログラマーを目指して

    オブジェクト指向言語の存在意義を理解するのは難しい? id:amapetasさんによる、ちょっと興味深い記事がありました。 オブジェクト指向言語が流行した必然性について考える(1) - Programmer’s Log そして、その記事の中で説明されているのですが、やはり、C言語など構造化言語のプログラマーにとってはオブジェクト指向の存在意義を理解するのがなかなか難しいところがあるようですね。 初心者向けの書籍を最近読んでいないので、最近の書籍ではうまく説明されているのかもしれませんが、そんな話を聞いたことがないので、たぶん今でもオブジェクト指向に関する説明の始まり方は 「世界は全部オブジェクトで出来ているんじゃぁぁーーー」 という「オブジェクト至高教への洗脳」から始まっているものと推察しますw テンション高めの説明から入るのでドン引きする人多数な感じがかなりアレですね。オブジェクト指向の

    普通の構造化プログラマーがオブジェクト指向の存在意義を理解するコツ - 達人プログラマーを目指して
    lizy
    lizy 2011/09/27
    縦糸と横糸(機能と構造)があってそのどちらを主と見るか、程度の認識でいいんじゃないのかな
  • いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して

    正しく意味を理解している方にとっては、まったく常識レベルの話であり、何をいまさらと思われる方々も多いかと思いますが、大規模案件のレガシーコードなど、私が仕事で見かけるJavaのコードを読むと、「このコードを書いたSEやPGの方々は、はたして継承の意味を正しく理解していないのではないか」と思われる設計のコードに出会うことが少なからずあります。現在では改良されましたが(Javaプログラミング能力認定試験の問題がかなり改善されていました - 達人プログラマーを目指して)、以前のJavaプログラム認定試験の問題は、そうした不適切な設計がされている典型的な例となっていたのですが、実際、SI業界ではあのような品質のコードのシステムが今でも現役で多数稼動しているというだけでなく、現在でも新たに生み出されているというのは残念ながら紛れもない事実のようなのです。 確かに新人研修で「哺乳類を継承して犬クラスと

    いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して
    lizy
    lizy 2011/06/24
    昔(90年代後半頃)はoop(+ooa/ood)の本がいっぱい出てたけど、今はあまり見ないような。今の人はどの本で勉強してるんだろう
  • オブジェクト指向のソースを読むのが難しい理由 - 都元ダイスケ IT-PRESS

    ダラダラ書かない予定だよ。ざっくり行くよ。あと、分かってる人には当たり前な事だと思うよ。 あるクラスについて知りたかったら、まずその基底クラスを知れ 例えば、Integerクラスについて知りたいと思ったら、Integer.java だけを読んでいてはダメだ。確かに「Integerに特化した責務・構造・操作」は読み取れるかもしれないが、数値としての基的な責務・構造・操作はNumberに書かれている。それを読まずして、Integerが保つ数値という一面を知ることはできない。Integer.javaには「Integer - Number」*1の情報しか書いてないのだよ。差分プログラミング。 さらに、忘れちゃいけない。Object.javaを読め。全ての道は暗黙的にObjectにつながっている。Objectを知らずしてJavaのクラスを知る事は絶対にできない。Objectなんて、みんな「知った気

    オブジェクト指向のソースを読むのが難しい理由 - 都元ダイスケ IT-PRESS
    lizy
    lizy 2011/06/10
    恐らく、処理の流れを追いたい場合に、個別の責務を担当するオブジェクトのコラボレーションがわかりにくい、という内容だと思ったら違ったw
  • SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して

    私自身は10年以上も前(JDK1.1の頃)にSJC-Pの認定を取って以来、Javaプログラミング関連の認定試験は受けていないのですが、昨日たまたまネットを検索して、SJC-Pとは別にJavaプログラミング能力認定試験という試験が存在していることを知りました。結構メジャーな認定試験のようですので、現役のJavaプログラマーJavaプログラマーを目指している学生さんで、今後受験に向けて勉強されている方々も多くいらっしゃるのではないかと思います。 試験は難易度に応じて3級から1級までランクが分かれており、2級まではJava言語の知識に関する筆記試験ですが1級の試験では実際のプログラムの修正を行う能力が実技試験として課せられます。試験範囲は以下で公開されています。 Javaプログラミング能力認定試験(試験範囲) 私は(自分で言うのも変ですが)、Javaプログラミングについてはこの道15年近くのキ

    SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して
    lizy
    lizy 2011/01/10
    現場においては往々にしてこんなプログラムのメンテをさせられるという意味においては現実的なのかw
  • 「憂鬱なプログラマのためのオブジェクト指向開発講座」はどこがどうダメなのか - K.Maebashi's はてなブログ

    http://blog.usagee.co.jp/2010/11/27/level-up-programmer-2 (3)更に読んで欲しい5冊 C言語ポインタ完全制覇 (標準プログラマーズライブラリ) C言語ポインタ完全制覇 (標準プログラマーズライブラリ) 前回書くべき書籍なのに、すっかり忘れていました。。。 超有名ですよね。 C言語使わない人も、是非読むべきです。 あわせて http://sakurai.sumomo.ne.jp/page/c_pointer も見るべき。 ちなみに、ポインタについての凄くわかりやすい説明を前どこかで見ましたので、うろ覚えながら書きます。 『ポインタって何?』『2chのレスと、そのレスへの安価』 ご紹介いただきありがとうございます。(_o_) ……それはさておき、「憂なプログラマのためのオブジェクト指向開発講座」というについてですが。 C++をメイ

    「憂鬱なプログラマのためのオブジェクト指向開発講座」はどこがどうダメなのか - K.Maebashi's はてなブログ
    lizy
    lizy 2010/12/02
    「今でこそ、憂鬱本の批判はかなり目にするようになりましたが」これが出た当時はそう言うトレンドだったという背景もあるのかも。これに限らず昔のooa/ood/oop本を見ると微妙な物も多い気がする
  • コア・JavaScript ( JavaScript. The Core. ) - oogattaの勉強日記

    この文章は、 Dmitry A. Soshnikov さんの、 ECMAScript に関する優れた記事 "JavaScript. The Core." を許可を得て翻訳したものです。世の中に、 JavaScript のブラウザ API や、実装系に関する記事は多々あれど、 ECMAScript の仕様に則って、ここまで詳しく説明してくれている記事は殆ど無いと思います。今回は翻訳できておりませんが、文中で参照されている Dmitry さんの ES3 シリーズも、読み応えのある( ECMAScript3 の仕様の副読としても読める)素晴らしい内容ですので、是非チャレンジしてみてください!(ご要望があれば訳します翻訳許可を頂いたので、この記事内で参照されている章から逐次翻訳を進めます!)。 ちなみに Dmitry さんは、計算機科学や数学にも明るい方でらっしゃいます。が、私は違います。極力

    コア・JavaScript ( JavaScript. The Core. ) - oogattaの勉強日記
  • Java入門ブックガイド(オブジェクト指向編) オブジェクト指向の基本

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    Java入門ブックガイド(オブジェクト指向編) オブジェクト指向の基本
    lizy
    lizy 2010/09/09
    新しくプログラミングを学ぶ人は、どういう本でOOPを学ぶんだろう
  • 「オブジェクト指向言語でオブジェクト指向っぽいプログラミングをしない」のはNG? | スラド デベロッパー

    「オブジェクト指向言語でオブジェクト指向プログラミングをしない」というSEのブログ記事が一部で物議を醸しているようだ(タレコミその1、タレコミその2、argonの日記など)。 話題になっているのは、@IT内の「システムエンジニア 生き残りの極意」ブログの「実はオブジェクト指向ってしっくりこないんです!」という記事。 「自分でクラスを作ってオブジェクト指向っぽいことをしている」なんてことはまったくない。特に「メンバー関数をstatic宣言すればインスタンス宣言をしなくてもいい」ということ知ってからは、メンバー関数を従来のファンクションのように使っている。共有変数も、pubulic static宣言していまう。したがってプロパティなんて作らない。

    lizy
    lizy 2010/05/07
    いいじゃん別に。シンプルでよいものが出来るのであれば。この場合の問題は、使用する言語の選択を誤った点では
  • ものすごく初歩的な「どうしてオブジェクト指向を使うのか」の説明 - 遥か彼方の彼方から

    プログラムオブジェクト指向が難解なだけの不気味な悪人だと思っているだろう友人達に向けて、オブジェクト指向の良さというか、必要性みたいなのを書いてみようかなと思います。というのも、凄腕プログラマ達を見ているとオブジェクト指向は複雑怪奇なものに見えるし、また「これがオブジェクト指向だよ」と例で見せられる巨大なクラスはあくまで利用するだけのものに思えるし、文法解説書にあるオブジェクト指向の解説だと必要性がわからないかなーと思うからです。僕は全然オブジェクト指向を理解していないし、ましてや解説なんて出来るレベルではないのですが、オブジェクト指向の第一歩として役に立てればなと思います。読者対象はC言語をちょびっとでも囓ったことがある人で、言語はC++を使います。文法の話をするわけじゃないので、プログラムを読んで理解出来なくても大して問題はありません。 スタート地点:「平均を求めるプログラムを作る」あ

    lizy
    lizy 2009/06/13
    「ワンマン社長による経営」と「社員に権限委譲されている状態」というメタファーでどうでしょ。会社の規模(プログラムの規模)が大きくなるとワンマン経営では破綻する……と。オブジェクトよりエージェントか
  • Javaを教えろ.しかしオブジェクト指向は教えるな. - カレーなる辛口Javaな加齢日記

    http://d.hatena.ne.jp/t2y-1979/20090510/1241958803 先日、SIer友人が新人研修の講師として Java を教えるというお話を聞きました。会社側からは「Java を教えるのではなく、"プログラミング" を教えてほしい。オブジェクト指向は教えないでください。」との指示を受けたそうです。 「それはひょっとしてギャグで言ってるのか?」 ....日SIerの未来は暗いなあ. http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/t2y-1979/20090510/1241958803 id:fukken 期間が限られているなら、文法的事項を設計思想より優先すべきなのは自明。「オブジェクト指向は教えるな」ではなく「オブジェクト指向とか抜かす前に義務教育レベルの事をきちんとやれボケ」だと思う OOPは

    Javaを教えろ.しかしオブジェクト指向は教えるな. - カレーなる辛口Javaな加齢日記
    lizy
    lizy 2009/05/15
    正しいかどうかは別にして気持ちは何となく分からないでもない。でもそれならJavaではなくCでアルゴリズムを実装させるなんて方がよいかも|最初からoopを教えた方が良いのかどうかは興味深いところ