はてなキーワード: コンポジションとは
module_name.pyみたいなモジュールごとにファイル分割して、インターフェイスだけ公開してその他はdef _funcみたいにprotected(or private)にしとく。
でも「共通性がありそうだから共通関数にする」はアンチパターンだな。たまたま共通してただけの場合は分岐コードが増えて共通関数の保守コストが上がる。
あとありがちなのは、php開発者が関数分割しないですべてメインコードにべた書きするケース。こういうのはやめないと保守が大変。
とっておきのクズがやりがちなのは、神オブジェクトを作るとかだな。Userクラスのフィールドに関係する機能が多いからといって、コンポジションなどによるクラス分割をせずにユーザークラスにあらゆるフィールドとメソッドを追加して、さらに進むとユーザーとは無関係な機能も含めすべてをユーザークラスに定義するアフォ。こうなってしまったら、後から修正するのが難しくなる。
先に手を打つことが、プログラマーの素質「怠惰」につながるのであり、面倒臭いといって後回しにするのは美徳でもなんでもない。
ボクサーを撲殺したのは僕さ
これから満で数つけるわ
ナンを何枚も食べるのなんて、なんでもないよ
新患の新幹線に関する新刊に新館を立てて震撼し信管が作動する。
ケニアに行ったら生贄や
柑橘類の香りに歓喜し、換気を喚起したが乾季が訪れたので、寒気がした。
塗装を落とそうか。
観光客がフイルムに感光させた写真を刊行することが慣行になった。
サボってサボタージュ
景気が良くなりケーキを食べる契機を伺う徳川慶喜(とくがわけいき)
夫を成敗するオットセイ
つまらない妻の話
竹の丈は高ぇなー
餅を用いて持ち上げる
ロストしたローストビーフ
サボテンの植え替えサボってんな
過度な稼働は可動範囲を狭める
伯爵が博士の拍手に拍車をかけて迫真の爆死をし白寿の白人を白紙にもどす。
紅葉を見て高揚する
甲子園で講師をする公私混同した孔子の実力行使には格子窓も耐えられない。
死んでんのか?「心電図を取ってみよう!」
夜祭で野菜を食べる。
信玄餅を食べながら震源を特定するように進言する新元素を発見した人。
蜂の巣(honeycomb)を見てはにかむ
五反田で地団駄を踏む
ようやく要約が終わった
海溝で邂逅
豪華な業
甲板で甲板をかじる
甲板で乾パンをかじる
店頭で転倒
大枚をはたいてタイ米を買う
醤油をかける人「えっっ?」
神田でした噛んだ
少食な小職
牛の胆嚢の味を堪能する
あの娘にはどう告っても(どうこくっても)慟哭する結果に終わるだろう。
キーンという高音の起因が掴めない。
こんな誤謬は秒でわかるだろ
壊疽した箇所が治るというのは絵空事だ
経口補酔液
痴的好奇心
セントーサ島に行くのは正恩が先頭さ
軽微な警備
冬眠する島民
ベットは別途用意してください
The deserted desert in desert desert.
九尾のキュービズム
罹災者へのリサイタル
画家の画架
不納が富農になるのは不能だ
理工がRICOHに利口な履行
I sensed tha it is in a sense sense.
私はそれをある面では扇子だと感じた。
鯖を食べている人と、それを見ている人の会話
鯖 ça va?
ça va 鯖
ça va
ゆめゆめゆめをみるわけにはいけない
早漏で候
凪に難儀
東上線に搭乗した東條が登場
高校を後攻で煌々と口腔で孝行
蝉が転んでセミコロン
道徳をどう説く
写真はフォトんど撮りません
ダリ「絵ぇかくのだりぃなあ」
華美な花瓶のカビに過敏に反応
檻に入っておりいった話をする
夏のおサマー
夜は寝ナイト
渦中のカチューム
渦中のカチューシャ
リスボンでリスがborn
どうないはどないなってんねん
苫小牧でてんてこ舞い
市内を復旧しないと
石狩の石を借りる
おが置いてあるのを見た人「おはおっかねぇーから置かねぇ方がいいぞ」
砂がどしゃーw
東上線に登場した東條が登場
飽きない商い
おなか吹田市
観劇で感激する
側転に挑戦し即、転倒
別件を瞥見
凹地のお家
魚を初めてみた人「うぉー」
カラヤンの頭の空やーんw
豚をぶった仏陀
只見線をタダ見w
菊名でそんなこと聞くなよ
五秒で死んで御廟に埋葬
がらんとした伽藍
有給を使いすぎて悠久の時が流れた
長谷に想いを馳せる
Thinkerの真価
不具の河豚
暗記のanxious
半世紀にわたる半生での藩政を反省
タンチョウが単調増加
ショック死内親王w
カルカッタの石軽かった
天皇のこと知ってんのー
蒋介石を紹介した商会を照会した商會の船で哨戒する
其方のソナタ
先王に洗脳される
防潮堤で膨張した傍聴人
砂漠で鯖食う鯖を裁く
筒に入った膵島
サイコロを使った心理テスト(psychological test)
カラシニコフが辛子個踏んだ
皇帝の高弟が公邸の校庭の高低差を肯定する工程に拘泥した記録を校訂
にようかで酔うか?
うるさい人が売るサイ
どんなもんだい、を、どんなムンバイ、と言い間違える人
透徹した饕餮の眼球
チャカで茶菓を破壊
slimyなすり身
ゆうほど広くない遊歩道
いにしえのイニシエーション
コーランをご高覧ください
K殻の傾角を測定する計画
協賛した共産党員に強酸をかける
負けたのは聖者の静寂のせいじゃ
裏地見るウラジミール
カミオカンデの上に紙置かんでw
県大会がおわり倦怠感を感じる
夕暮れのユーグレナ
ストライキをする公務員に呼びかける人「 Stay calm(公務)」
エド・はるみの穢
祭壇を裁断
腐卵ダースの犬
全然人が集まらないクラブの人「参加数人は我々の十八番ですから。だけに。」
四苦fuck
都バスが人を跳ね飛ばす
怒るカロテン「なにカロテンねん」
嫌がる慰安婦「いやんっ」
かえるがえる帰る蛙
沈厳な青梗菜
トリコロールの虜
布陣を組む夫人
栗けっとばすクリケット🦗
婉容と遠洋漁業
アマルガムで余るガム
ハラスメントの疑いを晴らす
滋賀を書けない人を歯牙にも掛けない
他意はないタイ人の鯛の態度
鯛が蛇足
ダジャレではない↑
割と面白い
ハラッパーの原っぱ
紫に関して思案を巡らす
Huluが夏の風物詩だと思っている人「Huluですなぁ」(風流)
下調べのムニエル
わからないので
意味ない諱
よく分からんリポーター「うわぁ〜美味しそうですね!少なくとも不味そうには全く見えません!」
どうしても下がりたくない人「黄色い線の内側は、境界を含みますか??」
計算ができない人
着ていく服を決めた高橋是清「これ着よ」
enough、enoughは工夫がenough
負け負け山(カチカチ山)
薬師丸せま子
トーマス・マンの書いたふるさと「うさぎ〜おーいし、魔の山〜♫」
その心は
焼結が猖獗を極める
これはstaleだから捨てるか
衒学的な弦楽を減額
完全な勧善懲悪
イボ人の疣痔
イブに慰撫
(訳 ぬるぬるしてるありふれた魚)
盲いるのに飯いるの?
アーヘンで阿片を吸った人「あー変」
毒吐く独白
明借りるアスカリ(車)
丁寧な砂浜「Could you九里浜」
ゴーンと奉公
その心は
サンクチュアリに山窟あり
熟れたウレタンは売れたんか?
清澄な声調を静聴し成長
プエルトリコで増える虜
象さんを増産
兄弟が今die
Dose heで始まる疑問文に答える京都人、Yea, he どす
ソフィカルのソロカル
美人局に筒持たせる
十把一絡あげ
篤信な特進が涜神を得心
これは何という植物かな?ムユウジュでは?あそっか、なるほど。
クートゥを食うとぅいいよ
マイソールで昧爽に埋葬
ドクサは毒さ
暗殺で朝死んだ
クラシックについて語る人をそしる人「弦楽なんてペダンチックだなあ」
凛々しいリリシズム
衛生的な俳人
御髪も亂とはオクシモロンだ
コロナ後の世界を分析する学問→postcoronialism
影響が色濃いイロコイ諸族
あてのあてないアテナイ
わからない。
[追記]
ちょっとわかってきた気がする。
NexusにしろPixelにしろパートナーコーポレーションが持つテクノロジーとのフュージョンによってプロダクションされてる。
ベースレイヤーのコンポジションをオウンドブランドとするビジョンはそもそもインテンドされてないように見える。
故にGoogleがこの先生き残るにはソリッドステートデバイスをプロダクションできるインダストリーコーポレートがマストなニーズであるとともに
失敗したり成果の上げられないプロダクトはカンパニーごとパージして他の企業と乗り換えればいいので投資に関するリスクは結構他所に丸投げしている。
http://anond.hatelabo.jp/20130325172822 の続き
言語はJava7を想定。(Java8が迫っていますが、Lambdaなど関数型は、まだ早いと言うことで)
選定理由は、C++と比較して学べるところが大きく、安全でシンプルな言語だから。
※いきなりJavascriptはやめとけ、PHPは論外。
Ruby・Scalaでないのは、筆者が初心者には適切には教えられないから。
おもちゃ・ToyとしてjQueryで遊ぶのは、悪くは無いと思う。
これ以降は名著の紹介や学習方法の紹介が主体となります。名著のコンポジションという形が時間的限界ですね。
量については「初級になるなら、専門書を計3,000ページは修得することは覚悟してね」なんて言ったりしています。
Javaで初級のわかりやすい指標ですと、[amazon:Effective Java]とGoFまでの修得。
初級になるまでに登竜門への挑戦期間を含めて、3~4年はかかっても仕方が無いとも思います。
※逆に「一山いくらのコーダー」というのは、Effctive JavaやGoFが達成している技術も知らずに「自分がJavaプログラマー」だと誤解してしまっているような人達です。
そういったコーダーは何年経とうとも初級プログラマーにすら敵いません。
初級を目指して、プログラミングを楽しんでください。
ただ、学ぶべきことはべらぼうですが、「各分野毎に、エレガントな方法がある。だから探して修得する」ということが大切です。
※「一を聞いて十を知る」ような優秀な人に、50冊くらいドーンと本を置いてあげて、各本の目次を読ませるだけで、
底の見え無さを悟ってくれたりすると、嬉しくなってしまいます。
※余談ですが、その底の見え無さは数学という学問そのものですね。例えば、関数型言語の底流に「圏論」というここ100年の最新の数学があります。
また中級くらいで、Liskovの置換原則などが載っている本を紹介しますが、
そのLiskovの置換原則の周辺で出てくるcovariant(共変)って、圏論という数学の概念だったりします。
数学畑出身としては、数学が現実に活かされている嬉しい事例です。
「速く正確に大量の出力」という能力は、プログラミングをする上でも、ドキュメントを書く上でも、何より「つまらん仕事」の時間圧縮ができるようになるため、重要です。
スローガンとしては「思考のスピードで出力することを目指そう」です。
紹介するエディターはemacsやvimやExcelです。ついでにIMEとしてATOKを使用しているため、ATOKの操作をEmacsライクにする話も紹介します。
ExcelはWindows環境でMeadowすら入れさせてくれない場合の最後の砦という扱いです。
コマンドラインは、「コマンドラインというものがある」「時として非常に強力である」程度の紹介です。
※筆者はzshは全然使えません。使いこなしている方々と接する度に「勉強しなきゃな~、でも、あっちの方を先にやりたい・・・」とグズグズして、はや何年・・・
正規表現は置換を用いて、テキストの一括編集が重要です。後、遭遇したくない事態ですが、スパゲッティコードの解析をする上での最後の砦です。
※遭遇したくない例
ん?何か変なところで副作用のある処理があるようだなぁ(消沈)、SQLのInsertかUpdateか一応Mergeも使っているところから逆算して原因箇所を探すか・・・(諦念)
この糞コードがっ!!こんなところに書くんじゃねぇ!!(憤怒激高)
(ここで、他にやらかしていそうな似たようなコードを正規表現でgrep検索。改行コード込みにすれば複数文検索も可能)
わはは、予想通り共通化すべきロジックのメソッドがそこら中にある・・・
入門編で一つLinkedListというアルゴリズムを学びました。
少なくとも一つ本を読みながら自力でアルゴリズムを学べる人なら、大成できる可能性があります。
前に紹介した[amazon:C++実践プログラミング]には、LikedListやStackなど基本的なアルゴリズムが載っておりますが、
これに加えて、初級になるためにはこれくらいは知っておいて欲しいというものを紹介します。
※後、最初から必ずしも手を出さなくても良い上限も紹介いたします。
プログラムは、データを入力して、加工して出力・保存する処理の繰り返しです。
つまり、各一連の繰り返し毎に、「正しい入力」「正しい出力」を定式化する必要があります。
それを人間の手では無くコンピューターにやらせられるように、つまり自動テストできるようにテストをプログラミングします。
そこで処理の進捗を確認するためにロギングし、処理が想定通りであるかをアサーションでチェックし、
不正な入力・不正な出力=例外が起きたら、対処策をプログラミングします。
(ex 途中で処理を中断して、入力者に適切な入力のメッセージを伝えてあげる。入力の自動補正などもあり得る)
で、ここら辺をまとめてどうあるべきかとして「契約プログラミング」があります。
※余談。定式化・テストに際して、数学畑の人間としては、Javaだとequalsのオーバーライドでも必要になるし、同値関係・同値分割だけでなく、集合論・群論から学んで欲しい・・・(ここいらは数学科の学部1~2年の学習内容)
名著は英語で読みましょう。名著が名著たる由縁は、度々引用されることにあります。
つまり最新の技術書を読むときに、引用された名著のフレーズが、新旧のリンクをなし、理解の助けになります。
壁打ちといって、独り言で思考補助をするよりも遙かに有益です。
※素晴らしい師匠を探すなら、大学行くのが一番ですが、見聞を広げていく中で出会いを待つしかないとも思います。
マルチスレッドが難しいのは「バグを起こしにくいプログラミング」を求められるから。
つまりTry and Errorからの決別が求められ、今後の仕様変更・拡張も踏まえて慎重に慎重にデザインする必要があります。
できる限りステータス変数を持たずに安全に、でもマルチスレッドにするのだから、効率を追求しなければ本末転倒。
でも効率のためにはメモ化に代表されるキャッシングは必須と、アンビバレンツな要素のバランス取りが難しい。
このために、リエントラントな実装・抽象と実装の分離など様々なエッセンスを駆使することが必要です。
というよりも孔子曰く、知っているよりも好きであること。好きであることよりも楽しめることのほうが強く、
気づいたら日々時間が許す限りプログラミングをしてしまうのが理想です。
※仕事として嫌々スキルを磨かなきゃということが、これほど不幸な職業も無いですね。
学習の達成度を測るには、簡単すぎる不適切な問題ですね。
写経は数学の証明問題を、教科書のテンプレ通りに、数値や名称だけ変えて記述することしか出来ない人の発想。
つまり「矛盾無く一貫した論理モデル」の構築が自由に出来ず、テンプレの微修正しか出来ない人の発想。
また、外部の「矛盾無く一貫した論理モデル」の吸収が不自由で、アルゴリズムを「手順」としてしか捉えられないように見受けられる。
「連続」であること確かめるための「ε-Δ論法」(数学科の学部1年の学習内容)
事前知識無く、このモデルを理解できる人は、十分に「矛盾無く一貫した論理モデル」を構築できる人。
http://anond.hatelabo.jp/20110316202255
デザインパターン編を書いてたら99ブクマだと…。なんだかすみません。
あと増田で書くの初めてで記法がちとわかっていなくて見づらくて申し訳ないです。
>おもしろい。でもJavaとJSとRubyじゃ同じオブジェクト指向でもまったく違った設計と思想になるのでまとめて説明は難しいかも
言語=世界として、どんな世界がいいか考えましょうという話に持って行きたかったけど難しかったですね。
>ASしらないけど classが使えるJSっぽいところみるとASなんですかねこれ
>@shinout 面白い!けどいろいろ間違ってる!!コード動かしてみいや
それっぽい言語なので動きません。JavaとかASとかそのへんですねー。
その割に一部ちゃんと書いてるのが誤解しそうですね。
> OOPを習得したPGとそうでないPGとの生産性の差がドラゴンボールで言うところの戦闘力の差という比喩でたとえるとよい。初心者PGが何人集まってもかなわないところがある。
>17号と18号が逆
>セルはis-aはなくhas-aで実装した方がいいような気がする。
セルってチート臭いですよね。くらった技を覚えるブウの設計と、遺伝子を持っているから技が使えるセルの設計をどうするかは議論になりそうです。
>なんか、むしろ分かり辛くなってると思うけど、心意気やよし!
>かりやすいんだかわかりにくいんだか
無理がありました。
>連載はextendされたけど、主人公の継承には失敗したよね
素晴らしいコメント。設計ミスで主役になれなかったのは運用でカバー出来ましたね。
>セルはクラスの承継よりもオブジェクトのコンポジションの方がいいのか分からない。
http://anond.hatelabo.jp/20110316215156
で突っ込まれてる内容の方がいいかもしれませんね。
でも悟空やベジータは吸収じゃなくて細胞を合成してる?とかなので17号、18号とは別にする必要があったりします。
申し訳ありません…。