はてなキーワード: オブジェクト指向とは
書き直す事を解説した本は聞いた事がないな。
ただ、増田も知ってるかもしれないけど、一般的にオライリーの本ははずれは少ないって言われてるから探してみればあるかもしれない。
(日本の出版社が出したオブジェクト指向の本を読んだ事はあるけど、今身になっているかと言うと…よくわからん。)
あとお節介かもしれないけど、書き直すならフレームワークを使った方がいいと思う。
勝手な想像で申し訳ないが、属人的なソースコードだから書き直したいと思ったのだと思う。
増田が知識を積んでスクラッチで作るのもいいけど、それもまた属人的ではあるから色々な人が作って洗礼されたフレームワークを使う方が良い。
噂に違わず、そして期待に応える素晴らしい映画だった。その素晴らしさの仕組みを読み解きたい。
ドメインは2つ。ソン・ガンホ演じる父の無職一家とイ・ソンギョン演じる事業家の裕福な家庭の2つ。
クラス図は、裕福な一家の方はシンプルで父・母・娘・息子である。無職一家の方は少し複雑になる。
同じ父・母・娘・息子と構成は同じだが、それぞれが偽のロールを実装し元の素性を隠蔽している。
作品というアプリケーションの中で、この2つのドメイン間でのメッセージのやりとりでストーリーは駆動していく。
最初のイベントはチェ・ウシク演じる無職の息子が友人の代理として、裕福な家庭へ家庭教師の面接を受けにいくところから始まる。すでにこの時点で偽のロールとして継承している。そして、以降芋づる式に無職一家は裕福な家庭に偽のロールを継承しながら組み込まれいてる。いわゆる密結合である。密結合はいろいろと良くないことが起こる。そして映画でも良くないイベントが起こる。
あとは、映画を観てもらうとして、基本的には密結合した2つのドメイン間でのイベントが発火するごとにインシデントが発生しシステムダウンに向かうストーリーと見立てる。
という感じでシンプルに構造を解析すると、映画の中での重要なガジェットに気づく。
それは「臭(にお)い」である。
無職一家のそれぞれの元クラスのさらに親クラス、貧困層に実装されている臭いは偽のロールにも引き継がれ、ところどころでメッセージとして出現する。ただし、出現するだけでイベントは発生しないようにみえる。
言葉や行動など偽のロールで実装した可視化されたメッセージと、根源クラスにある非可視な臭いのメッセージのやりとり。臭いを隠蔽できなかった時点でシステムとして破綻は目に見えてた。
ここで、構造をもう一段掘り下げる。
無職一家の父・母・娘・息子というクラス自体が映画でのロールという偽物である。
つまり、俳優そのもののオブジェクトがあって役になり、作品の中で偽物を演じるという3段階の構造になっている。
多重継承は常に複雑度を増し、予測もしなかったような振る舞いをする時がある。
つまり、作品だけを見ると貧困層と富裕層の悲喜劇に見えるが、それ自体が富裕層の遊びになっているのでは?という視点で、実際少なくないレビューがそれを指摘している。いわく、本当の韓国の貧困を描いてない等の指摘である。
言いたいことはとても分かる。
監督のポン・ジュノの経歴を見ても、普通に大学に行って映画アカデミーに再入学、小説家の祖父をもつという貧困とはあまり近くない。
社会問題を描くときに当事者でないと本質を描けないのかという問題は本当に根深い。
極論すれば、殺人をテーマにするならば人を殺さないといけなくなってしまう。
そして、されに言ってしまえば、当事者が自分たちの問題を作品化する能力があるかどうかという問題と、そういった作品が果たして当事者たちが触れる機会があるかどうかという話になる。
そこまで行くとすべてがゲームになる。
ある社会問題に対して、インテリが作品をつくり富裕層ではないけれど貧困層でもない聴衆が消費し、何とかしないといけないねと言いながら何もしないといういつものパターンである。
パラサイトもそういったアンチパターンの一つかどうかは今の時点では分からない。
パラサイトはノンフィクションではない。とても上手く設計されたフィクションになっていて、アカデミー作品賞が贈られたことにも疑問の余地がない。
何かの参考とかにしたらダメです。書き始めて半年経つんだけどこっからどう直したらいいんだか(何をゴールにしたらいいのか)わからない。。
追記:合流性とか強正規化可能性とか停止性とか、全部チューリング不完全で、事前の静的解析で使うメモリの最大量が確定できる、とかそういう風に読み替えられる人を増やしたいのです、数式の添え字とΣと∫にびびらない人を増やしたいようなもので
数理論理学の一分野である証明論から成長した、数理論理学と理論計算機科学の境界領域の研究領域である型理論(type theory)は、大規模なプログラムの内的な整合性のチェックを行うための方法論を必要とする情報処理技術の分野で関心を集めている。
そもそも「型」(type)とは何か。プログラミング言語は一般的にはレコードや関数といったプログラムを構成する「値」(value)の定義をする道具である(*1)。その言語のコンパイラ作成者はこれらレコードや関数などの値、もしくは第一級の対象(first-class object)の種類を区別する型システム(type system)を必要とする。抽象代数学の観点からすると、「型」とはこれらの値もしくは第一級の対象が属する高階の対象(higher order object)としての空間(space)ないし代数系(algebraic system)で、型システムはそれら「型」とそれら相互の関係(relation)つまり型のなす順序構造(order structure)ないし束構造(lattice structrure)であるといえる。
プログラムを構成する値すべてに型が付くためには、曖昧でない(*2)こと、自己矛盾していないこと、悪循環を含まないこと、それぞれの値の内容をチェックするために無限の時間を要しない(*3)ことなどが必要で、これらを満たすなら、プログラムは有限時間で実行を終え、停止する。手続き型言語では無限ループ、型無しラムダ計算では無限再帰によって型付け不能なプログラムを書くことができるが、型理論はこれらのチューリング完全な計算機を意図しない停止しないプログラムから守る装甲でもあり、再帰やメモリ確保で好き勝手をさせないための拘束具でもある。型が付くプログラムには単に停止するというだけでなく、可能な実行経路(訂正:経路→方法)のすべてで同じ結果を出すなど種々の良い性質がある。
1)この定義は現実に使われているプログラミング言語の特徴を覆い切れていない、狭い不満足な定義だが本稿では都合上この定義に立脚して限定的に議論する。例えば変数(variable)というものを持つプログラミング言語もあり広く使われているが、これについてはレコードや関数と同じように性質の良いものとして扱うことが難しい。難しさの原因は次の注の内容と関連する。近年は変数を扱うかわりに値の不変のコピー(immutable copy)やその参照に名前を付ける機能を持つプログラミング言語が増えている。
2) 現実の情報システムでは、COBOL言語のレコード再定義やC言語の共用体、一般的な関数ポインタやVisual Basic言語のvariant型変数のように、同一領域に異なる型の値が共存する共用型(union type)の値がしばしば必要となる。共用型の値はgoto文を排除した構造化/オブジェクト指向プログラミングにおいて条件キャストやクラス分岐などによる実行経路の複雑さの主要な原因になるが、これは和型(sum type)すなわち相異なる型の非交和(disjoint sum)として定義することで曖昧さなく定義できる。
3) ゲームプログラムやネットワークサービスにおいてしばしばみられるように、入力として無限リストや任意に深い木のようなものを想定する場合には明らかに(条件を満たさない限り)停止しないことが正しい動作となり、この場合は最外周のループを(←どうする?)メモリリークを起こさないなど別の考慮が必要となる。
関数型プログラミング知ったばっかりのJavascripterはオブジェクト指向を否定したがるよね
今年33になった。limitである35歳までもうあと2年しかない。
これまで多数の現場アサインされてきたけど、もう全部がBANで終わった。自分が重度な🤐なのが大きい。
精神科で発達か診断受けたけど綺麗な八角形であなた正常です言われたよ。ようするに俺はただの普通の人である。
🤐すぎて日本語不自由だから文章が書けない。インデントがおかしい句点読点がおかしいとかは自分でもわかるから訂正してるけど、
文章の組み立て方がおかしいのか相手に意図が伝わらないことが多い。プロパーとか同僚とかすごい読みやすくて日本語の文章書くんですよ。
NTTの案件でプログラミングの前に基本設計詳細設計書いてください言われて、書けなかった。プログラミング始められなかった。2週間でBAN。
上司に質問とか突然されて頭の中が真っ白になって即座に回答できない。
同僚とかからすごい勢いで拒絶されるんですよ。俺から話しかけても相手が迷惑がってるのが顔から読み取れる。
いざ会話が始まっても、相手から聞きだしたいこと聞きだせず会話が終了するなんてこと日常茶飯事。結果要件聞き取れず頓珍漢なものが出来上がり無駄な時間だけが過ぎていく。
上司に「普通じゃない人はお断りです」言われて2週間でBAN。
営業に「次はプロトタイピング案件だよ」言われてwktkしながら派遣先行ったらスクラム開発。
念願のアジャイルじゃねえの設計書書かなくてええやんやったねたえちゃん!と思ったもののスクラム開発は🤐には相当厳しかった。
現場の作業ついていけず、何をどうやって作業を進めていいのか分からないのに、週一に一回発表会みたいなのある。週一で業務の感想戦を強いられる。言うことなんもねーよ
上司に「あなた回りに溶け込めてないので今日で終わりです」言われて4週間でBAN。
33歳にもなってC#とVB.NETしか知らない。Linq分からないからFor文やForEachでカバー。オブジェクト指向分からないからNUnitやデザインパターンも分からない。もといNUnit使ってる現場参画したこと1回しかないから正しい運用がわからない。
そろそろ新しい技術学習しないといけないんだよなーと思うものの、何を勉強したら良いのか分からない。今までの経験から、どんなに技術身に着けても👄💬能力無ければBANじゃないですか。技術身に着ける意味あるんですか。
👄💬能力ある健常なプログラマは、勉強会出たりライトニングトークやったりで似た優秀な技術者と技術的な話を交換したりしてる。んで得た技術身に着けて更なる高みを。
🤐はそういうイベントには参加できない。会話自体無理だからね。🤐と健常者はそういう所で差が出てくる。超えられない差というか。
よくネットとかで🤐だけど克服しましたみたいな文章書いてる人いるけど、真の🤐は日本語不自由だから文章書けません。ブログ書けません。ネトゲも会話出来ないのでフレンド作れません。全然🤐じゃないのに🤐名乗ってるファッション🤐が世の中多すぎる。
俺はこれからの人生どこに進んだらよいか分からないから、似たような人探してみたものの見つからずじまい。真の🤐はSNSなんてやっていなかった。学生時代俺以外にも🤐っぽい人複数いたけど俺含め彼ら相互で全く交流なかったな。🤐はどの環境でもボッチだ。
じゃあ🤐を導いていくれるメンター的な存在を探してみたものの、見つかるのは奴隷商人ばかりで関わったらアウトみたいなオーラを醸し出している。
自分が🤐過ぎて打てる手が何もない。転職しようにも自分にできそうなことが何一つ思い浮かばない。どんな仕事だって人間との会話は必要。会話要らない仕事なんてこの世にない。
「コ○ュ○」という単語が苦手な人用:anond:20190923023222
今年33になった。limitである35歳までもうあと2年しかない。
これまで多数の現場アサインされてきたけど、もう全部がBANで終わった。自分が重度な■■■■なのが大きい。
精神科で発達か診断受けたけど綺麗な八角形であなた正常です言われたよ。ようするに俺はただの普通の人である。
■■■■すぎて日本語不自由だから文章が書けない。インデントがおかしい句点読点がおかしいとかは自分でもわかるから訂正してるけど、
文章の組み立て方がおかしいのか相手に意図が伝わらないことが多い。プロパーとか同僚とかすごい読みやすくて日本語の文章書くんですよ。
NTTの案件でプログラミングの前に基本設計詳細設計書いてください言われて、書けなかった。プログラミング始められなかった。2週間でBAN。
上司に質問とか突然されて頭の中が真っ白になって即座に回答できない。
同僚とかからすごい勢いで拒絶されるんですよ。俺から話しかけても相手が迷惑がってるのが顔から読み取れる。
いざ会話が始まっても、相手から聞きだしたいこと聞きだせず会話が終了するなんてこと日常茶飯事。結果要件聞き取れず頓珍漢なものが出来上がり無駄な時間だけが過ぎていく。
上司に「普通じゃない人はお断りです」言われて2週間でBAN。
営業に「次はプロトタイピング案件だよ」言われてwktkしながら派遣先行ったらスクラム開発。
念願のアジャイルじゃねえの設計書書かなくてええやんやったねたえちゃん!と思ったもののスクラム開発は■■■■には相当厳しかった。
現場の作業ついていけず、何をどうやって作業を進めていいのか分からないのに、週一に一回発表会みたいなのある。週一で業務の感想戦を強いられる。言うことなんもねーよ
上司に「あなた回りに溶け込めてないので今日で終わりです」言われて4週間でBAN。
33歳にもなってC#とVB.NETしか知らない。Linq分からないからFor文やForEachでカバー。オブジェクト指向分からないからNUnitやデザインパターンも分からない。もといNUnit使ってる現場参画したこと1回しかないから正しい運用がわからない。
そろそろ新しい技術学習しないといけないんだよなーと思うものの、何を勉強したら良いのか分からない。今までの経験から、どんなに技術身に着けてもコミュ能力無ければBANじゃないですか。技術身に着ける意味あるんですか。
コミュ能力ある健常なプログラマは、勉強会出たりライトニングトークやったりで似た優秀な技術者と技術的な話を交換したりしてる。んで得た技術身に着けて更なる高みを。
■■■■はそういうイベントには参加できない。会話自体無理だからね。■■■■と健常者はそういう所で差が出てくる。超えられない差というか。
よくネットとかで■■■■だけど克服しましたみたいな文章書いてる人いるけど、真の■■■■は日本語不自由だから文章書けません。ブログ書けません。ネトゲも会話出来ないのでフレンド作れません。全然■■■■じゃないのに■■■■名乗ってるファッション■■■■が世の中多すぎる。
俺はこれからの人生どこに進んだらよいか分からないから、似たような人探してみたものの見つからずじまい。真の■■■■はSNSなんてやっていなかった。学生時代俺以外にも■■■■っぽい人複数いたけど俺含め彼ら相互で全く交流なかったな。■■■■はどの環境でもボッチだ。
じゃあ■■■■を導いていくれるメンター的な存在を探してみたものの、見つかるのは奴隷商人ばかりで関わったらアウトみたいなオーラを醸し出している。
自分が■■■■過ぎて打てる手が何もない。転職しようにも自分にできそうなことが何一つ思い浮かばない。どんな仕事だって人間との会話は必要。会話要らない仕事なんてこの世にない。
今年33になった。limitである35歳までもうあと2年しかない。
これまで多数の現場アサインされてきたけど、もう全部がBANで終わった。自分が重度なコミュ障なのが大きい。
精神科で発達か診断受けたけど綺麗な八角形であなた正常です言われたよ。ようするに俺はただの普通の人である。
コミュ障すぎて日本語不自由だから文章が書けない。インデントがおかしい句点読点がおかしいとかは自分でもわかるから訂正してるけど、
文章の組み立て方がおかしいのか相手に意図が伝わらないことが多い。プロパーとか同僚とかすごい読みやすくて日本語の文章書くんですよ。
NTTの案件でプログラミングの前に基本設計詳細設計書いてください言われて、書けなかった。プログラミング始められなかった。2週間でBAN。
上司に質問とか突然されて頭の中が真っ白になって即座に回答できない。
同僚とかからすごい勢いで拒絶されるんですよ。俺から話しかけても相手が迷惑がってるのが顔から読み取れる。
いざ会話が始まっても、相手から聞きだしたいこと聞きだせず会話が終了するなんてこと日常茶飯事。結果要件聞き取れず頓珍漢なものが出来上がり無駄な時間だけが過ぎていく。
上司に「普通じゃない人はお断りです」言われて2週間でBAN。
営業に「次はプロトタイピング案件だよ」言われてwktkしながら派遣先行ったらスクラム開発。
念願のアジャイルじゃねえの設計書書かなくてええやんやったねたえちゃん!と思ったもののスクラム開発はコミュ障には相当厳しかった。
現場の作業ついていけず、何をどうやって作業を進めていいのか分からないのに、週一に一回発表会みたいなのある。週一で業務の感想戦を強いられる。言うことなんもねーよ
上司に「あなた回りに溶け込めてないので今日で終わりです」言われて4週間でBAN。
33歳にもなってC#とVB.NETしか知らない。Linq分からないからFor文やForEachでカバー。オブジェクト指向分からないからNUnitやデザインパターンも分からない。もといNUnit使ってる現場参画したこと1回しかないから正しい運用がわからない。
そろそろ新しい技術学習しないといけないんだよなーと思うものの、何を勉強したら良いのか分からない。今までの経験から、どんなに技術身に着けてもコミュ能力無ければBANじゃないですか。技術身に着ける意味あるんですか。
コミュ能力ある健常なプログラマは、勉強会出たりライトニングトークやったりで似た優秀な技術者と技術的な話を交換したりしてる。んで得た技術身に着けて更なる高みを。
コミュ障はそういうイベントには参加できない。会話自体無理だからね。コミュ障と健常者はそういう所で差が出てくる。超えられない差というか。
よくネットとかでコミュ障だけど克服しましたみたいな文章書いてる人いるけど、真のコミュ障は日本語不自由だから文章書けません。ブログ書けません。ネトゲも会話出来ないのでフレンド作れません。全然コミュ障じゃないのにコミュ障名乗ってるファッションコミュ障が世の中多すぎる。
俺はこれからの人生どこに進んだらよいか分からないから、似たような人探してみたものの見つからずじまい。真のコミュ障はSNSなんてやっていなかった。学生時代俺以外にもコミュ障っぽい人複数いたけど俺含め彼ら相互で全く交流なかったな。コミュ障はどの環境でもボッチだ。
じゃあコミュ障を導いていくれるメンター的な存在を探してみたものの、見つかるのは奴隷商人ばかりで関わったらアウトみたいなオーラを醸し出している。
自分がコミュ障過ぎて打てる手が何もない。転職しようにも自分にできそうなことが何一つ思い浮かばない。どんな仕事だって人間との会話は必要。会話要らない仕事なんてこの世にない。
一晩明けました。レスポンスたくさんついたの初めてです。
>レベルの高い現場ばっかり行ってない?例えば学歴高いとか。ガチで仕様書描くところの仕様書ってクソ難解だよね。作るのも読み込むのも無理で頭おかしくなる。どうなってんだ?と思ったら書いてる人が東大卒だった。
私は底辺高→専門卒で低学歴です。派遣先の同僚みんな大卒で頭脳明晰で羨ましいです。大学は卒論とかあって文章書く能力無いと卒業自体出来ないから自然と淘汰されますね。文章書けない大卒の方見たことないです。
>この文は普通に読めますし、「迷惑がってるのが顔から読み取れる。」ならコミュ障とは少し違う気がします(適当な意見ですが……)。
私は見た目がブラクラで見る者を不安に陥れる面なので、あんまり直視したくないのだと思います。
>この文章は問題無いので見たことのないパターンだ。逆に専門職として得意なことは何なんだろう。
今はRPAをやっています。やってて思ったのが「ちょっとした環境変更で動かなくなるマクロやスクリプト作ってるだけじゃん」で、これ時限爆弾量産してるだけじゃないのと。ただ作っててこれ技術的にぬるい部分も、でもここ抜けたら次がねえよな、BANされた後の次の案件見つかるのか、という疑問も。なので死ぬ気でしがみ付かなければなりません。
>これは言語表現能力の問題ではない。技術の知識と経験が不足していることが元凶で、相手の話について行けてないだけ。
確かに技術不足の点もあります。営業が見つけてくる案件がほぼ全部レベル高すぎ案件ばかりなのが原因なのかもしれません。少し簡単な所行きたいという気持ちもあり。営業と相談してみます。
勉強開始時は、プログラミング初学者。今はPandasやNumpyで遊んでいる。
この記事は自分のために書くが、今後受ける誰かのためになるなら幸いです。
https://www.pythonic-exam.com/exam
はじめにPythonチュートリアルを読みプログラミングを写経してみたものの、正直プログラミング初学者の自分にはチンプンカンプン。
(後ほどわかったけど、写経だとインデントミスがあったり、日本語誤訳や誤字が多かったりして、基礎力がない自分だと一人でカバーしきれなかった)
そこで、プログラミング初学者でも読めそうなPythonの本を読むことにした。
本をじっくり読むよりは、プログラミングって、Pythonってこんなものだよってことがわかって、Pythonチュートリアルを一人で読めたらいいかなと思い、基礎試験の範囲はカバーしていてあまり厚くない本を一読することにし、Amazon unlimited見つけたこのPython基の本を読んだ。
https://book.impress.co.jp/books/1115101060
本にあるプログラミングを写経しつつ読み、練習問題は一人でやってということを1週間ほどでやった。
この本はプログラミング初学者の自分でも一人で読み切ることはできたし、この本の練習問題くらいのコードなら一人でかけるようになった。
オブジェクト指向を意識して書かれた本らしいが、ぶっちゃけそのへんについてはわからない。
読み終わった後、Pythonチュートリアルを特に4章5章を一読。
すると、Pythonチュートリアルにはあるけど初学者向け本には載ってないことが結構あることに気づいた。
このチュートリアルを全部読んで把握するにはお上に言われている期間じゃとてもじゃないけど足りないし、
期間内試験に受かることが勉強する一番のモチベーションだしという事情と、
合格率高いし、「Python3エンジニア認定基礎試験はチョロい」みたいな記事が多いし、そんなに細かいこと聞かれないでしょという油断とで、
もう模試を受けてみた。
模擬試験は、おそらくランダムで40問選ばれていたので、サイトにある出題範囲通りでなかった。
模試を受けてわかったことは、当たり前かもしれないが本に載ってないこと結構聞かれる。
例えば、普段NumpyやPandasなどなどに甘えているせいかもしれないが、見たことないモジュールが出題されているなど。
謎訳が個人的に読みにくく、Pythonチュートリアルを英語で読んでいたが、試験はその日本語で出るので、日本語版を読むべき。
あと、主教材であるオライリー・ジャパン「Pythonチュートリアル 第3版」には載っているけれど、Pythonチュートリアルには載っていないこともあることに模試で気づいた。
模試の点数はあまり参考にせず不安だった箇所の復習に使い、再受験を3回行った。
模擬試験の問題バリエーションは多くないのか、かなりダブる問題があり、3回とも90点は超えたので本番受験してみることに。
サクッと解ける問題もあったけど、わからないなっていう問題が模試に比べると多かった。
例えば模試に比べると少し複雑な構造をしたプログラミング、など。
そして単純に覚えてない知識を問われてた部分も多々ある。
(オライリー・ジャパンの本を確認したところ、この本独自の言い回しかもしれない)
結果出た後Pythonプログラマーに聞いたら、何について聞かれているのかパッとわからないと言われた。
本番は細かいことを聞かれ、難易度1.5倍くらいになるので、Pythonチュートリアルは細かいところまで読み込むべし。
せめてメインの出題範囲である4章、5章はチュートリアルにあるプログラミングまで追うべき。
そして、どうしたらエラーが出て、どうしたらすべて実行されるのか、まで確認すべき。
正しい処理ばかりでなくて、たまにはわざとエラーを起こしてみた方がよかった。
エラーをあまり経験しておらず、どういうときにこのプログラムはつまるのかという想像力が欠けていて、そこがないと試験はつらかった。
過去問ほしいなと思うけど、試験側の問題の種類が多くないんだろうな。
(落ちた分際で偉そうに言うが、流行りの言語Pythonとはいえ、この試験逆に通って何が嬉しいのかわからない。)
https://docs.python.org/ja/3.5/tutorial/index.html
https://diver.diveintocode.jp/exam
初投稿につき至らない点があるかもしれないが容赦してほしい。が、指摘は受け入れる所存。
俺はとあるUIコンポーネントライブラリ開発者だが、先日議論されたあるコンポーネントの設計について悩み続けている。
これを読んでくれた人の設計センスや知識、経験から、第三者の率直な意見を聞きたい。
悩んでいることの概要は、
ざっくり言えばこの2択だ。
どちらも間違った考えだとは思えないので、そもそもどちらかの捉え方がおかしいのだと思う。そういった意見も聞きたいが、まずは読んでみてほしい。
設計対象のコンポーネントは、よくある触って動かせるスライダーである。下記リンク先のようなものだ。
https://material-ui.com/components/slider/
加えて、下記も前提としてほしい。
Sliderというコンポーネントクラスを作るとして、これらの構成要素をライブラリ-ユーザー間でどう分担するかという点で、AさんとBさんで意見が割れた。
それぞれの意見を要約すると下のようになる。Aさんはカプセル化を狙い、Bさんは単一責任原則を重視している。
画面 └ Slider (ユーザーが作成) ├ 背景バー ├ ノブ └ 進捗バー
Aさん案の場合だと、Sliderクラス内部で勝手にそれぞれの要素を作成し、自分の子にするなりして表示する。
画面 ├ 背景バー (ユーザーが作成) ├ ノブ (ユーザーが作成) ├ 進捗バー (ユーザーが作成) └ Slider (ユーザーが作成) ├ 背景バーへの参照 (ユーザーが指定) ├ ノブへの参照 (ユーザーが指定) └ 進捗バーへの参照 (ユーザーが指定)
Bさん案では、ユーザーが構成要素それぞれを作成し、Sliderにそれを食わせる。
SliderはAさん案のように各構成要素を構築する必要はなく、ノブの移動や進捗バーのサイズ変更だけすれば良い。
Aさんはユーザーが制御する必要のない背景バー、ノブ、進捗バーの構成を隠蔽(カプセル化)しようと提案したが、
Aさん案に対しBさんは、単一責任原則の観点から「各構成要素の構築や表示」という責任を外すべきだと訴え、Bさん案を提示した。
またBさんは、コンポーネントはユーザーが扱うべきものであり、コンポーネントがコンポーネントを内部で勝手に使用しているのは混乱を招くとの見方もしている。
ただしAさんの考えの通り、実際に各要素の構成をユーザーが制御するユースケースは存在しない。
その場では「単一責任原則」を持ち出したBさん案で決定された。
しかしなんとなくAさん案派だった俺はモヤモヤしたまま家に帰り、本当に単一責任原則に反しているのか、カプセル化よりも大事なのかと悩み続けている。
ここまでが事実となる。
さて本当にBさんが正しかったのか、あるいは単一責任原則の捉え方が間違っているのか、はたまた・・
第三者による意見が聞きたい。周りのコメントに左右されない率直な意見が望ましい。なんとなくな意見も歓迎する。
満たすべき機能は見た目だけではないがそこは置いておいてほしい。