akira581
@akira581

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

userIdかuserIDか[意見募集]

Discussion

プロジェクト全体で統一するべきか、言語の推奨に合わせるべきか

うちのプロジェクト(iOS: Swift,Android: dart,サーバーサイド: javaScript)
では共通してuserIdという変数名を使っていたのですが、参加してくれている開発メンバーが
「SwiftではuserIDを使うのが正しい。間違った方に合わせるのは納得できない。合わせるならuserIDにするべき。」
という意見で、userIdとuserIDが入り乱れてしまっています。
プロジェクト全体で共通化したほうが可読性が上がるのでSwiftでもuserIdで統一したいのですが、みなさんはどう思いますか?
二人で議論してても平行線なので何かご意見書き込んでくれると嬉しいです。
なお、外部に公開するAPIなどではなく、内部で使用する変数名の話です。

意見1
言語仕様よりもプロジェクト独自の仕様を優先し、
userIdに統一するべき
意見2
プロジェクト独自の仕様よりも言語仕様を優先し、
SwiftではuserID、それ以外でも言語の推奨があればそれに合わせるべき

SwiftのAPI設計ガイドライン
(Google翻訳済みの写真を貼っておきます)
スクリーンショット 2022-08-17 8.10.18.png

3

IDって「Iなんちゃら Dなんちゃら」の略で ID なんだと思ってるのかもしれないですね。
本当にそういう略語なら ID にすべきなんだろうけど、もし Identifier の意味なら Id でいいのでは。

4Like

SwiftではuserIDを使うのが正しい。間違った方に合わせるのは納得できない。合わせるならuserIDにするべき。

これが、「そういう名前を使わないと環境やライブラリの動作上不具合(あるいは使いづらい点)が出る」というのであれば最優先にせざるを得ません(実際に、ある種の識別子について頭字語をそのまま大文字で書くと動かない環境で、「PdfParser」という名前が登場したことがあります)。

そうでないのであれば、プロジェクト全体で統一することを優先すべき、と考えます。似て非なる名前が複数使われる状況は、ケアレスミスを生みがちです。

3Like

プロジェクト内での複数の言語に跨るuserIdがどれも同じものを指すのであれば、変数名も言語特有の慣例よりもプロジェクトでの統一が優先されるべきかと思います。

変数名ではありませんが、JavaScriptでは innerHTMLDOMContentLoaded など、頭文字を繋げた略語の部分は全体が大文字ですが、idに関しては getElementById のようにIDではなくIdなので、個人的には userID にも違和感を覚えます。

2Like

言語の推奨があればそれに合わせるべき

言語によってあれこれ変えるのは違和感がありますね・・・
プロジェクトで定めたコーディング規約を正として統一してもらう方がいいと思います。

4Like

userIduserID であれば、userID 派に一票入れたいところです。

フォントによって userlduserId の、一瞬の無駄な判断のタイムラグが気になる派なので、個人的に userID の方がしっくりくるからです。

しかし、プロジェクト立ち上げの時点で規約がなかったのであれば、まずはプロジェクト全体で統一されていた userId を優先した方が良いと思います。

と言うのも、その方が後に規約が定められても置換しやすいからです。

この問題は、スタンダードが、外部から来た人は「世間のスタンダード」であるのに対し、内部の人は「歴史がスタンダード」という違いだけの話しだと思います。

「あわせる必要がある」という意味では両者の意見は同じだと思います。一番の問題は「明確なスタンダードがなかった」ことだと思います。

まずは、徹底的に統一して、その上で PL や PM などに問題点を挙げてコーディング規約を定め、linter を必須とするのが王道・正論じゃないかと思います。今後も外部の人が入ってくるなら、なおさら。

実際には「いままでのコーディングスタイルを規約化するのが面倒」なので「世間で標準化されたスタンダードを使いたい」でも「今までのコードを書き換えるのが大変」という、あるあるなジレンマが PM から放置されてるだけな気もします。

2Like

IDは略語なので個人的にuserID派ですが、重要なのはプロジェクト内で一貫性が取れていることだと思います。
複数人開発なら、プロジェクト内のコーディング規約に準じるべきでしょう。

これ以外に、似たような意味の違う単語問題とかあっていろいろ面倒ですよね。

2Like

どちらかに統一すれば良いと思います。

ただし、userID に統一する場合、万が一Swiftの仕様が user_id に変わったら、プロジェクト全体も user_id に変えるべき、という話になってしまうのは反対です。効果に対してリスクが大きすぎると思います。

2Like

userIDの根拠がそのドキュメントだけであるならば、ID/IdはIdentifierの頭字語(acronym/initialism)ではないのでuserIdが正解ではないでしょうか?(個人的にもId派です)

Swift/iOS的には省略せずにuserIdentifierな気もしますがw

0Like

Your answer might help someone💌