Załóżmy, że mam klasę Utility
w pliku utility.h
:Jaki jest najbezpieczniejszy sposób na zdefiniowanie aliasów nazw krótkich funkcji w C++?
class Utility {
public:
static double longDescriptiveName(double x) { return x + 42; }
};
I wtedy okaże się, że mogę korzystać z funkcji longDescriptiveName(...)
dużo. Tak jak nieodpowiedzialny programista C++, że jestem kiedy miałem zbyt dużo kawy, tworzę nowy plik utilitymacros.h
i dodać następujące tam:
#define ldn Utility::longDescriptiveName
Teraz to "utilitymacros.h"
w dowolnym *.cpp
gdzie używam ldn(...)
i My serce napełnia się radością nad tym, jak wiele bardziej wygodnym to jest typ 3 litery vs 28.
Pytanie: Czy jest bezpieczniejsze (bardziej właściwe) sposób to zrobić niż z #define
?
Zauważyłem, że muszę dołączyć "utilitymacros.h" po dodaniu nagłówków doładowania, których oczywiście nie lubię, ponieważ jest to oznaka starć (chociaż otrzymane błędy Boost nie są zbyt jasne co do tego, zderzenie jest).
Wyjaśnienie 1: Na czytelności kodu
W przypadku można powiedzieć, że ta negatywnie wpływa na czytelność kodu, zapewniam cię, że nie, bo to mały zestaw funkcji, które są wykorzystywane dużo. Przykładem, który jest powszechnie znany, jest stoi
dla stringToInteger
. Innym jest pdf
dla probabilityDensityFunction
itp Więc jeśli chcę wykonać następujące czynności, stoi
jest bardziej czytelny moim zdaniem:
int x = stoi(a) + stoi(b) + stoi(c) + stoi(d);
niż:
int x = Utility::stringToInteger(a) + Utility::stringToInteger(b)
+ Utility::stringToInteger(c) + Utility::stringToInteger(d);
czyli
int x = Utility::stringToInteger(a);
x += Utility::stringToInteger(b);
x += Utility::stringToInteger(c);
x += Utility::stringToInteger(d);
Klasyfikacja 2: Makro edytora
Używam Emacsa jako mojego IDE i klawiatury Kinesis, dzięki czemu wiesz, że używam mnóstwa makr na klawiaturze, niestandardowych skrótów klawiaturowych, a także faktycznie modyfikuję to, co widzę w edytorze, a co faktycznie jest przechowywane w pliku h/cpp . Ale wciąż mam wrażenie, że prostota i czytelność wizualna (jak argumentowano powyżej) użycia skrótu funkcji w kilku wybranych przypadkach jest tak naprawdę wynikiem, którego szukam (jest to z pewnością zależne od stopnia).
Nie sądzę, że to dobry pomysł, ponieważ szkodzi to czytelności kodu. –
Założę się, że 'pdf' był formatem pliku, i * naprawdę * był zdezorientowany. Postaci są bezpłatne i nie oszczędzasz środowiska, nie używając ich. –
Cóż, może krótkie nazwy są czytelne dla CIEBIE, ale dla innych są trudne, nawet (lub szczególnie), gdy są używane wszędzie. W moim starym było wiele 3-znakowych nazw funkcji i był to jeden z wielu powodów, dla których odstąpiłem od tego: kod był nieczytelnym bałaganem. Jasne, nie tylko ze względu na nazwy funkcji i nazw zmiennych, ale także część z nich. – Skalli