■危険性
かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性(RFC 3439)」として「カプセル化は絶対にやめろ」としている。
大雑把にいうと、教科書の上では素晴らしく、開発を始めた最初のうちは良いが、将来的な改修の際に隠蔽されたデータにアクセスできないと解決できない問題が出てきて、非常に高確率でデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」などという概念はない。
ソースコードが存在し改修が可能であればカプセル化しても問題ない。ソースコードがあってもライセンス的に改修できない場合や、そもそもバイナリのライブラリしかない場合などは絶望的である。
https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
探検
カプセル化は愚かな考え
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/07/29(水) 17:17:58.13ID:u638n5uE217デフォルトの名無しさん
2020/08/20(木) 23:07:26.61ID:Ha0cLvqC218デフォルトの名無しさん
2020/08/20(木) 23:08:01.72ID:qjxJt4Hn そのライブラリ使ってるブログ検索して
真似するだけなんだよなぁ…
隠蔽要らんやん
真似するだけなんだよなぁ…
隠蔽要らんやん
219デフォルトの名無しさん
2020/08/20(木) 23:11:15.07ID:Ha0cLvqC >>216
は?何言ってるのか意味不明
は?何言ってるのか意味不明
220デフォルトの名無しさん
2020/08/20(木) 23:13:58.87ID:KHHtBj+5221デフォルトの名無しさん
2020/08/20(木) 23:15:04.46ID:KHHtBj+5 頑張ってクイックソートライブラリを作ったおっさんは
これでもうソートするときに中身をいちいち見なくてすむ
って安堵してるわけだ
これでもうソートするときに中身をいちいち見なくてすむ
って安堵してるわけだ
222デフォルトの名無しさん
2020/08/20(木) 23:19:44.69ID:Ha0cLvqC223デフォルトの名無しさん
2020/08/20(木) 23:44:16.56ID:KHHtBj+5224デフォルトの名無しさん
2020/08/20(木) 23:44:18.70ID:iNatz9V0 >>195
そうそう。
カプセル化っていってんだから、オブジェクト指向は関係ない。
Cの構造体でメンバを公開したり非公開にしたりできまっせ。っていうだけのこと。
それを愚かというなら、その程度の規模のプログラムしか作ったことないんだろうね。
そうそう。
カプセル化っていってんだから、オブジェクト指向は関係ない。
Cの構造体でメンバを公開したり非公開にしたりできまっせ。っていうだけのこと。
それを愚かというなら、その程度の規模のプログラムしか作ったことないんだろうね。
225デフォルトの名無しさん
2020/08/20(木) 23:45:52.06ID:iNatz9V0226デフォルトの名無しさん
2020/08/20(木) 23:47:57.89ID:Ha0cLvqC227デフォルトの名無しさん
2020/08/20(木) 23:49:20.30ID:KHHtBj+5228デフォルトの名無しさん
2020/08/20(木) 23:50:03.69ID:Ha0cLvqC >>225
年収1000万超えのカリスマプログラマー(笑)さんですか?
年収1000万超えのカリスマプログラマー(笑)さんですか?
229デフォルトの名無しさん
2020/08/20(木) 23:50:43.49ID:KHHtBj+5 > でも修正するとき見ないと駄目なんだろw
でも風呂に入るとき脱がないと駄目なんだろw
じゃあ服着る意味がないじゃない
といっているのがお前
でも風呂に入るとき脱がないと駄目なんだろw
じゃあ服着る意味がないじゃない
といっているのがお前
230デフォルトの名無しさん
2020/08/20(木) 23:55:00.24ID:iNatz9V0231デフォルトの名無しさん
2020/08/20(木) 23:56:32.42ID:iNatz9V0 >>230
机じゃなくて椅子か。
机じゃなくて椅子か。
232デフォルトの名無しさん
2020/08/20(木) 23:59:10.43ID:Ha0cLvqC >>227
は?だってメンバ変数ってクラス内限定のグローバル変数だぜ
このときのお前のメソッドは俺の作るpublic staticなメソッドより遥かに
不出来で読みにくい
どこでいきなり編集されるかわからないメンバ変数に気を配りながら
メソッドを読むのはぶっちゃけ苦痛でしかない
は?だってメンバ変数ってクラス内限定のグローバル変数だぜ
このときのお前のメソッドは俺の作るpublic staticなメソッドより遥かに
不出来で読みにくい
どこでいきなり編集されるかわからないメンバ変数に気を配りながら
メソッドを読むのはぶっちゃけ苦痛でしかない
233デフォルトの名無しさん
2020/08/21(金) 00:00:02.85ID:f3uMOLT8 >>229
たとえ話が適切であることを証明してからしろよそういうのは
たとえ話が適切であることを証明してからしろよそういうのは
234デフォルトの名無しさん
2020/08/21(金) 00:01:33.82ID:x4g5r5SE > メンバ変数がクラス内限定のグローバル変数
その通りなんだが、声を出して笑ったわ。
君と働く人たちは大変だなw
その通りなんだが、声を出して笑ったわ。
君と働く人たちは大変だなw
235デフォルトの名無しさん
2020/08/21(金) 00:13:52.76ID:8bG0TKoL236デフォルトの名無しさん
2020/08/21(金) 00:14:57.41ID:8bG0TKoL 条件付きで何かを主張し始めたら、
それはもう主張が破綻してるってことなんですよ。
Macユーザー限定だとMacのシェア100%だ!みたいにね
それはもう主張が破綻してるってことなんですよ。
Macユーザー限定だとMacのシェア100%だ!みたいにね
237デフォルトの名無しさん
2020/08/21(金) 00:31:48.71ID:FlbTfju5 >>234-235
俺の作るpublic staticのが遥かに厳密に管理されてて
お前らのはしっかりやってるようでいて
わりかしドンブリだってわかっただろ?
俺はオブジェクト指向のここが特に嫌でメンバ変数がグローバル変数的な問題を起こすところが
クラスが大きくなったときに本当に嫌
つまり俺が嫌いなのはグローバル変数的な動きをするメンバ変数なんだよ
クラスでもちゃんと引数通してアクセスするような造りにしてるときは別にいいぜ
ただそれやるならpublic staticのがいいしやっぱりバカだね
俺の作るpublic staticのが遥かに厳密に管理されてて
お前らのはしっかりやってるようでいて
わりかしドンブリだってわかっただろ?
俺はオブジェクト指向のここが特に嫌でメンバ変数がグローバル変数的な問題を起こすところが
クラスが大きくなったときに本当に嫌
つまり俺が嫌いなのはグローバル変数的な動きをするメンバ変数なんだよ
クラスでもちゃんと引数通してアクセスするような造りにしてるときは別にいいぜ
ただそれやるならpublic staticのがいいしやっぱりバカだね
238デフォルトの名無しさん
2020/08/21(金) 00:43:01.36ID:8bG0TKoL > わりかしドンブリだってわかっただろ?
なにか証明した?
それがわかるというレスを(明示できるなら)やってみてよw
なにか証明した?
それがわかるというレスを(明示できるなら)やってみてよw
239デフォルトの名無しさん
2020/08/21(金) 00:43:45.59ID:8bG0TKoL240デフォルトの名無しさん
2020/08/21(金) 01:05:05.19ID:FlbTfju5241デフォルトの名無しさん
2020/08/21(金) 01:06:35.83ID:FlbTfju5 まあ、デバイス絡むとそいつの状態次第だけど
そこに限定できるじゃん?
そこに限定できるじゃん?
242デフォルトの名無しさん
2020/08/21(金) 02:13:09.68ID:8bG0TKoL >>240
引数が大量になるじゃんw
クラスの中にある変数を全部引数で渡すとしたら
何十個にもなるからな
それとも構造体で渡すのか?
そうすると構造体のうちどこを弄るかわからないから
結局グローバル変数と変わらなくなるなw
引数が大量になるじゃんw
クラスの中にある変数を全部引数で渡すとしたら
何十個にもなるからな
それとも構造体で渡すのか?
そうすると構造体のうちどこを弄るかわからないから
結局グローバル変数と変わらなくなるなw
243デフォルトの名無しさん
2020/08/21(金) 03:01:20.82ID:2Tg4ivJd たしかにベテランになるにつれ、パブリックスタティック関数でやりきる方がすっきりするかもしれん
整理の上手さで
利点はソースがシンプルで早く作れるのと、可読性が良い
ただし整理が上手い場合
もっとも、整理が下手ならクラスもうじゃーっとなるw
無駄にやたらオーバーロードしてたり
整理の上手さで
利点はソースがシンプルで早く作れるのと、可読性が良い
ただし整理が上手い場合
もっとも、整理が下手ならクラスもうじゃーっとなるw
無駄にやたらオーバーロードしてたり
244デフォルトの名無しさん
2020/08/21(金) 03:02:16.79ID:2Tg4ivJd いやオーバーロードはパブリックスタティックでもできるか
245デフォルトの名無しさん
2020/08/21(金) 04:45:13.35ID:xkZp2iCS >>243
もともと小さいプログラムならどっちでやってもすっきり書ける
問題はある程度大きくなると状態とかを取り回す必要が生じてその場合は
毎回staticな関数を呼ぶときにそれらを引数として渡さなきゃいけない
そこまで想像して発言してるか?
もともと小さいプログラムならどっちでやってもすっきり書ける
問題はある程度大きくなると状態とかを取り回す必要が生じてその場合は
毎回staticな関数を呼ぶときにそれらを引数として渡さなきゃいけない
そこまで想像して発言してるか?
246デフォルトの名無しさん
2020/08/21(金) 04:53:48.30ID:xkZp2iCS 小さいプログラムに対してはオブジェクト指向なんて記述が大げさすぎるのは事実だ
でもプログラムが大きくなってくるとその恩恵に預かれる
でもプログラムが大きくなってくるとその恩恵に預かれる
247デフォルトの名無しさん
2020/08/21(金) 04:55:17.21ID:cTh5+k8G 例えばボタンを描画する関数があったとする
そのスタイルとはボタンの色、サイズ、座標
面倒くさいからリンクを貼るけど
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.button?view=netcore-3.1
AccessibilityObject, AccessibleDefaultActionDescription, AccessibleDescription, AccessibleName,
AccessibleRole, AllowDrop., Anchor, AutoEllipsis, AutoScrollOffset, AutoSize, AutoSizeMode,
BackColor, BackgroundImage, BackgroundImageLayout, ImageLayout, BindingContext,
Bottom, Bounds, CanEnableIme, CanFocus, CanRaiseEvents, CanSelect, Capture,
CausesValidation, ClientRectangle, ClientSize, CompanyName, Container, ContainsFocus,
ContextMenu , ContextMenuStrip, Controls, Created, CreateParams, Cursor
飽きたがこれぐらい渡せばボタンが実現でっきるやろ
そのスタイルとはボタンの色、サイズ、座標
面倒くさいからリンクを貼るけど
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.button?view=netcore-3.1
AccessibilityObject, AccessibleDefaultActionDescription, AccessibleDescription, AccessibleName,
AccessibleRole, AllowDrop., Anchor, AutoEllipsis, AutoScrollOffset, AutoSize, AutoSizeMode,
BackColor, BackgroundImage, BackgroundImageLayout, ImageLayout, BindingContext,
Bottom, Bounds, CanEnableIme, CanFocus, CanRaiseEvents, CanSelect, Capture,
CausesValidation, ClientRectangle, ClientSize, CompanyName, Container, ContainsFocus,
ContextMenu , ContextMenuStrip, Controls, Created, CreateParams, Cursor
飽きたがこれぐらい渡せばボタンが実現でっきるやろ
248デフォルトの名無しさん
2020/08/21(金) 05:34:11.16ID:FlbTfju5 >>242
どっちでもいいよ
そこで見た目にビビってやめちゃうのが一番の害
それだけ複雑な処理だから仕方ないんだよ
逆にそれだけのもんをグローバル変数で空中戦なんかするから手に負えなくなる
どんなにでかくなっても引数と戻り値に打ち込めや
逆にそこの検閲を徹底するから楽になるんや
どっちでもいいよ
そこで見た目にビビってやめちゃうのが一番の害
それだけ複雑な処理だから仕方ないんだよ
逆にそれだけのもんをグローバル変数で空中戦なんかするから手に負えなくなる
どんなにでかくなっても引数と戻り値に打ち込めや
逆にそこの検閲を徹底するから楽になるんや
249デフォルトの名無しさん
2020/08/21(金) 05:36:23.70ID:FlbTfju5250デフォルトの名無しさん
2020/08/21(金) 07:03:30.98ID:xkZp2iCS >メンバ変数ってクラス内限定のグローバル変数だぜ
最強の迷言
最強の迷言
251デフォルトの名無しさん
2020/08/21(金) 08:40:41.98ID:FlbTfju5252デフォルトの名無しさん
2020/08/21(金) 09:09:18.44ID:x4g5r5SE お前がコーディングしたプログラム貼れよ。
一つのメソッドで1000行とかそれ以上書いてそうなんだよな。
一つのメソッドで1000行とかそれ以上書いてそうなんだよな。
253デフォルトの名無しさん
2020/08/21(金) 09:57:08.78ID:Tdq0GS4g254デフォルトの名無しさん
2020/08/21(金) 10:00:09.80ID:Tdq0GS4g 変数は必要最小限にしたが良い
数もスコープも
数もスコープも
255デフォルトの名無しさん
2020/08/21(金) 10:30:15.77ID:aoU7uP7R 要するにゴミのような想像を絶する現場で使われてる言語がJavaだった、と
すると袈裟が憎い理論も成り立つ
が、どんなパラダイムのどんな言語を使っても底辺ドカタはゴミを作り出す
とすると、一定水準以下の知能の物体は習得できない、面倒な言語を作った方がいい
すると袈裟が憎い理論も成り立つ
が、どんなパラダイムのどんな言語を使っても底辺ドカタはゴミを作り出す
とすると、一定水準以下の知能の物体は習得できない、面倒な言語を作った方がいい
256デフォルトの名無しさん
2020/08/21(金) 10:41:29.06ID:FlbTfju5 >>254
だからってその解決方法がグローバル変数じゃ駄目なわけよ
引数外してグローバル変数や突然取得できる何らかの手法例えばメンバ変数に逃げるのはやってはいけないこと
最低限にするのであって本来必要な引数までカットしていいわけではない
だからってその解決方法がグローバル変数じゃ駄目なわけよ
引数外してグローバル変数や突然取得できる何らかの手法例えばメンバ変数に逃げるのはやってはいけないこと
最低限にするのであって本来必要な引数までカットしていいわけではない
257デフォルトの名無しさん
2020/08/21(金) 10:42:26.76ID:cTh5+k8G >>256
必要な引数が多かったらどうすんの?
必要な引数が多かったらどうすんの?
258デフォルトの名無しさん
2020/08/21(金) 10:49:23.77ID:FlbTfju5 >>257
処理を分けるかそれができなければ
その引数はそのメソッドに必要なものなので潔く引数にズラズラ並べる
こうすることで
引数を通した時点で型チェック
メソッドを呼び出した頭で値のチェックができ、適切なエラーが出せるし出しやすい
無くしてしまっては何にもわからない
呼び出した側はその変数がそのメソッドに使われているかどうかすらわからない
エラーを出してもそれが内包されてるメンバ変数では一体何が起こったのかさっぱりわからない
処理を分けるかそれができなければ
その引数はそのメソッドに必要なものなので潔く引数にズラズラ並べる
こうすることで
引数を通した時点で型チェック
メソッドを呼び出した頭で値のチェックができ、適切なエラーが出せるし出しやすい
無くしてしまっては何にもわからない
呼び出した側はその変数がそのメソッドに使われているかどうかすらわからない
エラーを出してもそれが内包されてるメンバ変数では一体何が起こったのかさっぱりわからない
259デフォルトの名無しさん
2020/08/21(金) 10:57:12.37ID:wUhiKu+g >>258
俺はお前が何をやってるのかさっぱりわからないよw
結局のところ、お前はお前の言うやり方で、現実的に意味のある動作をするそれなりの規模のプログラムを書いたことはあるの?
実際のスケール感を無視して、頭の中の小さなサンプルだけをイメージしながら机上の空論を並べ立ててるだけでないの?
そりゃ自分に都合のいいモデルだけをイメージしてれば、サイキョーのカンペキな理論ができるわな
俺はお前が何をやってるのかさっぱりわからないよw
結局のところ、お前はお前の言うやり方で、現実的に意味のある動作をするそれなりの規模のプログラムを書いたことはあるの?
実際のスケール感を無視して、頭の中の小さなサンプルだけをイメージしながら机上の空論を並べ立ててるだけでないの?
そりゃ自分に都合のいいモデルだけをイメージしてれば、サイキョーのカンペキな理論ができるわな
260デフォルトの名無しさん
2020/08/21(金) 10:58:41.37ID:xkZp2iCS もうこのバカ相手にするのやめません?
261デフォルトの名無しさん
2020/08/21(金) 11:01:10.93ID:cTh5+k8G262デフォルトの名無しさん
2020/08/21(金) 11:01:36.84ID:cTh5+k8G263デフォルトの名無しさん
2020/08/21(金) 11:01:59.90ID:cTh5+k8G >>260
おもちゃを取り上げないでくれないかな?w
おもちゃを取り上げないでくれないかな?w
264デフォルトの名無しさん
2020/08/21(金) 11:11:15.32ID:FlbTfju5265デフォルトの名無しさん
2020/08/21(金) 11:29:37.79ID:cTh5+k8G266デフォルトの名無しさん
2020/08/21(金) 11:30:05.87ID:cTh5+k8G 何度言っても理解できない。アホなのか?本当のアホなのか?
267デフォルトの名無しさん
2020/08/21(金) 11:33:26.05ID:cTh5+k8G 引数で渡すと、この値なんなんですか?ってなる
「内部で使用するフラグです。」
初期化関数を呼んだら内部で必要なデータを返しますので
次呼ぶときに渡してください。
ファイルハンドルっていうんです。
みたいなね。
内部情報が一つだけならいいが
複数あったらどうするのか?
ファイルハンドルは内部に確保したメモリに
シーク位置を紐付けて保存してるんですよ
なんてことになるw
「内部で使用するフラグです。」
初期化関数を呼んだら内部で必要なデータを返しますので
次呼ぶときに渡してください。
ファイルハンドルっていうんです。
みたいなね。
内部情報が一つだけならいいが
複数あったらどうするのか?
ファイルハンドルは内部に確保したメモリに
シーク位置を紐付けて保存してるんですよ
なんてことになるw
268デフォルトの名無しさん
2020/08/21(金) 11:47:09.66ID:UrYJ9hGn >>247
ボタンごときに膨大なプロパティがあるのがおかしい
整理できてないw
さておき、実際にはほとんどデフォルトで使うから、「クラスなら面倒がない」と言いたいのかな
関数でも名前付き引数、あるいはコレクション渡しで未設定ならデフォルト、で省略できると思うが
まあコレクションはオブジェクト指向の基礎なので、これを使えば既にオブジェクト指向なんだろうけど
WinAPIもスタティック関数でオブジェクトを動かすので、スタティック関数は別にオブジェクト指向の対立概念ではないが
ボタンごときに膨大なプロパティがあるのがおかしい
整理できてないw
さておき、実際にはほとんどデフォルトで使うから、「クラスなら面倒がない」と言いたいのかな
関数でも名前付き引数、あるいはコレクション渡しで未設定ならデフォルト、で省略できると思うが
まあコレクションはオブジェクト指向の基礎なので、これを使えば既にオブジェクト指向なんだろうけど
WinAPIもスタティック関数でオブジェクトを動かすので、スタティック関数は別にオブジェクト指向の対立概念ではないが
269デフォルトの名無しさん
2020/08/21(金) 12:00:44.90ID:pQPzrAvT >>267
内部で〜はお前が出してるメッセージの問題だよね?
内部で〜はお前が出してるメッセージの問題だよね?
270デフォルトの名無しさん
2020/08/21(金) 12:03:46.30ID:pQPzrAvT271デフォルトの名無しさん
2020/08/21(金) 12:08:14.57ID:cTh5+k8G >>268
> ボタンごときに膨大なプロパティがあるのがおかしい
現実見ろよ
お前が言う方法で、create_button関数作ってみ
ボタンの属性として、ボタンの値、無効ボタンかどうか、
位置x、y、z座標、文字の色、ボタンの色、枠のスタイル、
ボタンの余白、文字の右寄せ・左寄せ、フォント、
まだまだあるが、これぐらいでいいだろう?
ボタンを作ったらこれだけの属性が初期設定として
設定される
はい、引数で作ってみてください
あと将来の拡張性も考えてね。
増えるかもしれない
> ボタンごときに膨大なプロパティがあるのがおかしい
現実見ろよ
お前が言う方法で、create_button関数作ってみ
ボタンの属性として、ボタンの値、無効ボタンかどうか、
位置x、y、z座標、文字の色、ボタンの色、枠のスタイル、
ボタンの余白、文字の右寄せ・左寄せ、フォント、
まだまだあるが、これぐらいでいいだろう?
ボタンを作ったらこれだけの属性が初期設定として
設定される
はい、引数で作ってみてください
あと将来の拡張性も考えてね。
増えるかもしれない
272デフォルトの名無しさん
2020/08/21(金) 12:24:30.10ID:FlbTfju5 構造体でも作れば見た目シンプルになるで
273デフォルトの名無しさん
2020/08/21(金) 12:28:47.71ID:AwYjNd+Z274デフォルトの名無しさん
2020/08/21(金) 12:32:51.09ID:AwYjNd+Z 結局、引数で複数の情報を与えるのはずらずら何十個の並べれば
また可能だとしても、戻り値が一つしかないから現実的じゃないんだよね
クラスを使うのは、一つのメソッドで
複数のプロパティを操作することがあるからなわけ
例えばcreate_buttonだったら複数のプロパティを初期化する
戻り値で複数の値を返せないし、戻り値を構造体とかクラスにして返すとしたら
結局それはお前の言うクラス内のグローバル変数と同じになってしまう
引数の構造体(クラス)のうちどこを変更するかわからないからね
また可能だとしても、戻り値が一つしかないから現実的じゃないんだよね
クラスを使うのは、一つのメソッドで
複数のプロパティを操作することがあるからなわけ
例えばcreate_buttonだったら複数のプロパティを初期化する
戻り値で複数の値を返せないし、戻り値を構造体とかクラスにして返すとしたら
結局それはお前の言うクラス内のグローバル変数と同じになってしまう
引数の構造体(クラス)のうちどこを変更するかわからないからね
275デフォルトの名無しさん
2020/08/21(金) 12:50:37.55ID:AwYjNd+Z 引数で渡すと将来の修正時の拡張性と互換性が犠牲になる
これはいい知見だ
これはいい知見だ
276デフォルトの名無しさん
2020/08/21(金) 12:51:17.64ID:7UnAdk+W 変数のスコープと型の違いも区別できてないようだと
どういうやり方しても泥スパゲッティしか出来上がらない
どういうやり方しても泥スパゲッティしか出来上がらない
277デフォルトの名無しさん
2020/08/21(金) 12:53:26.97ID:Q2DXCe4b 関数型を否定するのか。
278デフォルトの名無しさん
2020/08/21(金) 12:57:43.17ID:AwYjNd+Z 関数型は否定してないよ
少数の引数と一つの戻り値だけで実現できることなら関数型でやればいい
それができないことまで無理してやろうとするのはデメリットしか無いという話
引数で渡せばメリットが有る、だから引数で渡すようにしよう!
これは間違いで
引数で渡せる場合は、関数型にメリットが有るが
そうでない場合にはむしろろデメリットになる
条件に応じて関数型にするかに分岐するのであって
関数型にするために条件を無理やり歪めてはいけないということ
少数の引数と一つの戻り値だけで実現できることなら関数型でやればいい
それができないことまで無理してやろうとするのはデメリットしか無いという話
引数で渡せばメリットが有る、だから引数で渡すようにしよう!
これは間違いで
引数で渡せる場合は、関数型にメリットが有るが
そうでない場合にはむしろろデメリットになる
条件に応じて関数型にするかに分岐するのであって
関数型にするために条件を無理やり歪めてはいけないということ
279デフォルトの名無しさん
2020/08/21(金) 13:56:53.08ID:YabcZt9w 構造体でまとめることによって引数で渡せるようになるのなら、そうした方が関数型的な考え方に親和的ということはない?
戻り値が引数以外に依存するのはできるだけ避けるというのが関数形的な発想かと思っていたが、
戻り値が引数以外に依存するのはできるだけ避けるというのが関数形的な発想かと思っていたが、
280デフォルトの名無しさん
2020/08/21(金) 14:03:53.99ID:AwYjNd+Z >>279
そうすると結局、クラス内のメンバ変数のどこがいじられるかわからないというのが
引数の構造体のどこがいじられるかわからないという問題に変わるだけで
関数型を使うメリットが無くなる
じゃあもうクラスでいいじゃんとなる
何度も言うように、関数型が優れてるから関数型に移行するのではなく
関数型が優れてる場合は限られてるので、そこだけ関数型にすればいい
関数型にメリットがないならオブジェクト指向にすればいい
その例が、ボタンの生成のように一つの関数で
複数のメンバ変数を初期化するような例
そうすると結局、クラス内のメンバ変数のどこがいじられるかわからないというのが
引数の構造体のどこがいじられるかわからないという問題に変わるだけで
関数型を使うメリットが無くなる
じゃあもうクラスでいいじゃんとなる
何度も言うように、関数型が優れてるから関数型に移行するのではなく
関数型が優れてる場合は限られてるので、そこだけ関数型にすればいい
関数型にメリットがないならオブジェクト指向にすればいい
その例が、ボタンの生成のように一つの関数で
複数のメンバ変数を初期化するような例
281デフォルトの名無しさん
2020/08/21(金) 14:05:27.74ID:AwYjNd+Z × 戻り値が引数以外に依存するのはできるだけ避ける
○ 戻り値が引数以外に依存するのが "避けられる場合に限って" 関数型を使いましょう
○ 戻り値が引数以外に依存するのが "避けられる場合に限って" 関数型を使いましょう
282デフォルトの名無しさん
2020/08/21(金) 14:22:18.92ID:7UnAdk+W 関数型を実践したこともないのに
知ったかして関数型関数型と連呼しちゃうのは
日本を出たこともなく日本のことしか知らないのに
欧米では〜欧米では〜と連呼してるのと同じ
知ったかして関数型関数型と連呼しちゃうのは
日本を出たこともなく日本のことしか知らないのに
欧米では〜欧米では〜と連呼してるのと同じ
283デフォルトの名無しさん
2020/08/21(金) 14:28:24.68ID:Tdq0GS4g 自分で経験したことしか信じない人っていますよね
284デフォルトの名無しさん
2020/08/21(金) 14:42:05.45ID:Tdq0GS4g じゃあグローバル変数を使って大規模なプログラムを組み上げたことがない人はグローバル変数を批判してはいけないのか
実践せずともわかるだろうが、関数型も欧米も想像で十分
実践せずともわかるだろうが、関数型も欧米も想像で十分
285デフォルトの名無しさん
2020/08/21(金) 15:11:36.49ID:AwYjNd+Z だから多数のプロパティを持つcreate_buttonを関数型で実装してほしい
286デフォルトの名無しさん
2020/08/21(金) 15:22:29.34ID:xkZp2iCS それもグローバル変数を使わずに
287デフォルトの名無しさん
2020/08/21(金) 15:23:39.17ID:xkZp2iCS 押下されたらちゃんとその状態も反映すること
288デフォルトの名無しさん
2020/08/21(金) 15:27:03.62ID:Q2DXCe4b 1クラス1メソッドの原則を守れば可能。
289デフォルトの名無しさん
2020/08/21(金) 15:29:04.16ID:2S3OsUgZ 1クラス1メソッドの原則なんて言葉はお前が考え出したものだろ?w
290デフォルトの名無しさん
2020/08/21(金) 15:38:01.82ID:YabcZt9w ボタン自体は状態を持つものだから、オブジェクト指向で実装するのが自然でしょ?(関数型でも抜け道があるのかもしれないが、自分は関数型には詳しくないのでわからない)
しかし、上でされていた議論はそういう話ではなくて、関数の戻り値が依存する情報を、@全て引数として与えることも、A一部はメンバ変数から引っ張ってくることもできるという状況の場合に、どちらを選択するかという問題設定だと思っていたんだが。
しかし、上でされていた議論はそういう話ではなくて、関数の戻り値が依存する情報を、@全て引数として与えることも、A一部はメンバ変数から引っ張ってくることもできるという状況の場合に、どちらを選択するかという問題設定だと思っていたんだが。
291デフォルトの名無しさん
2020/08/21(金) 15:41:01.39ID:2S3OsUgZ292デフォルトの名無しさん
2020/08/21(金) 15:47:59.93ID:xkZp2iCS グローバル変数未使用で関数のみを使って状態にも対処できる!
オブジェクト指向なんて選択肢はない!
と言い張る子の霊圧が消えた...
オブジェクト指向なんて選択肢はない!
と言い張る子の霊圧が消えた...
293デフォルトの名無しさん
2020/08/21(金) 15:49:18.62ID:x4g5r5SE294デフォルトの名無しさん
2020/08/21(金) 15:50:37.63ID:xkZp2iCS そして日本語もまともに読めないらしい
295デフォルトの名無しさん
2020/08/21(金) 16:05:07.06ID:xkZp2iCS はよこいつにとどめさしてあげて
296デフォルトの名無しさん
2020/08/21(金) 16:24:00.01ID:2S3OsUgZ もう死んでね?w
ボタンを関数型で作れなかったんだから
ボタンを関数型で作れなかったんだから
297デフォルトの名無しさん
2020/08/21(金) 17:27:54.83ID:Tdq0GS4g >>296
お前作れんの?
お前作れんの?
298デフォルトの名無しさん
2020/08/21(金) 17:28:26.23ID:Tdq0GS4g 作れなかったら>>296の負けだから
299デフォルトの名無しさん
2020/08/21(金) 17:33:06.64ID:UrYJ9hGn >>271
たしかC++ってそういうもんだがw
しかも同じく嫌いだよw
整理できてない
で、なんでクラスだとそれが楽になるのかね
>さておき、実際にはほとんどデフォルトで使うから、「クラスなら面倒がない」と言いたいのかな
こういうことかね、て先回りして聞いてるんだが
たしかC++ってそういうもんだがw
しかも同じく嫌いだよw
整理できてない
で、なんでクラスだとそれが楽になるのかね
>さておき、実際にはほとんどデフォルトで使うから、「クラスなら面倒がない」と言いたいのかな
こういうことかね、て先回りして聞いてるんだが
300デフォルトの名無しさん
2020/08/21(金) 17:34:24.29ID:Q2DXCe4b Reduxみたいなやつな。
はよ作れ。
はよ作れ。
301デフォルトの名無しさん
2020/08/21(金) 17:49:58.82ID:xkZp2iCS ちなみに俺はGUIを実装したことある
302デフォルトの名無しさん
2020/08/21(金) 17:50:12.82ID:xkZp2iCS オブジェクト指向でな!
303デフォルトの名無しさん
2020/08/21(金) 17:54:10.24ID:xkZp2iCS 作れもしないくせにど素人が楯突くな
304デフォルトの名無しさん
2020/08/21(金) 17:57:19.01ID:UrYJ9hGn そんなにうじゃっとしてないか
https://bituse.info/winapi/5
//ボタンコントロール作成
hwnd_button=CreateWindowA("button","ボタン",WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
50,50,100,100,hwnd,(HMENU)CHILD_ID,hInstance,NULL);
親ウィンドウの準備がイラっとするのかな
https://bituse.info/winapi/5
//ボタンコントロール作成
hwnd_button=CreateWindowA("button","ボタン",WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
50,50,100,100,hwnd,(HMENU)CHILD_ID,hInstance,NULL);
親ウィンドウの準備がイラっとするのかな
305デフォルトの名無しさん
2020/08/21(金) 17:59:06.13ID:xkZp2iCS そんなお膳立てされたAPI使っていいって誰が言った?
306デフォルトの名無しさん
2020/08/21(金) 18:03:32.36ID:UrYJ9hGn ちなみに多くの人が、「クラスオブジェクト指向な記述で」を「オブジェクト指向で」と言ってるようだね
スタティック関数で動かすオブジェクト指向もあるので(C++、WinAPI)
略すなら「クラスで」と言った方がいい(これも不正確だが)
スタティック関数で動かすオブジェクト指向もあるので(C++、WinAPI)
略すなら「クラスで」と言った方がいい(これも不正確だが)
307デフォルトの名無しさん
2020/08/21(金) 18:22:59.95ID:iO1OXKqS windows apiはc言語でしょ
308デフォルトの名無しさん
2020/08/21(金) 20:03:28.77ID:Q2DXCe4b システムワイドでReduxのような仕組みを適用するのは無理だろうか?
309デフォルトの名無しさん
2020/08/21(金) 20:12:46.04ID:7ttzM/39 思うに、このスレに集まってる人らの
業務内容が違うんから議論がズレるんじゃないか?
Web系の場合メモリ上の
オブジェクトは一瞬で役目を終えるから
正直カプセル化とかいらない
node.jsやPHPでデータベースのへselect文投げると
連想配列オブジェクトの配列が帰ってくるから
つまりテーブルから動的にクラスののオブジェクトが
生成するから正直クラス定義もいらない
staticでなんの問題もないと思う。
状態管理は特有のセッションに保持するだろう。
でもゲーム系だとキャラのHPみたいなゲージ管理や
持ち物、装備品などいつまでもメモリ上に
居座って状態管理が必要だからオブジェクト指向
とカプセル化は大切。
業務内容が違うんから議論がズレるんじゃないか?
Web系の場合メモリ上の
オブジェクトは一瞬で役目を終えるから
正直カプセル化とかいらない
node.jsやPHPでデータベースのへselect文投げると
連想配列オブジェクトの配列が帰ってくるから
つまりテーブルから動的にクラスののオブジェクトが
生成するから正直クラス定義もいらない
staticでなんの問題もないと思う。
状態管理は特有のセッションに保持するだろう。
でもゲーム系だとキャラのHPみたいなゲージ管理や
持ち物、装備品などいつまでもメモリ上に
居座って状態管理が必要だからオブジェクト指向
とカプセル化は大切。
310デフォルトの名無しさん
2020/08/21(金) 20:23:39.45ID:Q2DXCe4b うーん。
職業プログラマが5chで情報交換してたら、ちょっとひどすぎない?
俺は自分の職業の板なんて行かない。
見たことはもちろんあるけど、素人が玄人のフリしてうんちく述べてるだけで、俺らが何か書き込むことは無いと思うよ。
それとも職業プログラマってそんなに程度低い?
素人とうんちく語り合うほど?
職業プログラマが5chで情報交換してたら、ちょっとひどすぎない?
俺は自分の職業の板なんて行かない。
見たことはもちろんあるけど、素人が玄人のフリしてうんちく述べてるだけで、俺らが何か書き込むことは無いと思うよ。
それとも職業プログラマってそんなに程度低い?
素人とうんちく語り合うほど?
311デフォルトの名無しさん
2020/08/21(金) 20:24:45.30ID:Q2DXCe4b プロが匿名掲示板で情報交換して得るものなんてないでしょ。
あったら怖いわw
あったら怖いわw
312デフォルトの名無しさん
2020/08/21(金) 20:34:27.65ID:x4g5r5SE >>309
常駐プログラム云々いっちゃうと、GCが優れてる!いや、C++のデストラクタの方が!
とか、そういう話にもなっちゃうからオブジェクト指向云々は関係ないような。
優秀なCプログラマならCでもリークしないプログラム書くでしょ。
static云々言ってるバカは、オブジェクト指向でもリーク起こすと思うわ。
常駐プログラム云々いっちゃうと、GCが優れてる!いや、C++のデストラクタの方が!
とか、そういう話にもなっちゃうからオブジェクト指向云々は関係ないような。
優秀なCプログラマならCでもリークしないプログラム書くでしょ。
static云々言ってるバカは、オブジェクト指向でもリーク起こすと思うわ。
313デフォルトの名無しさん
2020/08/21(金) 20:49:57.82ID:xkZp2iCS オブジェクトのライフサイクルとカプセル化がなんの関係あるんだ?
314デフォルトの名無しさん
2020/08/21(金) 20:50:21.42ID:xkZp2iCS 素人発言が目立ちだしたな
315デフォルトの名無しさん
2020/08/21(金) 20:51:44.98ID:xkZp2iCS 素人が玄人のフリしてうんちく述べてるのがうざいから消えてほしいとは思ってる
でも中にはプロっぽい人も紛れてる
でも中にはプロっぽい人も紛れてる
316デフォルトの名無しさん
2020/08/21(金) 20:55:22.67ID:Q2DXCe4b いや、無いない。
素人が適当なこと書いてるから訂正するか?
無い無い。
レベルが違いすぎるのよ。
それとも何か?
プログラマという職業に限ってそんなにレベルが低いか?
素人と言い争うほどか?
素人が適当なこと書いてるから訂正するか?
無い無い。
レベルが違いすぎるのよ。
それとも何か?
プログラマという職業に限ってそんなにレベルが低いか?
素人と言い争うほどか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 [少考さん★]
- 「働いて働いて」の流行語大賞に懸念 「言葉が独り歩き」 過労自殺遺族 [尺アジ★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 【画像】消えた美人女優 上原多香子さん(42)、沖縄で目撃される [牛丼★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- バイク事故で入院ゆたぼん、見舞金「1円」振り込みの名義に衝撃「悲しい人ですね」「こういう人がいるから…」 [muffin★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★1
- 高市早苗、森元総理の愛人だった [347751896]
- 【声優】亡くなった人で好きだった声優👈誰を思いつく?? [519998392] [839143615]
- 【急募】三大最近やたらスレが伸びる芸能人「田中みな実」「佐藤健」あと1人は?
- 来年からPCの価格がガチのマジで超ヤバイ程値上がる模様。お前ら買ったか?Sandy高市 [484676894]
- google面接官「一回ごとに誰かの生活保護が打ち切られる代わりに、1mのチェロス(揚げたて)が出てくるボタン」 [329329848]
