(>>49の続き)
二番目の要望は、「可変(mutable)な操作と不変(immutable)な操作の明確化」です
具体的には、Rubyにはオブジェクトの状態を破壊的に更新するメソッドであれば、
そのメソッド名の末尾に !(感嘆符) を付けようという弱いルールが昔から存在していました
(この末尾感嘆符ルールは、Lisp文化に由来すると思われます)
けれどもこのルールは一般にはほとんど普及していませんし、
残念なことに組み込みクラスですらルールが守られていないケースがあります
たとえば、Hashクラスには二つのハッシュを(破壊的に)結合する可変操作merge!と
破壊せずに結合するmergeがある一方で、merge!と同じ可変操作updateが存在します
これはRuby 1.8 -> 1.9 の時点でupdateを廃止するか、あるいはdeprecate(非推奨)を
判断して、リファレンスへ反映させるべきでした
組み込み/標準のクラスですら平気で逸脱しているのだから、ユーザが遵守する訳がありません
関数型プログラミング作法の基本は
「(破壊的代入を含む)副作用を避けた参照透明性のあるプログラミング」
であり、Rubyにおいては
「副作用を極力避けたり、参照透明性のある部分とない部分を意識的に使い分ける、
あるいは副作用のあるコードを隠蔽する」
ことが、高品質コード設計技法では重要になります -- (LLバトルスレ25のレス#255も参照)
一般に普及している手続き型プログラミングでは破壊的操作が基本ですから、
「可変な操作と不変な操作の明確化」への関心はさほど強くなかったことが
現状の背景にあると思いますが、関数型プログラミングによる高品質コード設計では
こんな些細なこだわりも大切になるでしょう
(終わり)
ニュース
- 【速報】GMO、ランサム被害にあった顧客に新しいPC提供へ [Hitzeschleier★]
- 【速報】GMO不正アクセス 攻撃者が顧客の個人情報の一部をネットに公開「毎日正午に順次公開」★2 [Hitzeschleier★]
- 【声明】GMO「公開された情報にアクセス・拡散しないで」情報拡散者に対して法的措置へ [Hitzeschleier★]
- 【速報】GMO、顧客にパソコン電源オフを要請 27日正午に攻撃との脅迫受け ★6 [おっさん友の会★]
- サイバー攻撃ハッカー集団、GMOが27日12:00までに1億6000万払わなければ、顧客攻撃と声明 GMOは政府に防御要請、警察自衛隊へ ★2 [お断り★]
- GMO、情報公開の顧客に、一律5000円​の見舞金とは別の追加見舞金を検討中 [Hitzeschleier★]
- GMO熊谷社長、お気持ち表明「───今こそ、官民連携で日本を守ろう。」 [762037879]
- ツイフェミ「イスラム人は日本の女舐めすぎ 金たま潰すぞ」炎上
- 【高市朗報】GMO顧客、毎日12時に個人情報公開と引き換えに追加見舞金が貰えるガチャ開催 [663382246]
- 【悲報】GMO、ハッカー集団えげつない、人生終了する人続出か? [383063292]
- GMO、公開された情報を拡散する「悪質性の高い情報拡散者」に対して法的措置を行うと発表 [256556981]
- 【高市悲報】識者「戦争?勝てますよ😤シーレーンさえ守りきれば。西側諸国が黙ってない」😳 [359965264]