同じ汎用の2つの非常に異なるファイルに同じ名前を付けるのは悪い習慣ですか?


18

同じ汎用の2つの非常に異なるファイルに同じ名前を付け、それらを異なるディレクトリに分けるのは悪い習慣ですか?

<script src="client_scripts/app/player_stats/generator.js"></script>
<script src="client_scripts/app/coach_settings/generator.js"></script>

ファイル名を短くしたいと思います。両方のファイルは同一ではなく、同じ一般的な目的を持っています。これがプロのプログラミング環境で悪い習慣と見なされるかどうかはわかりません。この状況でベストプラクティスが何であるかを知りたいです。

または、名前の短い長さを犠牲にして、次を使用できます。

<script src="client_scripts/app/player_stats/player_stats_generator.js"></script>
<script src="client_scripts/app/coach_settings/coach_settings_generator.js"></script>

7
長い名前!:)
マルコ14

2
statsgen.jssettingsgen.js
Kroltan

1
ドライ!(すなわち短い名前)
ポールドレーパー14

1
クリーンコード(意味のある長い名前)
松o 14

回答:


36

2つのオプションの費用対効果を検討してください。

  1. 同じ名前を再利用すると、混乱や名前の競合が発生しますか?おそらくそうではありません。なぜなら、それらは異なるフォルダーにあるからです。「player_stats / generator.js」という名前は「player_stats_generator.js」と同等です。ただし、将来、jsファイルを単一のディレクトリにマージする理由が表示された場合(展開ですか?

  2. 長い名前を使用すると、多くの無関係な入力が必要になりますか?おそらくない。プロジェクトで多くのJS IDEがファイル名をオートコンプリートするだけでなく、おそらくファイルごとに- せいぜい 1回しか書かれていないコードでもあります。頻繁に入力されるコードは、jsファイルのクラスと関数であり、それらが(できれば)競合しないようにします。

  3. デバッグするとき、エラーについてどのような情報を取得しますか?最も一般的なバグレポートが「34行目のエラー<filename.js>」の場合、generator.jsだけでエラーを受け取り、コンテキストを介してどのジェネレーターであるかを把握するのが面倒になるため、一意の名前を付けることを検討してください。


5
通常、jsをデバッグすると、ファイルパス全体が出力されます。
ベルギ14

1
@Bergiブラウザー(およびバージョン)、IDE(存在する場合)、エラーログフレームワークなどに依存します。
アヴナーシャハルカシュタン14

22

実際問題として、IDEがタブにファイル名を表示する場合、各ファイルに同じ名前を使用すると、すべて同じ名前を表示するタブになります。それは非常に迷惑です。私が保守を引き継いだプロジェクトの1つにその問題があり、15個のタブを開き、そのうちの半分が同じファイル名であるのは大きな苦痛です。

そのため、よりわかりやすい名前を使用してください。


1
ほとんどの最新のテキストエディタでは、ファイルの名前が同じ場合、タブにパスが表示されます。
kmiyashiro 14

もちろん、複数のファイルに同じ名前を付ける必要がある場合があります(たとえば、多くのサーバーでindex.html)。特定のファイルに関連付けられたパスを特定するのが困難なプログラムに悩まされています。
supercat

1
@kmiyashiro-おそらくそうですが、多くのファイルを開いている場合は、タブのサイズ(幅)を縮小して、ほとんどの場合ファイル名のみを表示することができます。次に、常に各タブの上にマウスを移動し、「ツールチップ」がフルパス/ファイルを表示するのを待つ必要があります。開いているファイルが少数で、重複した名前のまれなケースのみである場合は、おそらく受け入れられます。しかし、ファイルがたくさんあると、非常に迷惑になります。
ケビンフェガン14

1
同じ名前ですべてのタブを開いている場合は、一意の名前であってもタブの海の中から見つけるのではなく、キーコマンドを使用してファイルに切り替えます。
kmiyashiro 14

1
より説明的な名前を使用すると、しかしかなりいらいらすることができます...あなたが得るときsome_super_long_descriptor_that_needs_more_description.jsから離れてそれを設定するsome_super_long_descriptor_that_needs_more_cowbell.js
corsiKa

12

ここには明確な決定要因があります:DRY(Do n't Repeat Yourself)。

すべてのファイル名が異なる必要はありません。それがパスの目的です。コンピューターにいくつの異なるシステムまたはプログラムファイルがあるか想像できますか?それぞれに一意の名前が必要な場合はどうなりますか?ある時点で、ファイル名をパスのコピーにしています。

文脈でのJavascriptファイルの最良の説明をした場合client_scripts > app > player_stats、実際にはgenerator、それのパスがなければなりませんclient_scripts/app/player_stats/generator.js

この質問は、programmers.stackexchange.com / questions / 250481にあります。ありserverfault.com/questions/ 250481250481これは、プログラマーの質問のコンテキストでは1つのことであり、サーバー障害の質問のコンテキストでは別のことです。

パス(またはURL)は、ネストされた識別子であるため便利です。そのまま使用しましょう:)


7

問題の言語の慣習が短い名前を好む数学定数またはループ変数のようなものでない限り、常に短い名前よりも記述的な名前を使用してください。たとえば、変数「pi」を呼び出して、適切に正確なpiの値にする場合、名前は適切であり、ポイントを取得します。一方、Piのテイラー級数の項を生成し、それらを加算してpiを近似するジェネレーターがある場合は、「taylorPiGeneratorまたは同様のもの」と呼びます。

良い名前は、後でリファクタリング時間を節約したり、後でさらに深刻な大規模なエラーを保存したりします。

Clean CodeCode Completeの本は、適切な命名の理由と理由としてかなり詳細になりますが、決して唯一のソースではありません。


この回答はこの特定の例にうまく当てはまるようですが、一般的な質問には対応していません。
ポールドレーパー14

3

使用しているテクノロジーに依存します。名前はアイテムを識別し、パスはコンテキストを識別する必要があります。適切な命名が重要であることに同意しますが、ちょっと、パスも名前です。しかし、実用的な観点から、Javascriptのようなものを使用している場合は、最終アイテムのより正確な名前を保持する方が良いでしょう。Pythonのように、これを考慮したツールを使用している場合、推奨される方法は、異なるパス(モジュール、名前空間)で同じ名前を使用することです。Javaを見ると、同じ名前で異なるパッケージのクラスもあります。さらに一歩進んで、メソッドはクラスのコンテキストでアクションという名前が付けられ、異なるクラスで同じ名前のメソッドがあり、それ自体は同じ名前で異なるパッケージに配置できます。PythonのZenは次のように述べています。

名前空間は素晴らしいアイデアの1つです-それらをもっとやってみましょう!

しかし、javascriptには癖と特典があるので、異なる名前を使用することをお勧めします(ファイルが異なるパスにある場合でも)。また、JavaScriptコードでモジュールパターンを検索すると、よりクリーンなコードを作成できます。

    var playerStatsGenerator = player_stats.Generator();
    var coachSettingsGenerator = coach_settings.Generator();

ケーキを食べて食べることもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.