タグ

ネタとオブジェクト指向に関するmohnoのブックマーク (17)

  • 【C#】SOLID原則を学ぼう - Annulus Games

    今回の記事はオブジェクト指向プログラミングにおける設計の基、「SOLID原則」について。 ある程度プログラミングの文法を知っていれば、動作するコードを書くことは可能です。しかし、より良いコードを書きたいのであれば、文法の知識だけではなく、設計に関する知識も必要になってきます。 特にUnityでは、適当にコードを書いていくと目も当てられないようなスパゲッティーコードが容易に出来上がります。「とりあえずシングルトンにすりゃいいや!」みたいなノリで「何とかManager」クラスを作りまくった結果、「あれ?この処理どこに書いたんだっけ?」という状況になったこと、誰しも一度はありますよね…? 今回は、そんなクソk…良くないコードを書かないための設計原則である「SOLID原則」について紹介します。記事内のコードはC#で記述しますが、言語に関わらずSOLID原則は広く応用の効く考え方なので、是非とも覚

    mohno
    mohno 2023/05/28
    「こんなクソデカクラスは破壊してバラしてしまいましょう」←久々に見たな。「SOLID原則」というのか。たとえC#を使っていても、こういう現場には行きたくない。/Square is a Rectangle が成立しないのも嫌い。
  • オブジェクト指向がわからないあなたへ

    どうも、都内の某企業に勤めるフルスタックエンジニアです。この記事では、ITの非専門家に向けて、オブジェクト指向の解説をしたいと思います。 小学生のプログラミング教育が開始されたり、AIやIoTなどの技術が身近になった今日、オブジェクト指向を理解しておくことは極めて重要です。なぜならば、オブジェクト指向はITエンジニアとっての「共通言語」であって、今やあらゆるソフトウェア技術がオブジェクト指向の上に成り立っているからです。したがって、オブジェクト指向を理解すれば、ITのすべての分野の基礎が身についたことになります。難しい概念がいくつか出てきますが、分かりやすく解説するので頑張ってついてきて下さい! オブジェクト指向とはまず、オブジェクト指向とは何かを解説します。オブジェクト(object)とは、「モノ」のことです。言い換えれば「モノ指向」です。つまり、コンピュータのようなバーチャルな対象では

    オブジェクト指向がわからないあなたへ
    mohno
    mohno 2021/04/21
    どこからツッコめばと思ったら……↓うわぁ、はてブで気付いた。「全部うそ」
  • 学生の頃オブジェクト指向にハマって継承を繰り返していた後輩が泣きついてきた時にあの人が現れて解決した話

    垂木いすゞ @Isuzu_T このアカウントは誰向きでもありません。発言を読んだことに起因する不快感に関して当アカウントは責任を負いかねます。フォロー・リムーブ・リプライはご自由に。挨拶不要。反応するかは気分次第です。このアカウントはエロ、愚痴、政治、アニメ実況、不謹慎ジョーク、その他一切の言動を自重しません。サイバーイグアナ氏フォロー中 垂木いすゞ @Isuzu_T 学生の頃の話だ。 当時、僕が所属していたプログラミングサークルの後輩が、オブジェクト指向にはまっていた。僕はオブジェクト指向がなんなのかよくわからず、構造体に毛の生えたような使い方しかしていなかったのだが、後輩は継承にドハマリし、あらゆるコードで継承を使っていた。 2021-02-23 17:07:05 垂木いすゞ @Isuzu_T 「継承って使いすぎると良くないって聞くけどね」 僕はそう言ったが、聞き齧りなので理由は説明で

    学生の頃オブジェクト指向にハマって継承を繰り返していた後輩が泣きついてきた時にあの人が現れて解決した話
    mohno
    mohno 2021/02/25
    「寺生まれのTさん」を知らなかったが、かつてクラスやメソッドをやたら細分化しようとしていた人がいたのを思い出した→https://www.slideshare.net/MoriharuOhzu/ss-14083300
  • オブジェクト指向にメリットなんて存在しない|古都こと|note

    最近の新人は勉強熱心だ。新しく聞いた概念を貪欲に取り入れようとする様は、はたから眺めていても感心する。私なんて10年前に得た知識でなんとかごまかしごまかし生きているというのに。 もちろん様々な場面で「躓き」は発生する。有名どころではポインタや非同期処理が初心者キラーだ。そして一番の初見殺しは……オブジェクト指向だ。 オブジェクト指向に殺されたプログラマは数知れない。新人からベテランまで、たいてい皆殺しにされている。 なぜそれほどまでに多くのプログラマを混乱させるのだろう。やネットではオブジェクト指向の数々の多大なメリットが列挙されており、実に素晴らしいパラダイムに思える。しかし教通りに組んでみてもどうにもしっくりこない。当に自分はオブジェクト指向のメリットを享受できているのだろうか? 種明かしをしよう。実はそれらメリットとやらは全部全くの嘘で、オブジェクト指向にメリットなんてものは存

    オブジェクト指向にメリットなんて存在しない|古都こと|note
    mohno
    mohno 2019/01/01
    「工作機械がなくてもノコギリとカナヅチがあればいいだろ」みたいな感じがあるなあ。それでいい場面があるのは事実だが、マルチパラダイムって、普通にオブジェクト指向が含まれてるよね。
  • お前は絶望的にプログラミングに向いてないから諦めて刺身にタンポポ乗せる仕事でもやってろ|古都こと|note

    刺身にタンポポ乗せる仕事ってきょうび言わねーな……。 プログラミングとは、勉強も運動もスマブラも下手なクソ隠キャ中学生が「俺もパソコン1台で凄い技術者になって…!」とワクワクしながら始めるものの思ったより普通に難しいし学校の試験で出たような知識要求されるしで3日で放り投げ、10数年後にnoteで「お前らは絶望的にプログラミングに向いてないからやめろ」なんて記事を書くだけのザコに成り下がる、夢と希望に溢れた技術である。 近年ではパソコンのスペックの上昇にともないできることも増え、どこのご家庭にもあるRTX2080で簡単にディープラーニングもできるようになった。Unityで3Dゲームをバリバリ動かしてもブルースクリーンは出ない。やっぱ世界を広げるのは小賢しい知恵よりもスペックの暴力だぜ。 開発環境や言語も選択肢豊富で、エディタもかつては有料クラスでも手に入らなかったような贅沢な機能が満載のもの

    お前は絶望的にプログラミングに向いてないから諦めて刺身にタンポポ乗せる仕事でもやってろ|古都こと|note
    mohno
    mohno 2019/01/01
    「刺身にタンポポ乗せる仕事」←素で知らなくて「あれは食用菊ですよ」と突っ込んだ思い出が。「dist = distribution」というコメントを見て驚いてる。「プログラミング以前の「何か」」←とりあえずタイピング。
  • オブジェクト指向プログラミングとは結局なんなのか | 黒曜の吹き溜まり

    この記事は第2のドワンゴ Advent Calendar 2015の5日目です。 ちなみに前日は@deflisさんでした。 先日の記事で分かる通りドワンゴ社員()なのですが、まぁ@mesoさんが「厳格な管理とかめんどくさいので、元社員も参加すればいいんじゃないかな。」とか言ってるしお目こぼし頂きたく… 去年のアドベントカレンダー記事は「関数型プログラミングとは結局なんなのか」というタイトルで、関数型プログラミングという語が何を指していて何を指していないのか、みたいなことをなるべく平易にまとめました。 なので今年は「オブジェクト指向プログラミング(以下OOP)とは結局なんなのか」という記事にしてみた…のですが、なにぶん語の指す範囲が広く、また自分も理解しきっているわけではないので、多少不正確な点があるかもしれません。 「関数型は流行りだけど、今更OOPかよ」とか思われるかもしれませんが、お付

    mohno
    mohno 2015/12/06
    最近は、CPU(頭脳)の動きで考えてしまうのが手続き型、ハード的な実装を離れて機能(クラス)で考えるのがオブジェクト指向、と思ってる。だからハードを知ってる人の方が前者になじみやすい。
  • すべてのソースコードが手元にあるのに不要な抽象化を行うのはよくない

    「よい」とされているプログラミング手法のひとつに差分プログラミングがある。クラスを継承して親クラスとの差分だけのコードを書けば、親ですでに実装されている機能はそのまま使えて、かつカスタマイズもできるというやつだ。 たとえばGUIのボタンをカスタマイズしてマウスオーバーするとなにかちょっと特殊なことを行うボタンを作りたいとしたら、ボタンクラスを継承して、マウスオーバーのイベントハンドラをちょいちょいとカスタマイズしてやればよい。差分プログラミングは大変素直でよいプログラミング手法のような感じがする。 よいのはよいと思う。 しかしこういういい例だけをみてそれをどこでも真似しようと思ってしまうと、不必要な抽象化を積み重ねる困ったプログラマになってしまう(そういう人は結構たくさんいる)。自分でプログラムを書く場合には、よくできたクラスライブラリやフレームワークをお手にして抽象化を行うのは、ほとん

    mohno
    mohno 2014/12/30
    “自分だけが使うコード”ということならそうだろうけど、そんな無意味な前提じゃないよね。「不要な抽象化をしてしまう」ような開発者がクラスライブラリに手を出すな、っていうならわかるけど。
  • https://qiita.com/kenokabe/items/9c650ec8bcb1418c596d

    mohno
    mohno 2014/12/30
    「宗教戦争」に例えれば「正解なんてない」わけで、宣言型はデバッグ実行しにくいとか、ずっと前からマルチパラダイムとか言われてたり、仕様の優劣より情報の多寡が問題だったりするし、決着なんかしないよ。
  • オブジェクト指向のカレンダー | Advent Calendar 2014 - Qiita

    About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)

    オブジェクト指向のカレンダー | Advent Calendar 2014 - Qiita
    mohno
    mohno 2014/12/09
    オブジェクト指向アドベントカレンダーは、なんか書籍紹介になってるのか。
  • 超絶分かりやすいオブジェクト指向入門 - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    超絶分かりやすいオブジェクト指向入門 - Qiita
    mohno
    mohno 2014/12/01
    何が書いてあるのだろうと思っていそいそ見てみたんだけど……。良書か知らないけど、なんかネガティブ感。
  • 問.Cでオブジェクト指向プログラミングを行なえ - 株式会社CFlatの明後日スタイルのブログ

    問.Cでオブジェクト指向プログラミングを行なえ。ただし「オブジェクト指向プログラミング」とは、次のような特徴を持つプログラミング技法であるものとする: オブジェクトの実装はオブジェクトのユーザーからは隠蔽される(カプセル化/隠蔽) 同一型のオブジェクトと同一メソッドを与えた時、実際のメソッドの動作はオブジェクトの内容により変化する(ポリモーフィズム/多態性) なお、ユーザーが既存のオブジェクトをカスタマイズして新たなオブジェクトを作成する機能は、必要ないものとする。 この問いの狙い よく、「オブジェクト指向プログラミング」と「オブジェクト指向言語」は混同されます。が、前者はプログラムを設計する上での考え方で、後者はその考え方を容易にソースコードに書けるような仕様になっている言語の事で、全く違うものを指しています。 その証拠を示すため、「非オブジェクト指向言語」たるC言語で「オブジェクト指向

    問.Cでオブジェクト指向プログラミングを行なえ - 株式会社CFlatの明後日スタイルのブログ
    mohno
    mohno 2014/10/20
    COMでも使うんかな、と思ったら、それは余談だった。こんな“独自”のOOP風実装なんてオアソビであって実用にならないし、この人も使ってないと思う。というか、実装でこんな苦労をしないためにOOP言語があるわけでね。
  • 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++にある、自動的に呼ばれるコンストラクター、デストラクターは存在しない。 かわりに、イニ

    mohno
    mohno 2014/10/02
    「C言語にクラスを追加する提案論文」「virtual関数やRTTIはない」←隠れた仮想テーブルなんて使わないって感じかな。OOP言語としては落第だが、これはこれでいかにもC言語らしくて、微笑ましい。
  • オブジェクト指向の法則集 - Qiita

    この記事は、故石井勝さんが1999年に書いた記事を Qiita に転載するものです。オブラブ(objectclub.jp)にて記事をホスティングしていましたが、現代でも十分に読める内容なので、たくさんの方に読んでもらいたいと思い、若干の編集(リンクとコンテキスト追加)を平鍋が行い、転載します。今でも、読みやすく、カジュアルな語り口のよい記事です。 オブジェクト指向の法則集(転載元:http://objectclub.jp/community/memorial/homepage3.nifty.com/masarl/article/oo-principles.html ) なお、この記事の他にも石井さんのオブジェクト指向やRubyに関する多くの記事をオブラブの「まさーるのページ」で読むことができます。では、以下に石井勝さん(旧メールアドレス masarl@nifty.com)の記事を転載します

    オブジェクト指向の法則集 - Qiita
    mohno
    mohno 2014/09/11
    その法則こそを日本語にしてあげたら、という気がしないでもない。
  • オブジェクト指向は禁止するべき - きしだのHatena

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

    オブジェクト指向は禁止するべき - きしだのHatena
    mohno
    mohno 2014/07/19
    オブジェクト指向が使えないようなプログラマは、開発するのを禁止すればいいんじゃないの?:-p
  • 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita

    あわせて読みたい 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 「オブジェクト指向プログラミング」と「関数型プログラミング」のたった一つのシンプルな違い あきらめるにはまだ早い!ソースコードの品質向上に効果的なアプローチ 2015年に備えて知っておきたいリアクティブアーキテクチャの潮流 この記事について この記事は新人向けの研修内容を再編集してお送りいたします。 ここで述べる内容はどのようにして現在のプログラミングスタイルが生まれてきたかを理解することで、よりよいプログラムを書くためのもので、正確なソフトウェア工学の歴史を学ぶためのものではありません。正確な歴史を把握したい場合は、原典をあたるようにしてください。 また、想定している読者は「よくあるオブジェクト指向プログラミングの学習」を既にし

    新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita
  • ペンギン許さん - hitode909の日記

    たとえばペンギンクラスを作るとき、まずペンギンクラスを定義する。と言うと、いや待ってください、ペンギンは鳥ですから、鳥から継承させましょう、とかそういう話になる。 継承すると、ポリモーフィズムという技を使えて、鳥を受け取る関数に鳥でもペンギンでも渡せるようになったり、鳥の機能をペンギンが獲得して、足の数は?とか聞くと2とか返ってくる。 便利だけど、鳥でもペンギンでも共通して足の数を知りたいアプリケーション以外でそういうことをし始めると、きりがなくなって、哺乳類クラスが登場したり、生命の樹みたいになって最悪の継承ツリーが出来上がる。 アプリケーション的に意味ない限りは、クラスを作ったり継承したりしてはいけない。そのうち役立つかと思って作りたくなる気持ちは分かるけど、必要になってから作れば良い。大体の場合、後世の人たちが、このクラスなんであるんだろって迷うのにかかるコストの方が高い。

    ペンギン許さん - hitode909の日記
    mohno
    mohno 2014/05/05
    マジレスすると、それでもペンギンを扱う必要があるなら考慮すべきだろうし、ペンギンを扱う必要がないなら「ペンギン不可」の鳥クラスにしちゃえばいいんじゃないかな。
  • とある福井のstaticおじさん

    当にこんな人いるんですね…ちなみにこの話を見た時に思い出したのは ■press enter 「高慢と偏見」 http://goo.gl/DaAsT でした。

    とある福井のstaticおじさん
    mohno
    mohno 2014/04/18
    こういう緩い環境で仕事して給料もらいたい:-)
  • 1