Rubyのツラミ
#ruby
メモ
その値の型が何か?を常にデバッグで確認しないといけない
この一事だけでも既存コードを読む労力の7割くらいを使っている気がする
activerecordは便利だけど副作用を完全にコントロールできない
中規模くらいのソフトウェアをつくるなら最適な解だと感じるけど大規模なソフトウェアになると副作用を完全にコントロールしたい。もといそういう書き方に自然と誘導されるような言語の方が良い
不必要なメタプロミングが横行している
Rubyのクラスはクラスじゃない。クラスもオブジェクトというフラットさがメタ力を格段に引き上げている
Rubyのクラスはオブジェクトである
Ruby で扱える全ての値はオブジェクト。これはつまり、クラス自身もオブジェクトであるということです。
だけど普段のプログラミングで強力な自由さなんて不必要だったんだと気づいた
Haskellくらい強力に縛ってくる言語の方が良い(極論w)
ゴーストメソッド
「メソッド = どこかのクラスで定義されているもの」という印象が強いので、「持ち主がよく分からないメソッド」の存在はデバッグ等で苦労させられる
なぜか分離と副作用のコントロールがしづらい
なぜだ?なぜかRubyで書いてると密結合でMVCで副作用フルなコードになってしまう。それ以上の分離をしてドメインロジックを保護するとか副作用を極所化するみたいな書き方と設計ができなくなる
これは自分の能力の問題の可能性が高いがまあ愚痴らせてもらう。
Rubyはなんでも許してくれるくらいの懐の深さがある柔軟な言語なので人間がこれで大きなソフトを構築するのは無理だ。ただAIとかがソフトウェアを表現するための言語としては適しているんじゃないかな
インタフェース
Rubyでは、型やインターフェースはあなたの心の中にあるのです。
まあ、抽象クラスやインターフェースの代わりにmoduleが使えますが、使いすぎるとRubyっぽくなくなるので、ほどほどに。
https://x.com/yukihiro_matz/status/1066980158429552640
関連
Ruby2系はチームの幸福度を最大化できなかった #Ruby - Qiita