特集1 名前付け大全
リーダブルコードや、いろんな書籍で言われていることが書かれているのかな?と思いきや、新しい発見があるよい特集でした。
みんなにも読んでもらいたいと思ったところ
1. 良い名前が持つ資質
- シンプルさ
- 名前の意味と挙動が一致している
2. Railsの作者DHHの意見
「完全で長い名前 vs 不完全で完結な名前」に関して、
「(過去に書いた)コードに戻ってきて、それが何をやっているのか正確にしれたとき、(長い名前は)バカっぽいという印象は吹き飛ぶ」
完全で長い名前が普及されて欲しいと思います。
新しく勉強になったところ
1. 対象や役割で、重要な名前のスコープを絞ろう
多くのプロジェクトでありがちだと思うけれど、OperationとかCoordinatorとかUserとか..、特に中心的なクラスになるほど、名前付けの時点で概念が広くなってしまっているクラスはないでしょうか。対策として、 what とか role で絞ってあげると、名前がよりシャープに洗練されそうです。
例
- 「管理画面の操作」であれば、Operationではなく、AdminOperation
- 「受信するユーザー」であれば、userではなく、recipient
2. 誤読を防ぐ冗長化対策
すでにSaveItem() という単数形のメソッドがあったとして、追加するなら後者のようにAllという単語で冗長化し、複数であることを強調して、誤読を防ぐ方法があるそうです。
- SaveItems()
- SaveAllItems()
特集2 高速!安全!高信頼!速習gRPC
gRPCは、Googleが長年運用してきたStubbyをOSS化した Remote Protocol Callのフレームワーク。とても便利そう。
- Windows, Linux, Macで動作
- 複数のプログラミング言語をサポート
- protobufを使用し、定義したメソッドの引数や戻り値の型、やりとりするデータおよびデータを構成するフィールドがわかるような静的型付けのデータシリアライズを行ってくれる
- HTTP/2によるストリーミング方式を基礎にしている
- マイクロサービス間の通信にピッタリ
- モバイルアプリとサーバ間の通信でも、バッテリ持ちや、データ転送量の削減などに効果あり
- ブラウザとサーバ間の通信はgrpc-webを利用して通信できる
Rubyのウラガワ
いままで、object_idってなんだろう?と思っていましたが、ポインタの指し示す位置だということがわかりました。