Utility
ファイルにクラスがあるとしますutility.h
。
class Utility {
public:
static double longDescriptiveName(double x) { return x + 42; }
};
そして、私は関数longDescriptiveName(...)
LOTを使用していることがわかりました。ですから、コーヒーを飲みすぎたときの無責任なC ++プログラマーのように、新しいファイルを作成して、utilitymacros.h
そこに次のファイルを追加します。
#define ldn Utility::longDescriptiveName
今、私は私が使用する"utilitymacros.h"
すべての場所に含め、私の心は、28文字に対して3文字を入力することがどれほど便利であるかについての喜びに満ちています。*.cpp
ldn(...)
質問:これを行うよりも安全な(より適切な)方法はあり#define
ますか?
ブーストヘッダーを含めた後、「utilitymacros.h」を含める必要があることに気づきました。これは、衝突の兆候であるため、明らかに気に入らないものです(ただし、発生するブーストエラーは、衝突が何であるかについてはあまり明確ではありません)。 。
明確化1:コードの可読性について
これがコードの可読性に悪影響を与えると言うかもしれませんが、それは多くの場合に使用される関数の小さなセットであるため、そうではないことを保証します。広く知られている例はstoi
、ですstringToInteger
。もう1つはpdf
、probabilityDensityFunction
などです。したがって、次のことを実行したい場合はstoi
、私の意見ではより読みやすくなります。
int x = stoi(a) + stoi(b) + stoi(c) + stoi(d);
よりも:
int x = Utility::stringToInteger(a) + Utility::stringToInteger(b)
+ Utility::stringToInteger(c) + Utility::stringToInteger(d);
または:
int x = Utility::stringToInteger(a);
x += Utility::stringToInteger(b);
x += Utility::stringToInteger(c);
x += Utility::stringToInteger(d);
明確化2:エディターマクロ
私は選択したIDEとKinesisキーボードとしてEmacsを使用しているので、たくさんのキーボードマクロ、カスタムキーボードショートカットを使用し、エディターに表示されるものとh/cppファイルに実際に保存されているものを実際に変更します。しかし、それでも、いくつかの選択されたケースで関数の省略形を使用することの単純さと視覚的な読みやすさ(上記で論じたように)は、本当に私が探している結果であるように感じます(これは確かにある程度の影響を受けます)。