良い名前が思いつかないとき、functions / variables / etcに名前を付けますか?[閉まっている]


13

関数/変数/などを定義していて、それを何と命名するかわからない場合、何と命名しますか?どうやって名前を思いつきますか?

仮の名前を実際の名前になるまでプレースカードとして使用する場合、どの一時的な名前を使用しますか?


更新

私は次のようなものを使用しているWILL_NAME_LATERNEEDS_NAMEまたはTO_BE_NAMED。私は、採択された規約があることを望んでいました。この採択された規約を使用した場合、変更するまでIDEが名前を強調表示することを望んでいました。


変数名にすべて大文字を使用することに注意してください。一般的な慣例により、グローバル変数を意味します。
スポンジ

@sunpech、その命名規則を定数にも使用しています。しかし、大文字にすることで目立つと思うので、名前を変更することを忘れないでください。そんな名前を長く残さないでください。
JD Isaacks

3
言っているすべてのあなたの人々のために、あなたが名前を考え出す問題を抱えていることはありません...でも、ジョンスキートは時々することはできません。stackoverflow.com/questions/521893/...
JD Isaacks

@JohnIsaacks 一時的に太字にする必要があると思います。多くの人がこの質問を読んで、コードを神聖なものにしています。正直なところ、はい、あなたはもっと重要なものにプッシュしようとしているとき、特にずさんなコードを書くことができます。ここでは、コードを石にエッチングしていません。
スポンジ

1
このような規則は、コードにTODOを追加し、それを更新する必要がある理由を説明することです。多くのツールは、これらのTODOを解析し、実行する必要があるすべてのことのリストを表示できます。
エドゥアルドスコズ

回答:


29

設計したいアーティファクトの名前を考えられないことはほとんど不可能です。簡潔でセクシーではないので、どのような名前を思いついたのか気に入らないかもしれませんが、あまりにも一生懸命考えた場合、名前の不自然なアーティファクトになってしまいます。

オブジェクトの構築に役立つものがあるとしましょうが、これが通常ファクトリと呼ばれることはわかりません。それをObjectCreatorと呼ぶだけです。鈍いように聞こえますが、少なくともはっきりしています。

ホスト名をIPアドレスに変換する辞書があるとします。先に進んで、HostnamesToIpAddressesと呼びます。確かにそれは長いですが、それが正確に何をするかを言います。

何かの名前が思いつかないということは、それが何をしているのかわからないことを意味します。それはまた、あなたの前により大きな問題があることを意味します。


8
識別子が長すぎる(文句が3語か4語の場合)と文句を言う人を平手打ちします。入力速度に制限されるべきではありません。制限されている場合は、ABCDを見て入力を学習する必要があります。
ダッシュトムバン

1
+1のため"The inability to come up with a name for something means you don't know what it is doing"。これは本当に重要なポイントだと思います。これを実現すると、コードのあいまいさと不明瞭さを見つけるのに役立ちます。
BiAiB

34

私はいつも自分の変数と関数に名をつけようとしています。

素晴らしい名前が思いつかない場合は、良い名前に落ち着きます。

良い名前が思いつかない場合は、わかりやすい名前を使用します。

15年間のプロのプログラミングで、まともな名前を思い付くことができたことがありません。


6
詩的であるために+1。
スポンジ

1
...しかし、15年6か月前に、Microsoft Bobが生まれました。
VirtuosiMedia

12

変数や関数の良い名前が思いつかない場合、自分が何をしているのか理解できないか、デザインが貧弱になります。いずれにせよ、「座標」を扱っていない限り、「x」のような任意の名前を平手打ちしても、ジレンマは解決されません。悪化させるだけで、痛みはさらに大きくなります。


8
同意しません。開発者は常にビジネスの用語を完全に理解しているとは限りません。要するに、クライアントでさえ、要件の収集中に用語を伝えることができないかもしれません。しかし、これはソフトウェアの生産を止めるものではありません。プロトタイプが作成されるのを止めません。または、理解不足のためにコードが正しく破棄されることさえあります。しかし、これらの状況でのコードはまだ作成および配信する必要があります。
スポンジ

3
@sunpechすみませんが、これは少し怖いです。それが実際に何をするのかわからないランダムなコードを書くのが一般的だと私たちに伝えようとしていますか?何かを知らない場合は、見つけ出すために努力を払うと、将来の問題を回避できます。
アダムByrtek

@AdamByrtekいいえ、私はそれを意味しません。私が言っているのは、クライアントが何を望んでいるのかを最もよく理解することは、常に開発者とチームの責任ではないということです。一部のクライアントは、自分が何を望んでいるかを説明するのに苦労したり、自分が何を望んでいるかわからない。悪いコードは起こりません。悪い要件から非現実的な期限までプロジェクトで問題が発生します。それが現実です。開発者がすべての未知の問題を解決し、クライアントが完璧で、期限が正確な完璧な世界はありません。プロトタイプ用に生成されたコードは、破棄されることを意図しています。しかし、コーディングはまだ必要です。
スポンジ

つづき...チェックイン直前の量産コードや最終コードの作成については話していません。私たちは、まだ十分に理解していないものに名前を付ける方法について話している-おそらく正当な理由のために不明確なもので最初に始めるために(例:チームの誰もまだそれを理解していない、多分クライアントでも)。しかし、物事はまだ知られていることに基づいて前進する必要があります。
スポンジ

1
@sunpech:私は実際に見てきた唯一の場所foobarコードで使用することは、概念を表示するために使用されるコードの小さな断片です。確かに、私も名前を考えたときにつまずきますが、私がfoo唯一の合理的なオプションであったような悪い立場に陥ったことはありません。それが起こった場合、私は本当に私が何をしているのか分からず、何をすべきかがわかるまで、代わりに描画ボードと擬似コードに戻る必要があります。
ギャブリン

5

この質問と特にその答えは私を無意味に怖がらせます。誰かが、変数に「カップ」という名前を付けたコードを維持する必要があります。幸運でなければ、誰かがあなたになります!

変数があります。それは事です。とにかく、それは物を表します。そして、物には名前があります。それはあなたがそれらが物であることを知っている方法です!あなたは実際の物の名前を思い付くことができないので、あなたは別のものの後に物に名前を付ける必要があると本当に言っていますか?

イテレータはiと呼ばれるべきです。ネストされたイテレーターは間違いである可能性が高いですが、必要な場合は、母音の残りの部分を順番に進めてください(a、e、o、u、およびgodが私、はい、時にはy)を助けてくれます。

それとは別に、それが何であるかを呼び出して、それでやりましょう!


9
私は抗議しなければなりません!明らかに、内部イテレータはjと呼ばれ、その内部のイテレータはkと呼ばれるべきです。長年の数学の伝統があなたの肩越しに見ています!
フランクシェラー

ほら 私はjとkをやったことがありません。しかし、それは賢明だと思います。
ダン・レイ

8
ダイクストラがコンピュータサイエンスに自然にフィットした理由の1つは、彼の名前に3つの最も一般的な反復子変数が正しい順序で含まれていたことです。
グレナトロン

3
@glenatron:最後に、その名前のつづりを覚える方法!
コンフィギュレー

4

すぐに素晴らしい名前が思いつかない場合は、一時的に「大丈夫」な名前を使用して、コーディングを続けます。少なくとも完璧ではない場合でも、アイテムを適切に説明するものになります。ほとんどの場合、その特定のコードチャンクの最初のドラフトを書き終える頃には、より完璧な名前が思い浮かぶでしょう。コーディングのプロセスを通じて、その特定の変数に対する私の意図がより明確になります。(一方で、変数toが最初はよく考えられていなかったために、他の何かのために変数を削除することがあります。)


3

関数が行うべきだと思うものに名前を付けます-多かれ少なかれ意図を伝えるものです。関数の本体が記述されると、何を呼び出すべきかがわかり、必要に応じて戻って名前を変更します。


1
特に開発者が用語に精通していない場合や、ビジネス/業界の意図さえない場合、これは常に機能するとは限りません。後で定義して変更する必要があることを伝えるために、より一般的で明白なものを使用する必要があります。OPは、意図がいつ不明で、最初に何を使用すべきかを尋ねているようです。ネーミングが多かれ少なかれ意図を伝えるものである場合、良い名前はすでに遠くない。
スポンジ

1
@sunpech真剣に、かなり特定のドメインを持つジョブで最初に始めたときでさえ、関数名を見つけるのに問題はありませんでした。たぶんもっと関数を書く必要があるだけかもしれません。:)
アダムリア

1
@sunpech:どのように機能するのか知らずに関数を書くことができますか?
コンフィギュレー

4
@sunpech:言わなかった。私はあなたがたぶんそれが何をしているのか知らずに関数を書くことはできないと言った。不可能です。私はそれが起こるのを見たことがありません、そして、それがどのように起こる可能性があるかわかりません。たぶん私は頭がおかしいのですが、関数にDoFoo()という名前を付けたとき、その中に何を入れますか?
コンフィギュレー

2
@sunpech:名前は最初から「良い」とは言わなかった。関数を作成したいが、それが何をするのかわからないという状況にどのように陥るかはわかりません。
コンフィギュレー

2

FOOバー。関数/変数の命名の背後にはまだ意味がないので、FooやBarを定義しようとするものと組み合わせて使用​​します。

名前の付け方をよく理解できれば、後で簡単に検索/検索できます。

ウィキペディアのFoobarも参照してください。

foob​​ar、foo、bar、およびbazという用語は、コンピュータープログラミングまたはコンピューター関連のドキュメントでプレースホルダー名(メタ構文変数とも呼ばれる)として使用されることがあります。それらは、目的が重要ではなく、概念を示すためだけに役立つ変数、関数、コマンドなどのエンティティに名前を付けるために使用されています。この使用法では、単語自体に意味はありません。Foobarは時々単独で使用されます。複数のエンティティが必要な場合は、foo、bar、bazがこの順序で使用されることがあります。


1

関数に接頭辞を付けて、今のところ最高の名前を付けてください。たとえば、選択したユーザーのすべての製品をデータベースに保存する関数はRENAME_SaveAllProductsForTheSelectedUserToTheDatabase()


もちろん、この場合には、あなただけの機能に名前を付ける必要がありますSaveAllProductsForTheSelectedUserToTheDatabase()
コンフィギュレータ

1

これらの名前の難しい変数を呼び出すものは何でも//TODO find a better nameコメントを作成し、 後で戻って名前を変更できるようにします

通常、変数/関数/クラスの使用を開始すると、より適切な名前が見つかります。


0

コードを念頭に置いて、すぐに適切な名前を付けることをお勧めします。名前を付けたいと思うようになるまで後で待つのが一番です。


0

わかりやすい説明的な名前を見つけるのにほとんど問題はありません。WebClient webclient = new Webclient(uri); ...など。


0

時々zzzzを一時的に使用します。

あなたを助ける良いルールはこれです:

  • ブール値を返し、副作用はありません:その後、形容詞(isで始まり、was)を使用しますが、将来形は使用しません。
  • それは別の型を返し、副作用はありません:その後、名詞を使用します。
  • それは何も返さないが、何かをする:それから動詞を使う。
  • クラスですか:それから名詞を使います。

-1

過去に私は多くのボブを使用しましたが、これは関数/スクリプト内の唯一の適切ではない名前の変数になります。さもないとコードがすぐに読めなくなるからです。

(bobはuni日からの二日酔いです-変数bobとfredを呼び出すことで逃げます)

カウンターにiを使用できてうれしいです。

短くて短くても、意味のある名前を使用する方が良い。


私は彼のアプリケーションと彼のアプリケーション内のクラスにそのような名前を使った人と仕事をしました。言うまでもないことですが、彼のコードは一般的に非常に貧弱でした。
ダッシュトムバン

2
@ dash-tom-band:彼のコードは一般的に非常にボブだったと思います。
コンフィギュレー

列挙のためにハンガリーの表記に自分の名前を使うことができれば、たとえそれが少し伸びていても、私は通常それをします。TPropertyEnhancmentTypeEditor =(PETEObtuse、PETEAwful、PETEDispicable);
ピーターターナー

-1

20年以上経っていない変数の名前を絶対にわからない場合は...古いガールフレンドの名前、またはガールフレンドになりたかった女性の名前。これらの識別子を持つ最後のコードは、かなり前に本番環境から削除されました。





-3

私は机の上にあるものを使う傾向があります。

  • カップ
  • Alt
  • フー
  • b / a / c(単一文字のジャンク)
  • alk(発音可能な複数文字のジャンク)

私はまた、(少なくとも機能のために)総称名に傾いています:

  • スワップ
  • 処理する
  • reviseVar
  • いじくり回す

ただし、これは一時的なものです。リポジトリに入れるものは何もないと断言します。

...


私はいつも汚い気がしますが、メソッドの最も明白な名前は「Go」または「DoIt」です。より良い名前を思いつくことができるときはいつでも、実際には「プログラムの名前が意味するような仕事をしようとしています」ということもあります。ただし、それは関数名に使用するには長すぎます。:)
ダッシュトムバング

@ dash-tom-bang:何らかの理由で、runに比べて格段に良く見えgoます。多分、私たちは皆、プログラムをより高速にしたいからです。
コンフィギュレー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.