Ruby

【るびまメモ】StructとHash(おまけ:Rubyで型付けができるTypeStruct)

栗原勇樹さん(@_ksss_

どんな key があるか固定なら Struct、不定なら Hash

Struct

・class 名が付いているのでデバッグしやすい
・key 名を typo しても即座にわかるのでデバッグしやすい
・メンバー呼び出しの syntax が書きやすい

メンバー呼び出しのsyntaxが書きやすいっていうのはどういうことだろう?

Hash

・リテラルがあるので生成 syntax が書きやすい
・未知の key でも格納できる
・keyword argument など、言語組み込みの機能が豊富

これはメリットがわかりやすい。

Rubyist Magazine 0054 号 「Ruby に型があると便利か」 - 【おまけ Hash? それとも Struct?】

余談

Rubyist Magazine 0054 号 「Ruby に型があると便利か」にある、TypeStructというgemの利用シーンとしてJSON API のサーバー側実装が挙げられているけれど、ReactやSwiftでクライアントが動いていて、そっちでJSONオブジェクトの型付けがされている場合、API側でも型付けする必要はないかな?

しかし果たして、型付けをするのはクライアントとAPI側どちらが良いのだろう?
API側はバリデーションやデータベース制約があるから、ある程度型が曖昧でも、致命的な障害とかは発生しない?
すると、やはりクライアント側で型付けをする方が予期せぬバグを防ぐことができるのだろうか?