「オブジェクト指向」を含む日記 RSS

はてなキーワード: オブジェクト指向とは

2020-05-29

anond:20200529141931

オブジェクト指向なんか止めろ、デザインパターンなんて意味ない

どこにそう書いてあるのでしょうか。

anond:20200529141338

オブジェクト指向なんか止めろ、デザインパターンなんて意味ない、って言ってる人をスマホアプリ開発に突っ込んだらどうなるのかね

ネイティブAPIオブジェクト指向ずぶずぶだし、そんなのは多分使いたくないわけじゃん

変なフレームワークかに走るんかな

2020-05-28

anond:20200528082941

あなたの言う通りだよ。

カプセル化という言葉を知っていればカプセル化を使いこなせるわけじゃないけど、だからといってカプセル化という言葉すら知らない人が使えているはずがない。そんなヤツは論外。ただの無知

からオブジェクト指向について全く無知なのかそうでないのかの判別には使えるね。そういう試験だよね、これは。

本当のオブジェクト指向プログラミングをお見せしますよ

CやC++オブジェクト指向とか何かの冗談ですか?

smalltalkを入れてきてください。

本当のオブジェクト指向プログラミングをお見せしますよ。

anond:20200528080145

UMLについてはまるっきりアホだと思うから多めに見といてあげるんだけど

オブジェクト指向カプセル化うんぬんが不要ってほうがわけわからない。

オブジェクト指向理解してるかどうか計る上で、カプセル化って言葉は知らないけど

カプセル化意識して設計コーディングできることなんてあるのかな?

2020-05-27

オブジェクト指向が分からないあなたへ

どうも、都内の某企業に勤めるフルスタックエンジニアです。この記事では、ITの非専門家に向けて、オブジェクト指向解説をしたいと思います

小学生プログラミング教育が開始されたり、AIIoTなどの技術が身近になった今日オブジェクト指向理解しておくことは極めて重要です。なぜならば、オブジェクト指向ITエンジニアとっての「共通言語」であって、今やあらゆるソフトウェア技術オブジェクト指向の上に成り立っているからです。したがって、オブジェクト指向理解すれば、ITのすべての分野の基礎が身についたことになります。難しい概念がいくつか出てきますが、分かりやす解説するので頑張ってついてきて下さい!

オブジェクト指向とは

まず、オブジェクト指向とは何かを解説します。オブジェクト(object)とは、「モノ」のことです。言い換えれば「モノ指向」です。つまりコンピュータのようなバーチャル対象ではなく、現実のモノをモデルプログラミングしようというのが、オブジェクト指向定義です。この考えは、今流行りのIoT(Internet of Things = モノのインターネット)にも取り入れられ、爆発的に影響力を増しています

モノという考え方は、18世紀哲学者カントに遡りますカント純粋理性批判において、理性と経験によって認識できる以前の「物自体」という概念提唱し、大陸合理主義イギリス経験主義を統一しました。オブジェクト指向におけるモノとは、カントのいう物自体です。したがって、オブジェクト指向世界の真理を記述できます。そのため、コンピュータというバーチャル世界を超えて、IoTを作ることが可能になります

現代プログラミング言語オブジェクト指向サポートする最も代表的言語Javaです。これに対して、CやC++といった旧来の言語関数型言語といい、現在では顧みられることはありません。また、JavaMicrosoftであるC#や、Javaに組み込んで使うマクロ言語であるJavaScriptなどもオブジェクト指向言語であり、プロエンジニアは好んでよく使います。一方、学生向けの教育用言であるPythonRubyなども、一応オブジェクト指向サポートしています。これらはプログラミング入門には適していますが、実務で使われることはありません。

オブジェクト指向の三要素

オブジェクト指向で最も重要な要素は

の3つです。これらを駆使することで、食卓から宇宙までを豊かにするIoTを作ることが可能になるのです。一つ一つ解説していきます

カプセル化

カプセル化とは、実装利用者から見えなくすることです。

たとえば、ソフトウェア脆弱性があったとしても、カプセル化をしていれば、利用者からはその脆弱性は無いように見えます。したがって、オブジェクト指向で作られたソフトウェアには、セキュリティ上の問題存在しません。

また、IoTを用いていない従来の家電製品などは、ボタンがたくさんあったりして操作がとても複雑です。カプセル化を応用すると、この操作を全く包み隠してしまっても、機械が使えるようになりますiPhoneスマートスピーカータッチパネルや声認識などで操作できるのは、カプセル化のおかげです。逆に、ガラケーボタンがたくさんある家電製品などは、オブジェクト指向(=IoT)で作られていません。

継承

継承とは、あるオブジェクト性質を別のオブジェクトが引き継ぐことです。

たとえば、人間は「歩く」「喋る」などの動作を行え、鳥は「飛ぶ」「鳴く」などの動作が行えますオブジェクト指向世界では、鳥を継承することで、人間が飛んだり、鳴いたりすることができるようになります。これを応用したのが、VRVirtual Reality=仮想現実)です。

また、iPhone携帯電話であるにも関わらず、ツイッターをみたり、アマゾンで買い物ができたりするのもオブジェクト指向のおかげです。つまりiPhoneツイッターアマゾン継承しているのです。それだけではなく、iPhone時計や財布、メモ帳など、現実世界の多くのもの継承しています

ちょっと抽象的になりますが、この考えを突き詰めると、次のような応用が生まれます。将来必要となるすべての機能実装したオブジェクトを一度作っておけば、後続の開発者はそれを継承するだけで、新規の開発なしに新機能を追加することができます。このような性質を「再利用性」といい、ソフトウェア開発では極めて重要な考え方となります継承はこの再利用性をもたらすために、ソフトウェア開発のスピードを爆発的に加速させ、現代ITの発展の原動力となりました。

ポリモーフィズム

ポリモーフィズムは、日本語では「多態性」と言います多態性とは、読んで字のごとく、多くの状態を持つということです。

オブジェクト指向では、多くの状態を持つことができます。一方、C言語などの関数型言語状態を持つことができません。関数型言語では、プログラムを関数(つまり入力と出力をもつブラックボックス)の合成として記述します。関数は、中学校数学で学んだように、入力に対して出力が一意に定まるので、状態を持つことができないのです。この制約を「参照透過性」と言います

オブジェクト指向では、参照透過性の制約がないため、プログラマは自由コードを書くことができ、関数型言語と比べて遥かに生産的です。また、上に述べたように状態を持てるということは、プログラムの入力に対する出力を無数に持てるということです。この応用がAI(Artificial Intelligence=人工知能)です。AIが、まるで人間が考えたかのように答えを出すことができるのは、ポリモーフィズムにより無数の出力を得ることができるからなのです。

おわりに

全体的に難解な記事となってしまいましたが

部分的にでも理解すればIT世界を見る目が変わるはずです。

うさんくさい情報に惑わされずに、このような本物の知識を身につけ

そして、皆さんにはIT未来を見通せる人材になっていただければと思います

2020-05-26

anond:20200526184755

本人がポエムつってんだからポエムでいいじゃん。そんなの人それぞれだろ。オブジェクト指向カプセル化だなんて深淵概念だし、この問いなんて哲学的であるとさえいえる。だいたい、カプセル化とは「データとそれを操作する手続を一つにして,オブジェクトの内部に隠ぺいすること」である、なんていったら、怒られるんじゃないか隠蔽ってなんだよ。トートロジーかよ。この問題に正解したとしてカプセル化を使いこなせるわけでもないし、分かった気にさせるこけおどしでしかない。そういう霞みたいな文章ポエムつんだよ。

※ ただし一般的にはポエムという語にはそういう下卑た意味合いはないと思います。 悪い意味ポエムという言葉を使うのは確かによくない風潮だと思うので今後は控えるようにします。俺は元増田ではありませんが。

情報処理技術者試験なんて何の役にも立ちません

情報処理技術者試験資格を取っても実質的に得るものはありません。「実質的に」というのは、技術者としてのスキル向上に貢献するということであり、「報奨金が貰える」とか「履歴書に書ける」などの技術無関係ものを含まないということです。

なぜ、情報処理技術者試験が役に立たないのかと言えば、出題内容が表面的な知識問題に極端に偏っており、本質的理解を問うていないからです。たとえば、オブジェクト指向の三要素に「カプセル化」「継承」「ポリモルフィズム」がありますが、これらを御題目のように唱えていても何の意味もありません。しかし、情報処理技術者試験ではこれらの用語さえ覚えておけば、しっかり点になります

オブジェクト指向におけるカプセル化説明したものはどれか。

  1. 同じ性質もつ複数オブジェクト抽象化して,整理すること
  2. 基底クラス性質派生クラスに受け継がせること
  3. クラス間に共通する性質抽出し,基底クラスを作ること
  4. データとそれを操作する手続を一つにして,オブジェクトの内部に隠ぺいすること

https://www.fe-siken.com/s/kakomon/19_haru/q42.html

こんなのは単なるポエムであり、これが解けたところでコードが書けるわけでも、良い設計ができるわけでもありません。

数学で喩えれば、「加減法」とか「代入法」のような用語を暗記して、具体的な連立方程式の解き方は分からないようなものです。

ひどい問題は挙げればキリがありません。

UML2.0において,オブジェクト間の相互作用時間の経過に注目して記述するものはどれか。

  1. アクティティ
  2. コミュニケーション
  3. シーケンス
  4. ユースケース

https://www.ap-siken.com/s/kakomon/22_haru/q44.html

図の名称を答えさせる問題。図を読み取らせる問題なら、まだ理解できますが。そもそもUMLなど別に技術者として知っておくべき知識でもありません。

要求分析から実装までの開発プロセスを繰り返しながら,システムを構築していくソフトウェア開発手法はどれか。

  1. ウォータフォールモデル
  2. スパイラルモデル
  3. プロトタイピングモデル
  4. リレーショナルモデル

https://www.fe-siken.com/s/kakomon/23_aki/q50.html

これも、こんな分類自体、覚えたところで何にもならないわけですが、その用語を答えさせる問題いかに、この試験エンジニアリングプロジェクト管理本質関係いかがよく分かります

極めつけはこれ。

次の画像符号化方式のうち,携帯電話などの低速回線用の動画像の符号化に用いられるものはどれか。

  1. JPEG
  2. MPEG-1
  3. MPEG-2
  4. MPEG-4

https://www.fe-siken.com/s/kakomon/17_haru/q52.html

地方公立中学校定期試験レベルのひどい問題です。出題者は、1だの2だの4だの7だのといった数字語句対応を覚えることが重要だと思っているのでしょうか。

情報処理技術者試験で測れる能力は以下の2つだけです。

  • 内容の理解はともかく、ある用語を「聞いたことがある」かどうか。
  • 150分間、落ち着いて椅子に座っていられるかどうか。

まり、ある種の発達障害ではない意識高い系ポエマー認定するための試験であり、そもそも技術者のための試験ではないということです。あとは、中小企業診断士などを受ける人が試験免除を獲得するためとか。

そもそもコンピュータプロジェクトマネジメントの技術を、資格試験勉強しようというのがピントがズレています。それらは既に良質な解説書が豊富にあるのだから、それで勉強すればいいのです。

2020-05-24

エンジニアになれたけど、なれなかった

放課後、親に無断で学校先生精神科のような場所に連れられ、「それは鬱ではなく、思春期による一時的な悲しみではないですかね」と医者に言われてから10年が経った。

ブコメを見始めたのもその頃からだったかな。

あの頃から相変わらず、成長していない。

大学では情報系の学部卒業した。

プログラミング勉強することは好きだった。

高校での成績は上位10%に入っていて、4年で卒業することが難しいと言われた大学もなんとか4年で卒業できたので、決して頭は悪くはなかった。

ただ、人との会話は不得意で、友人を作ることはできなかった。

でもそういった人々はこの世にある程度はいて、みんなどこかで働けているかきっと大丈夫だと自分に言い聞かせていた。

面接はことごとく落ち、大学卒業後も内定を貰えずそろそろ死のうかと検討した矢先に運よく入社したところは、後になって知ったが定着率が低い会社だった。

そこで気付いてしまったのは、自分エンジニアに向いてないどころか、社会人に向いてないことだった。

メール

一通書くのに最低でも30分-1時間はかかった。(相場が分からないけど長い気がする)

顧客メールを読んでも、内容がふわっとしていて意味理解できないことがあった。

ミーティング

何を話せばいいかからなかった。

相手が何を言っているかからなかった(要求だったり、用語だったり)。

なので何を実装すればいいのかも分からなかった。

からないことをそれとなく伺ってみたら「お宅の会社はその程度なんですね?分かりました」と言われ、会社の信用を下げてしまった。

その後、その顧客とのメールに怯える日々が続き、毎日嘔吐した。

電話

相手が何を言っているかからなかった。

自分自身も何を言っているのか分からなくなった。

周りに社員がいる中、泣きながら電話した。

上司ドン引きしていた。(見ていないけど、きっと周りも)

電話業務は生涯向いていないな、と思った。

実際の業務

課題にあったようなプログラミングではなかった。

あんなに自信があったプログラミングだったのに、小規模システムコードでさえ想像を超える入り組み具合で読めなかった。

というのも、フレームワークといったものにも触れたことがなかったり、インフラ側は全く学んでこなかった。

オブジェクト指向」というような概念的部分はテストの為に暗記したことはあれど、実際に言語の特徴や構造の違いを理解できたことはなかった。

フロントエンドバックエンドの違いもよく分からず、自分が得意だったものがなんだったのか分からなくなった。

何よりも、自分には新しい知識インプットする力が驚くほどになかった。

最終的には、自分キャパを超える残業上司による罵詈雑言で数秒に一度頭がまっしろになって仕事に手がつかない状態になり、辞めた。

能力のある社員もすぐに辞めていることから会社にも改善すべき点はあったのだろうが、それが実際の問題ではなかった。

自分能力の無さはどこに行っても通用しないんだろうな、ということが分かってしまった。

スポーツをしていた人が採用されるのを話に聞くが、その理由が初めて分かった。

コミュ力も体力あるし、ちょっとやそっとのことでは根を上げないからだ。

自分コミュ力もないし、メンタルも弱く、自己肯定感もなく、唯一自信のあった学歴技術力も実際には意味をなさなかった。

私の考えはあまりにも浅はかで、高校大学でしっかり勉強をしていれば、あとは会社からサポート仕事をこなせるようになると思っていたことだ。

こんな人にどんな仕事も任せられるわけがなかった。

一応自分なりに努力はしたつもりだった。勉強も、精神的な面においても。

在学中や就業中に精神科に通い、鬱やPSTDと診断された。いろんな薬を試したことはあるが、薬の副作用の眠気や吐き気で通常時より無能になったので向いていなかった。

カウンセラーは話を聞いてくれることは有難いが、危険人物として扱われたりしたことがあったり、何の解決にも至らないのでお金もったいないな、と個人的に思った。

大学卒業して引きこもっていた頃、会話の練習をするためにひきこもり当事者会的なイベントに参加した。

それぞれ背景は違うが、頑張って外出をして知らない人と会話してみよう、と集まった人たちは皆、優しかった。

不審者のようにそわそわしてしまってもいじめられることはないし、互いが傷つくことのない当たり障りのない会話ができたし、人とゲームができて楽しかった。

同じ境遇にいる方たちと過ごして一番に感じたのは、自分はやはりこちら側の人間なのではないかということ。

学校インターネットで人と会話をして友人を作れるような人や、仕事をこなせている世間一般の人たちのようには到底なれない。

社会不適合者が運よく社会復帰することができても、精神が弱い上に周りに溶け込めない為、続きはしない。

少し前にとある記事に「生涯バイトなんて、将来のことを考えているの?」というニュアンスブコメがあったが、どんな形態であれ生きる為に働き続けてきちんと自立できている人がどれだけ偉いことか、と思う。

もしいつか真っ当な人間になれたら、あの時精神科に連れてってくれた先生に御礼を伝えようと思っていたけど、未だに連絡が取れていない。

生活保護の条件にも当てはまらいから、貯金が尽きたら死んでゆくと思う。

全然関係ないけど、昨日はスター3つもらえて嬉しかったの。ありがとうね。

2020-05-23

anond:20200521175300

10年超のプログラマやってるものだけど自分の成長過程を書いてみよう

  • この後にもいろいろあったが面倒になってきたから省略。しょぼいゲーム会社就職する。
    • JavaScript でなんか色々作る
    • Python でなんか色々作る
    • C# でなんか色々作る
    • はてなを始めたり

2020-05-22

anond:20200521200340

 話が違う。一行目は半ば真実で、理由は四つ。

プログラムによる既存業務効率化は目に見え易いので、非効率だった多数の人材自分匹敵する能力を持っていると勘違いやすい点。

オブジェクト指向プログラミング自体事象抽象化や細分化、項目化といった思考必要で、物事数学的把握が必要な点。

効率化によって職を失う人間はこの先も増えるが、自分達の仕事は減らないだろうという漠然とした思い込み

定量的数学的把握は説明がしやすく、業務プレゼンへの応用は楽だが、数値から漏れた部分や把握できないイレギュラー無視しがちである点。

4つ目は敢えて言うなら文系素養必要で、これを持っている人間が一流。プログラムにできない(し辛い)部分を把握するプログラマー自分仕事無意味さを認める事になるが、これを抱えたまま仕事をするのはメンタルの面からも大変。他に挙げるとすれば、専門用語が多く仲間内で親交をする傾向が高いので外部からの目に気付き辛い点、一種官僚化だろうか。

それから6つ目(笑)と言ってもいいかもしれないが、プログラムその物の社会的意義まで頭の回っていない人間が多い印象はある。業務効率化による収益増は当然、自分給料に反映されるが、そこから漏れた部分の責をプログラマは問われない。

 一例を挙げれば、(文書に限り)郵便事業が縮小による情報伝達の効率化という恩恵は万人が受け、効率化に伴う収益電子化業者郵便事業者と分け合ってきたろうと推測されるが、電子化業務従事者は封書葉書印刷業者や納品業者インク製造業製紙業界までに頭を回す事が出来ない。もっと言えばパルプの精製や原料の輸出入にも関わり、産業としてはまさしく革命が起きていると言っても良いが、それを自分仕事に係わる物だと捉えているプログラマーはまずいまい。

負の側面として電子文書は膨大な労力をかけてフォントや外字の整理を今も強いられ、ファイルフォーマットや送受信データ形式の細かな不整合放置したまま進んできたが、それに関して電子化業務から社会への問いかけといった視点はなきに等しい。加えて、数値化不能な(文書に限る)郵便業務の益は、配達員顧客コミュニケーション地域事情の把握、高齢者福祉に関わる面にまで及ぶのであり、それをモニターの前にいるプログラマが担うのは不可能である


 二行目に関しては特権意識とは全く関係がなく、言語による思考を行っていない人間言語で話しかけるのが間違っているのではないか、と考える。

絵描き作曲家の例を挙げれば理解は容易である。これらは頭を使っている、いない、の問題ではなく使い方が違うだけの話だ。

 そもそも、頭を使うの対義は身体を使う、になるのかしれんが、ヒトがどちらか一方だけを使うなど有り得ないし、その活動比重が脳に偏っていれば偉い、と言うのは思い上がりである

anond:20200522100433

できる人とできない人に分かれる、というのはどうだろうか

変数がわからない人

変数はわかるが関数がわからない人

関数はわかるがオブジェクト指向はわからない人

ジェネリクス関数型、モナドポインタ再帰、非同期処理、などなど、人によってつまづくポイントは違う

anond:20200521225730

プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。

JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScript改名されたり、規格を話すときECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。

Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。

Javaは初期のころオートボクシング / アンボクシングもなく、ストイックオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコード簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である

PHPWebネイティブ言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能初期化していない変数最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列数字臨機応変に切り替える機能もあり(今もそうかは知らん)、数字文字比較比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。

C#Hello Worldくらいしかいたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。

C++黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーション腱鞘炎になることもない。PC Unixにも最初から環境インストールされているか簡単インストールできるので毛嫌いせず使うとよいと思う。

Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。

CSS...はプログラミング言語なのか?そうか。

TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。

Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるからカーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。

これ以下のランキングのもその気になったら書こうかな。

2020-05-21

なせプログラミング界隈の知的レベルは低く見えるのか

たとえば、DIDependency Injection)で検索すると、すごい数の解説記事が出てくる。それも、プログラミング初心者向けではなく、開発者向けに。

だけど、ぶっちゃけDIなんて、解説必要なほど難しいこととも、内容のあることとも思えない。

これって、アレと同じなんだよな。数学でいつまでたっても、(-1)×(-1)=1になるたとえ話とか、0.99...=1の説明かに夢中になってる人たち。普通に数学ができる人は、そんなのはさっさと卒業して内容のあることやるものなんだが。

おそらく、理解力の低いプログラマと、コードは書けないがオブジェクト指向は大好きなポエマーの相乗効果で、こういう話題が盛り上がったんだろうなー。

2020-05-20

何十万もするプログラミング講座

二日で20万円のJava講座。

「この内容でこの金額だすなら、入門書10冊買ったほうがよくね?」みたいなことを言ったら「お前みたいに暇人じゃないんだよ。俺の収入時給換算で〇万なんだぞ」みたいなあおりを受けたことがある。

みたいな感想をもった。

2020-05-15

C言語オブジェクト指向ポリモーフィズム的なことをやりたいときに、関数ポインタを用意しておいて、条件によって代入する関数を変えるとか、あるんじゃないの?

2020-05-05

一時期やたら持て囃されてたReduxも「これオブジェクト指向の糞面倒な再発明じゃね?」って気づかれつつあり……

2020-04-09

ねぇXちゃんさぁ。なんでこんな動的なオブジェクトをstaticにしてんの?

これさぁ、そこそこ重いけどさ、セッションごとに生成される一時的インスタンスで持ってるだけでも十分パフォーマンス的に問題ないよね?

なんでプロセス間でわざわざ共有してんの?

これってネットワーク接続管理してるオブジェクトだよね?

ネットワークリソースつったって利用者たかだか数百人でしょ?

その中でリソースを同時利用するってゆってもたかだか十数人でしょ?

プロセス内でこのオブジェクトを全共有することでリソースの削減なんてたかが知れてるよね?

それをわざわざプロセス内でこのオブジェクトを全共有ってマジ管理できるの?シンクロナイズドとか書いてっけどさぁ?削減できるリソースの量に比べて超危険すぎねぇ?

コミットログ見たけど、ぜんぜん性能問題とかと関係のない問題修正だったみたいだけど、なんでこんな危険コードになったわけ?

Xちゃんさ、そもそもコードが品雑なんだけど、これエンプラJava案件なのよ

なんでCの組み込みコードみたいにif文の鬼ネストとか、引数に空のList渡して破壊的に値を設定するような、読みづらいコード書いてるわけ?

Listくらい普通に返り値で返しなさいよ…

状態管理もif文の鬼ネストやめて専用クラスとかEnum使ってコマンドパターン対処しなさいよ

もしかして、Xちゃんオブジェクト指向にピンときていないのかな?

ちゃんはどっちかってーっとPHPパーなので、ゴリゴリオブジェクト指向はそりゃ専門じゃないよ

それでもさ、interfaceとか使って、各処理の実装を切り分けるとか、やりようはいくらでもあるじゃん

あと不要なnullチェックも多すぎです。コンストラクタ初期化保証されているfinalフィールド値がnullかどうかなんて確認しないでください

ユーザー入力DB入力環境リソースとか、外部の情報起源じゃない変数がnullとか、明らかなバグなんだから暗黙的なぬるぽクラッシュさせましょう

こんなバグが出荷に乗ることなんてありえません。わざわざ専用のエラー処理で専用の例外飛ばすとか無意味です。

いちいちなんか冗長で複雑なんですよねぇ。

ちゃんみたいな若造が、ベテランのXちゃんにこんなこといいたくないけどさ、

Xちゃんコード。どこか昭和匂いがするんだよねぇ。悪い意味で。

Xちゃん名誉のために言っておくと多分Cプログラミングうまいんじゃないかな?

そんなソース読んだこと無いから知らんけど

2020-04-04

anond:20200404004629

門外漢だけど、オブジェクト指向プログラミングでは同型であってもそれぞれインスタンス化されたら別オブジェクト扱いになるので、同型のオブジェクトは全て同一視しろという意見がよくわからない。

例えばオートマトンとか同じオートマトンでも複数あってそれぞれ状態が違うとか当たり前の話に思える。

2020-03-11

anond:20200311082445

書き直す事を解説した本は聞いた事がないな。

ただ、増田も知ってるかもしれないけど、一般的オライリーの本ははずれは少ないって言われてるから探してみればあるかもしれない。

日本出版社が出したオブジェクト指向の本を読んだ事はあるけど、今身になっているかと言うと…よくわからん。)

あとお節介かもしれないけど、書き直すならフレームワークを使った方がいいと思う。

勝手想像申し訳ないが、属人的ソースコードから書き直したいと思ったのだと思う。

増田知識を積んでスクラッチで作るのもいいけど、それもまた属人的ではあるから色々な人が作って洗礼されたフレームワークを使う方が良い。

おそらく良いソースコードからオブジェクト指向体現的に分かると思う。

anond:20200311070137

オブジェクト指向の本。質の悪いブログだと「動物スーパークラスで犬がクラス・・」系の解説なっちゃうよ。ていうかOOPじゃないコードOOPコードに書き直す教則本的なの、ない?

2020-03-05

anond:20200305152208

増田だけど

そういう人は、明確に「使う能力」が低いんだよね。合理的に考えているつもりで、相手感情のある人間だと考える「合理性」を欠いている。

人間相手にしてるのに人間の内的ステータス無視するなんて、オブジェクト指向ならバグよw

これな

理屈っぽい人間って理屈っぽいだけで合理性に欠いてるんだよな

どう考えたって人材使い潰さないで一人ひとりに余裕もたせたほうがなんかあったとき耐えられるのに理詰めで潰したりね

anond:20200305145901

人間相手に「自分レベル」を期待してしまうんだよね・・・特に地位のある人だと、それを正解だと考えてしまう。

あなたの言っている人は、きっとさらに「自分で切り開いてきた」という自負のある人なのでしょう。

そうなると身内としては実に厄介で、正論だしレベル高いしで「じゃあ俺が悪いとしか・・・」となってしまう。言うこと変わっても、前と矛盾はしていながら正論ではあったりね。

そういう人は、明確に「使う能力」が低いんだよね。合理的に考えているつもりで、相手感情のある人間だと考える「合理性」を欠いている。

人間相手にしてるのに人間の内的ステータス無視するなんて、オブジェクト指向ならバグよw

ログイン ユーザー登録
ようこそ ゲスト さん