回答 (4件中の1件目) 質問者です。 まず、「オブジェクト指向プログラミングと関数型プログラミングは対立するものではなく直交する」という主張についてです。 このトピックにおいて「直交」という数学的な用語が、自分が知る限り、少なくとも日本国内で表明されたのは、 「関数型言語」に関するFAQ形式の一般的説明 - Qiita という記事が最初であると記憶しています。 ちなみに蛇足を先に処理しておくと、この記事は、モナドって?の章にしてもモナドの定義も説明内容も完全に間違っているし(書き手が理解できていない、モナドについて正しい知識は、30分でわかるJavaScriptプログラマの...
このテーマで書く前に、まず、最初に自分に多少の偏りがあることを認めておかなくてはなりません。 オブジェクト指向より、関数指向寄り オブジェクト指向のアプローチは有用だが、ただしそれを実現する手段はクラスと継承ではない。 階層化されたツリー構造(GUI/リレーショナルな参照構造)に埋め込まれる状態はコード品質を悪化させるので、できるだけ出現するべきではない。 ただし、状態は確実に存在する。だからこそ慎重に扱うべきだ、という派閥です アンチパターン: 特に理由もないクラスメソッドへの所属 何かのバリデータを実装したいとします。 その関数がどこに所属するかについて、よく見るこれらの実装は全部アンチパターンといっていいと思います export class Validator { static validate() {...} } export class Validator { validate(
オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだの Hatena の件。基本的には同意。ただちょっと切り口が違うので自分の意見を言っておく。ただ、このテーマで何度か書こうとして失敗していて、今回も成功しているとはいえない。 宣言的プログラミングの時代 現代の主流は「宣言的プログラミング」であると思っている。これはリソースの宣言と、その状態遷移の手続きや振る舞いの付与が中心にある。 宣言型プログラミング - Wikipedia その代表的な例がフロントエンドの React と、バックエンドの k8s で、どちらも時系列に基づいた状態の宣言と、フレームワーク側による状態遷移処理、 Reconcillation(調停) が基礎にある。 フロントエンドとバックエンドという両極端な世界で、この変化が起きたのがこの時代を反映したものであると思う。 例えば、jQuer
前回のおさらいと今回の話 前回は手続き型パラダイムとオブジェクト指向パラダイムを見比べたときに、「ひとかたまりのデータとそれを操作する手続きを一カ所にまとめて守る」という方向に言語が進化していったというひとつの史観を示しました。その中で返答として「構造化プログラミング」の時点でその視点はすでにあるという指摘を頂いたりもしました。ただ、「ひとかたまりのデータとそれを操作する手続きを一カ所にまとめる」という発想もオブジェクト指向の「ひとつの側面としては」たしかにありますし、その側面を見ると、オブジェクト指向言語に「言語デザインでもってプログラマーがそれを行いやすくした」という面を見いだすことができそうです。そして、その視点に立ったときに「臭ってくる」ヤバい設計として、「データが露出してる」「別のクラスのデータいじってる」「複数の異なるデータに関心をもってしまっている」というものを挙げてみました
October 7th, 2014 In Technology 30 Comments If you enjoy this article, see the other most popular articles If you enjoy this article, see the other most popular articles If you enjoy this article, see the other most popular articles (written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: lawrence@krubner.com, or follow me on Twitter. The No True Scot
uehaj @uehaj 単一責務の原則を疑いたい。ListにeachがあるのはSRP違反だ。で、なにがわるいのだ。クラスこなごなにして可読性理解性を悪化させる例も多い。 2014-05-16 22:37:17 uehaj @uehaj "クラスに変更が起こる理由は、一つであるべき"の意味がわからん。未来に発生するであろう仕様変更の理由を、予測し、一個になるようにしろってこと?? いや機能拡張については無数だろ。変更理由が一つにだったように事後的にクラス分割せよ? 2014-05-16 22:48:13 uehaj @uehaj 変更があったとき、"変更理由が一つにだったように事後的にクラス分割せよ?"そうならその方針はむしろ酷く激しいクラス分割を不断に引き起こすような。単一クラスの範囲内でのみ変更が起きないこと、というのを重視するが分割は変更とみなさないのかな 2014-05-16 22
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く