1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Serializer】カラムの命名は他言語開発者にも配慮しよう

Posted at

きっかけ

最近でいちばんなるほどと思ったこと、検索してもあまり出てこない情報だなと感じたのでまとめる。

出来事

ActiveModelSerializerでJSONを出力する際、Rubyの命名規則でカラム名を書こうとした。
たとえば、ユーザーが自身のアイコン画像があるかのフラグを真偽値で返したいときの命名。

class UserSerializer < ActiveModel::Serializer
  attributes :id,
             :name,
             :registered_avatar

  def registered_avatar
    ...
  end
end

最初はavatar_registered?と命名しようとしたが、
他のserializerのコードを見ても語尾に?をつけた命名をしていなかったので、
何でだろうと思いながらも一応空気を読んでregistered_avatarと命名してPRを出した。

すると

avatar_existの方がいいかも。
Serializer内での命名はJSONに反映され、特に他の言語の開発者の目に触れるので
Rubyの命名規則ではない方が他言語の開発者にとってわかりやすい。
JSやSwiftなど有名どころの言語の命名習慣を見ておくといいよ!

とレビューをもらった。

まとめ

「なるほど、たしかに語尾に?付ける命名するのはRubyだけだしな」とかなり腑に落ちた!
API作るときなど、ネイティブ側へのこういう細かい配慮まで考えて開発できるエンジニアになりたいと強く思いました。

↓最終的なコード

class UserSerializer < ActiveModel::Serializer
  attributes :id,
             :name,
             :avatar_exist

  def avatar_exist
    ...
  end
end
1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?