コードの腐敗を防ぐ、たった一つのシンプルな命名テクニック
クラスに Service、Manager、Handler といった名前をつけるのはやめましょう。
これらの名前は曖昧です。それらは、悪い設計を許容してしまう「免罪符」として機能してしまいます。
もしクラスに UserService という名前をつけると、ユーザーに関連することなら何でもその中に入れてしまうことができます。パスワードのリセット、ロールの割り当て、割引の計算などを追加してしまうかもしれません。これらはすべてユーザーに関わることなので、その名前は正しく感じられてしまいます。
しかし、これらのタスクはそれぞれ異なるルールと依存関係を持っています。単一の UserService は、巨大な混乱の塊になってしまいます。
代わりに、エージェンティブな命名(agentive naming)を試してみてください。特定の動作を表す名前を使用します。
• UserRegistrar • PasswordResetter • RoleAssigner • DiscountCalculator
これらの名前は「摩擦」を生みます。もし PasswordResetter が突然、請求書を発行するためのツールを必要としたとしたら、その間違いは一目瞭然です。名前があることで、悪い設計を無視することが難しくなるのです。
UserService のような曖昧な名前は、プログラミングにおける "any" 型のようなものです。何でも受け入れてしまいます。精密な名前は、境界線を作り出します。
AIの登場により、このことは以前よりも重要になっています。
AIコーディングエージェントは、新しいロジックをどこに配置するかを決めるために、既存のコードを参照します。もしAIに UserService を渡すと、AIはその同じ乱雑なクラスに新しい機能を追加してしまいます。しかも、それを非常に高速に行います。
もしAIに PasswordResetter を渡せば、AIはその特定の境界内に留まってくれます。
あなたのコードベースは、AIに対するプロンプトです。曖昧な名前は、曖昧な設計を学習させてしまいます。
名前が優れたアーキテクチャを作るわけではありません。名前は、悪いアーキテクチャを可視化するのです。
すべての責務に対して、無関係なコードが不誠実に見えるほど精密な名前を与えてください。
Source: https://dev.to/caeus/one-simple-naming-trick-that-keeps-vibe-coded-code-from-rotting-5hf5
Optional learning community: https://t.me/GyaanSetuAi