質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
命名規則

命名規則は、プログラミングする際に識別子の名称である文字列を決める表記法のことです。ネーミング規則・ネーミング規約・命名規約とも呼びます。

Q&A

解決済

3回答

5801閲覧

変数名の命名規則 - 不可算名詞を複数形のように表したい。

rtgsdfsdg

総合スコア174

命名規則

命名規則は、プログラミングする際に識別子の名称である文字列を決める表記法のことです。ネーミング規則・ネーミング規約・命名規約とも呼びます。

0グッド

1クリップ

投稿2020/09/21 11:41

状況

ファイルをモデル化して以下の2つになった。

  • FileInfo ファイルの名前や作成日時を保持するモデル
  • FileContent ファイルの中身を持つモデル

※ ファイルの中身はサイズが大きいので、2つのモデルに分割した。

FileInfoを検索し複数のFileInfoを返すメソッドをとする。
の命名は< 動詞 > + < 名詞 >の命名規則に従う。

課題

このとき、名詞部分にFileInfoの複数形が来るべきですが、Infoは不可算名詞です。
また、FileInfoListをつければ複数を意味できますが、そうするとSaerchFileInfoListというようになり、複数のFileInfoを検索するというよりは、FileInfoのリストを検索するというニュアンスになる気がします。
皆様はこのような時、どのような命名をしますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

皆様はこのような時、どのような命名をしますか?

クラスの命名のアンチパターン

Info って何やねん? Data って何やねん? ImageInfo って Image とはどう違ふねん??

という意見と同じで、基本的にはInfoという命名自体を極力避けます。

ただし、フレームワークでFileInfo クラスという命名がされている場合もあるので、この場合はFileInfoArrayFileInfoListなど、コレクションの種類がわかる接尾辞を付けるのは次善の策としてはアリだと思います。

そうするとSaerchFileInfoListというようになり、複数のFileInfoを検索するというよりは、FileInfoのリストを検索するというニュアンスになる気がします。

まず、FileInfoListと名付けたコレクションそのものがSearchなりFindなりのメソッドを持つべきだとは思いますが…その場合はFileInfoList.Search(key)keyに一致するFileInfoを検索する意味は伝わります。

やむを得ずFileInfoListオブジェクトの外部に検索メソッドを定義する場合、SearchFileInfoFrom(FileInfoList, key)でも同様の意味は伝わると思います。

逆にFileInfoの中から何らかのkeyに一致するものを取得する場合、単にSearchFrom(FileInfo, key)となるでしょう。取得するデータの種別に名前がついていたり、区別する必要があるのであれば、ここもSearchXXXFromXXXに適切な名前を入れても良いでしょう。(AttributeとかPropertyとか)

Fromは無くても伝わるかもしれませんが、ここではメソッドがコレクションクラスに属していない前提のため、あった方が明示的に「ここから」という意味を伝えられると思います。

追記

上記回答で一点漏れてましたが

複数のFileInfoを検索するというよりは、FileInfoのリストを検索するというニュアンスになる気がします。

この言い回しが微妙に分かりづらいのですが、これが取得する対象の単複の区別の話だとすると、それは基本的にメソッドの戻り値で判別可能で、あまり神経質にならなくてもわかるハズです。利用者は、メソッドの名前だけでなくシグネチャ全体で判断できます。

戻り値が単一のFileInfoなら1件のFileInfoを取得するメソッドであるのは明らかだし、FileInfoの配列やコレクションであれば複数件を取得するものだとわかります。

命名で差をつけるとすれば前者がFind(条件), FindOne(条件)、後者がFindAll(), FindBy(条件)みたいな形が分かりやすいとは思いますが。

いずれにせよ、迷った場合は利用している環境のフレームワークや標準ライブラリの命名に寄せるのが一番伝わりやすいため、ここで挙げたものが全てではないですが。

投稿2020/09/21 12:35

編集2020/09/21 15:35
gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

FileInfoでは抽象的なので、FileMetaDatum(複数形がFileMetaData)のようにしてはどうでしょうか?

投稿2020/09/21 12:31

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/09/21 12:56

単語の起源やアカデミックな意味での厳密性を気にするのであればdataとdatumを使い分けるのはアリかも知れませんが、正直単数でもdataを使うのは英語圏でも一般化していますし、とりわけ我々日本人の立場では「データ」「データム」の使い分けなんてもっと意識しないので、datumを使うぐらいなら別の語で置き換える方が良いように感じます。 https://www.sanctio.net/data/ 他に適切な言い換えができない場合はやむを得ないと思いますが。
guest

0

「FileInfoを検索し複数のFileInfoを返す」という指定自体があいまいです。

検索する対象は「FileInfoのXXXX」(リストとか)になるはずで、それが命名に影響するでしょう。

また、「検索結果が複数のFileInfoである」ことを、動詞Searchでは表現しきれていないと考えます。
「(条件に合う)最初の1個を検索する」ときでもSearchが使えそうですよね。
FindAllナントカとか、そういう命名のほうがよいのでは。

投稿2020/09/21 14:03

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問