Часто, передавая объект в какой-либо метод, нам бы хотелось сказать ему: «Вот, держи этот объект, но ты не имеешь право изменять его», и как-то отметить это при вызове. Плюсы очевидны: помимо того, что код становится надёжнее, он становится ещё и более читаемым. Нам не нужно заходить в реализацию каждого метода, чтобы отследить, как и где изменяется интересующий нас объект. Более того, если константность передаваемых аргументов указана в сигнатуре метода, то по самой такой сигнатуре, с той или иной точностью, уже можно предположить, что же он собственно делает. Ещё один плюс – потокобезопасность, т.к. мы знаем, что объект является read only.
В C/C++ для этих целей существует ключевое слово const. Многие скажут, что такой механизм слишком ненадёжен, однако, в C# нет и такого. И возможно он появится в будущих версиях (разработчики этого не отрицают), но как же быть сейчас?
Читать полностью »
Метка «const»
Статическая переменная инициализируется 2 раза
2013-04-29 в 15:01, admin, рубрики: Action Script, class, const, Flash-платформа, flex, static, variable, метки: class, const, flex, static, variableИграясь с синглтонами-статикой-константами во флексе, вот на что напоролся:
Разработка под Apple iOS / Упрощаем создание extern констант
2012-02-11 в 10:43, admin, рубрики: const, objective-c, метки: c++, const, objective-c Известно, что для того что бы создать extern константу (например типа NSString *) необходимо сделать два шага:
— в .h файле объявить константуextern NSString *const kMyConst;
— в .m файле присвоить ей значениеNSString *const kMyConst = @"kMyConst";
То, что приходится два раза писать примерно одно и тоже это нормально, если у вас немного подобных констант.
Когда я столкнулся с необходимостью объявления около 30 констант, я решил придумать что нибудь более красивое. По итогу вышла трех-файловая реализация.Constants.h#define def_key(name) extern NSString *const name
#define def_int(name, value) extern int const name
#define def_type(type, name, value) extern type const name
#include "ConstantsDefs.h"Constants.m#import "Constants.h"
Читать полностью »