Togetter/min.tを安心してお使い頂くためのガイドラインを公開しました。
2019年3月24日

「脳から社会を覗く」熟練賢者エンジニアが語るオブジェクト指向の本質とは

まとめました。
1
Seiver @Seiver17808307

僕が10年ぐらい前、Rails2を触った時は時代にもあってたし、新鮮だった。SPA、RestfulAPIなどが主流になると、Railsは不要な部分が多い。そもそもMVCをトップ階層にしていることもオブジェクト指向、ドメインの考え方からしても破綻している。 その旧さを感じない人には疑問を感じる。

2019-03-22 02:47:52
Seiver @Seiver17808307

@1R_hermit オブジェクト指向とか意識すると訳が分からなくなるので、グループ化するものという認識からスタートしてみてください。 正直、オブジェクト指向は定義が曖昧だし、ただのクラスに纏わる手法のパッケージ名に過ぎません。クラスをどう使えばいいかを勉強するといいと思います。

2019-03-17 14:14:05
Seiver @Seiver17808307

#オブジェクト指向 というか、クラスの使いこなし、っていう書籍名の方がしっくりくる。

2019-03-16 23:39:01
Seiver @Seiver17808307

#オブジェクト指向 とか英語をカタカナすることで、その概念が指し示すものの理解が曖昧なまま、思考停止してしまっている。 個人的に英語の言葉のカタカナ化は、理解も翻訳にもなってないと感じる。森鴎外を始め明治から昭和の時代の哲学者や文学者が英語を漢字に置き換えた思考、それが大切。

2019-03-16 23:38:04
Seiver @Seiver17808307

#オブジェクト指向 はクラスが無くても、C言語でも設計できるのはよく言われる。言語に根ざしたものではなく、設計の発想なので。ただ、文法として、クラスや構造体がないと厳しいのかもしれない。

2019-03-16 23:35:02
Seiver @Seiver17808307

#オブジェクト指向 という言葉が先行したが故に、幽霊を掴むかのごとく、曖昧なものについて色々説明し、結局、曖昧だから論点も個々の手法の役割、そして、最も大切なことが書籍で語られなかったのでは。悪くはないが、結局、クラスの本当の役割が実現されないまま、メタボシステムが作られ続けた。

2019-03-16 23:33:41
Seiver @Seiver17808307

本質がどこなのか、それが、言葉や概念を使うことで思考停止してしまう。#オブジェクト指向 はその典型で、結局、それらで語られる手法の目的がボケてしまって、真意が伝わらず、多くのJavaシステムがメタボ化し、到底、オブジェクト指向とは程遠い保守性や可読性の低いコード化になってしまったのでは

2019-03-16 23:29:29
Seiver @Seiver17808307

#オブジェクト指向 とかいう言葉を先に先行させてしまったのが、オブジェクト指向設計というか、肥大化したクラス、独立しないクラスを多産してしまうことのアイデアが広まらなかったのではと思えてしまう。 日本人は、特に、理解のもと輸入するより、流行りのキーワードを輸入する傾向がある。

2019-03-16 23:27:11
Seiver @Seiver17808307

#オブジェクト指向 設計の前提は、処理や値の細分化とグループ化。そして、そのグループを呼び出すとき、public、つまり、外部のパッケージやクラスから処理を呼び出すメソッドは原則一つにする。単純な呼び出しであり、機能にしてればそれで十分。あれもこれもだと、粒度や役割が多い可能性がある。

2019-03-16 23:24:41
Seiver @Seiver17808307

#オブジェクト指向 の元に語られるキーワード、例えば、カプセル化、責務の単一化、リスコフの置換原則とかは、処理や値のグループ化をするときの基準になったり、作ったものの設定であったりする。でも、分からなくても、兎に角、互いが独立するグループを作る。

2019-03-16 23:21:56
Seiver @Seiver17808307

#オブジェクト指向 というよりも、処理や値を細かくグループ化していくことをコードにしていくことを考える。 まずは。 物事を細かく分割して、それを、再度、処理のタイミングや構造でグループ化していくこと。 オブジェクト指向とか言葉は忘れてもいい。

2019-03-16 23:15:24
Seiver @Seiver17808307

#オブジェクト指向 は、形容詞に近く、色々な具体的な手法を使ったあと、評価として、「これは、オブジェクト指向に基づいてるね」と言われるもの。 そもそもオブジェクト指向の定義も曖昧だから、それこそ、手法のパッケージ名ぐらいに考える。目指すべき方角。その方角へ進むと細かい手続きが分かる

2019-03-16 23:13:00
Seiver @Seiver17808307

そもそも、逆説的だけど、オブジェクト指向って、最初からそれを意識するよりも、それは振り返ったときの評価とか結果論理で、クラスや構造体をつかった、データや処理の塊を作っていく、具体的な手続き、書き方を最初に実践する。オブジェクト指向とかいう概念を忘れてもいい。

2019-03-16 23:10:27
Seiver @Seiver17808307

僕がこのアカウントでもフォローしている人のslide shareをみたとき、オブジェクト指向の"書き方"はこうなのかなとヒントが貰えた。考え方とか理屈じゃなくて、"書き方"を書いてるものが昔はあんまりなかった気がする。 最近は増えてきてる。車とか動物の例とかじゃなくて、具体的な現場で使える書き方

2019-03-16 23:08:32
Seiver @Seiver17808307

オブジェクト指向について、分かったと感じたのは、書籍や情報を読んだ時ではなく、実際にコードを書いていき、プロジェクトの後半で、大きな改修が入ったときに、難なくそれへの対応ができたとき、「あ、これで良かったんだ」と、風邪が治ったことを自覚するような感覚を感じた。

2019-03-16 23:05:47
Seiver @Seiver17808307

PHPやJavaをしながら、オブジェクト指向を使い、拡張性や保守性、可読性など、設計のまずさを感じ、どうすれば綺麗にかけるのか、設計をできるのかを書籍だけでなく、ネットの情報を日本語に限らず、英語も含めて色々読み漁り、実践していった。

2019-03-16 23:03:01
Seiver @Seiver17808307

Javaを使い始めて敷居を感じなくなった頃、大規模Webシステムの仕事に関わり、実際の現場のコードの多くがオブジェクト指向とは違う、COBOLやCでしてたのをJavaに直し、クラスを大きなモジュールにしてるようなもので、尚更、Javaの敷居とはいずこ?となった。

2019-03-16 23:00:26
Seiver @Seiver17808307

Javaの敷居は確かに自分も感じてた。挫折もあり、mixiが流行ってた時の大規模で冗長なシステム利用、1.5ぐらいの面倒くさいオブジェクト操作、そして、オブジェクト指向やクラスへの理解不足もあり、今ほどオブジェクト指向自体の情報も少なかった。なんか上っ面の無難な情報ばかり。

2019-03-16 22:54:49
Seiver @Seiver17808307

言語内疲弊。 文法がー、#オブジェクト指向 がー、#ドメイン がー。   確かに #プログラム で、データや処理を分かりやすく、変更しやすく作るのは大切。   けれど、言語にそれを全部求めるのも仮想、連携、クラウドが一般化してる今はどうなんだろ? 言語を包摂するシステム全体でそれは考えれば?

2019-03-14 01:16:01
Seiver @Seiver17808307

Javaがオブジェクト指向というか、コンポーネント指向をするうえで、致命的だとも思える文法の不備は、import時の別名が付けられない点。RustやPythonでは、asで別名使えるから、同じ名前で付けててもコンテキストが同じ場合、別名にすればいい。

2019-03-10 17:25:56
Seiver @Seiver17808307

最近、言語内完結のオブジェクト指向だけじゃ駄目だと思ってきた。 もっと、広域的なオブジェクト指向でシステム全体をみないと。

2019-03-10 12:09:33
Seiver @Seiver17808307

オブジェクト指向、コンポーネント指向、ドメイン駆動、テスト駆動、アスペクト指向、関数型のパラダイム、手続き指向、おおよそ、設計で語られる視点は一つのアプリにすべて含まれる。それは処理の工程や構造の違いで使い分けられるだけ。

2019-03-09 23:52:43
Seiver @Seiver17808307

ゲシュタルト心理学とオブジェクト指向、コンポーネント指向ってなんか通じるところがある。

2019-03-08 12:58:32
Seiver @Seiver17808307

多分だけど、#Java のプロジェクトが汚い要因は、導入時に、 #COBOL#C しか触ったことがない人達が開発して、そのせいで、#オブジェクト指向 設計など、今、設計で一般化してることが適用されてないからだと思う。つまり、言語の問題ではなく、歴史的で、使い方の問題。

2019-03-08 04:43:08
Seiver @Seiver17808307

#COBOL をこれからも使い続けるなら、#仮想化#広域的オブジェクト指向、API化、これらがキーワードだね。大手とかインフラやさんの仕事一杯やん。

2019-03-07 10:36:02
残りを読む(3)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?