非同期メソッド名を付けたい
- 原則 -Async 接尾辞:
GetUserAsync,LoadConfigAsync,ResizeImageAsync - 待機不要の発火系は
FireAndForgetを避け、用途語で:QueueSend,EnqueueWork - 並列可否を含めたい:
ProcessBatchAsync,ProcessInParallelAsync
public Task<User> GetUserAsync(UserId id, CancellationToken ct = default);
public Task LoadConfigAsync(string path, CancellationToken ct = default);
bool プロパティ/フラグを付けたい
意味に応じた接頭辞を選択:
- Is(状態):
IsEnabled,IsEmpty,IsDirty - Has(所有):
HasValue,HasChildren - Can(能力):
CanExecute,CanRead,CanRetry - Should(方針):
ShouldRetry,ShouldCache - Allow/Enable(設定):
AllowOverwrite,EnableLogging
例外を投げずに「試す」APIを作りたい
- Try- + 成功時に値を
out:TryParse,TryGetValue,TryLoad,TryResize - 戻り値は
bool、失敗理由はout errorやresultに含める。
public static bool TryParseUser(string s, out User result);
public bool TryLoad(string path, out Image img);
イベント名/発火メソッド名を決めたい
- イベントは「何が起きたか」を過去分詞/完了形で:
Loaded,Changed,Completed,Failed - 発火メソッドは On-:
OnLoaded,OnChanged - ハンドラ型は
EventHandlerかEventHandler<TEventArgs>。
コレクション操作の動詞を選びたい
- 追加/削除:
Add,AddRange,Remove,RemoveWhere - 検索:
Contains,Find,IndexOf,Any,FirstOrDefault - 射影/整列:
Select,OrderBy,ThenBy,GroupBy,Distinct - 結合/その他:
Join,Zip,Shuffle
ファイル/IO の名前を付けたい
- クラス:
FileService,PathResolver,DirectoryScanner,StreamFactory,ArchiveExtractor - メソッド:
Copy,Move,ReadAllBytes,WriteAllText,Watch/Unwatch - プロパティ:
FullPath,Extension,IsReadOnly,Size,CreatedAt,LastModified
ネットワーク/HTTP の命名をしたい
- クラス:
HttpClientFactory,EndpointResolver,JwtTokenProvider - メソッド:
ConnectAsync,SendAsync,Authorize,Authenticate - プロパティ:
BaseAddress,Headers,Timeout
画像処理のメソッド名を選びたい
- 幾何:
Resize,Crop,Rotate,Flip,Warp,Align - フィルタ:
Blur,Sharpen,Denoise,Threshold,Segment,Dilate,Erode - 合成:
Blend,Composite,Merge
WPF/UI の命名をしたい
- クラス:
DialogService,CommandBinder,AdornerLayerHost - メソッド:
Show,Hide,Bind,InvalidateVisual,Focus - プロパティ:
IsEnabled,DataContext,SelectedItem,ItemsSource
クラスの役割別サフィックスを付けたい
- 実装/役割:
-Service,-Provider,-Factory,-Repository,-Strategy,-Options,-Settings - UI/WPF:
-Behavior,-Converter,-Template,-View,-ViewModel - 並行/非同期:
-Scheduler,-Dispatcher,-Worker,-Processor
予約語やBCL型と衝突しそうなとき
- 衝突回避の接尾辞:
Task→WorkItem/TaskInfo、List→ListModel/ItemList Contextを具体化:AppContext,ImageContext,DbContext- 頭字語の大文字ルール:
HTTPClientではなくHttpClient
リネーム時の安全な置換案
- 曖昧動詞の具体化:
Process→Validate/Transform/Resize - 負の論理の反転:
IsNotEnabled→IsEnabled - 役割の明確化:
Manager多用を避け、Service/Factory/Repository等に細分化
クイック表(やりたいこと → 候補)
| 目的 | 候補 |
|---|---|
| 設定を読み込む | LoadConfig, ReadSettings, ConfigureFrom |
| 再試行を表す | Retry, Backoff, ShouldRetry, MaxRetryCount |
| キャッシュ関連 | Cache, Cached, CacheKey, CachePolicy, TryGetCached |
| 並列実行 | RunInParallel, ProcessInParallelAsync, MaxConcurrency |
| ファイル監視 | Watch, Unwatch, FileWatcher, OnChanged |
| 画像の拡大縮小 | Resize, Scale, Resample, Width/Height |
| UI の選択状態 | SelectedItem, SelectedIndex, IsSelected |
| 認証/認可 | Authenticate, Authorize, JwtToken, Claims |
コピペ用スニペット
public interface IClock { DateTimeOffset Now { get; } }
public interface IFileSystem { Task<byte[]> ReadAllBytesAsync(string path, CancellationToken ct = default); }
public sealed class RetryPolicyOptions
{
public int MaxRetryCount { get; init; } = 3;
public TimeSpan Delay { get; init; } = TimeSpan.FromMilliseconds(200);
public bool ShouldJitter { get; init; } = true;
}
public static class Safe
{
public static bool TryGetCached(this IDictionary cache, string key, out T value)
=> cache.TryGetValue(key, out value);
}


コメント