「必要に応じてXを実行」メソッドの命名


23

Xを実行する必要があるかどうかをチェックし、必要に応じてXを実行するメソッドに名前を付ける良い方法は何ですか?

たとえば、新しいユーザーがログインした場合にユーザーリストを更新するメソッドに名前を付ける方法は?UpdateListIfNeeded長すぎるように見えますが、単純なUpdateListことは、毎回高価で不必要な操作が行われることを意味します。EnsureListUpdatedバリアントでもあります。

C#には、Xが可能かどうかを確認して実行するbool TryXXX(args, out result)パターン(たとえばint.TryParse(str, out num))がありますが、それは微妙に異なります。


1
推奨事項として、このようなメソッドは意図的に作成されていますが、注意して作成する必要があります。途中で、「万が一に備えて」または「X()に呼び出しを追加してバグを修正したが、なぜかわからない」という名目で、無関係なコードにこだわる傾向があります。あなただけの呼び出しに規律を持っている場合RefreshUserList()の間LoginUser()LogoutUser()、そしてない時に、言うGetUser()(リストが最新であるべきところすでに)、その後、すべての手段によって、以下のアドバイスが適用されます。
ケビンマコーミック

回答:


25

私は使用する傾向がありますEnsure。それは何かを大事にすることを確実にするという意味を持ちますが、それを行う必要があります。すでに問題がなければ、それを確認するだけで完了です。そうでなければ、それを行います。いずれにせよ、それが完了したことを確認してください


13

私の好みはUpdateListです。何もする必要がない場合は、そうしてください。とにかく費用は常に最小限に抑える必要がありますのでUpdateList、必要以上のことをしている場合、その実装に誤りがあります。

基本的に、メソッドが何をすべきかを伝えるのは動詞です。 CalculateX常にX GetYを再計算する必要があります。 常にYを返す必要がありますが、必要な場合にのみそれを取得する作業を行います。同様に、UpdateZ可能な限り最も効率的な方法で行われたと仮定して、Zの更新を要求します。


2

よかったら電話してね"

私が見たHaskellのスニペットから選択した、試してみてください

UpdateListMaybe();

2
Haskellをもっとよく理解できれば、もっと理にかなっていると思います。結果:Haskell以外の言語で使用されている場合、Haskellを知っている人だけが理解できます。
ロバートハーヴェイ

2
6年後、私は別のプログラマーになり、Haskellのことについてもう少し知識があります。私はもはやこの答えを支持しません、ハハ。当時の私の考えは、「多分」という言葉を使用して、関数が何らかのオプションを処理することを意味することだったと思います。私はまだそれを時々します(例:Option [A] => BはmaybeToBと呼ばれます)
マーク・カンラス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.