- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
package ololo.cdn.util;
/**
*
*/
public interface AnswerCodes
{
public static final int CODE_OK = 0;
public static final int CODE_NO_AUTH = 1;
public static final int CODE_NO_ACTION_DONE = 2;
public static final int CODE_ERROR_PARAMETERS = 4;
public static final int CODE_NO_RIGHTS = 8;
public static final int CODE_NOT_UNIQ_PARENT = 16;
public static final int CODE_NOT_EXIST_COLUMNS = 32;
public static final String ANSWER_NO_AUTH = "{\"result\":\"error\",\"code\":\"" + CODE_NO_AUTH + "\"}";
public static final String ANSWER_NO_RIGHTS = "{\"result\":\"error\",\"code\":\"" + CODE_NO_RIGHTS + "\"}";
public static final String ANSWER_NOT_UNIQ_PARENT = "{\"result\":\"error\",\"code\":\"" + CODE_NOT_UNIQ_PARENT + "\"}";
public static final String ANSWER_NOT_EXIST_COLUMNS = "{\"result\":\"error\",\"code\":\"" + CODE_NOT_EXIST_COLUMNS + "\"}";
public static final String ANSWER_OK = "{\"result\":\"ok\",\"code\":\"" + CODE_OK + "\"}";
public static final String ANSWER_NOTHING_DONE = "{\"result\":\"ok\",\"code\":\"" + CODE_NO_ACTION_DONE + "\"}";
}
Анонимус 13.11.2014 14:48 # +3
roman-kashitsyn 13.11.2014 14:51 # 0
Анонимус 13.11.2014 14:55 # +1
* JSON из одного поля
* Нужно отдавать этот ответ миллионам пользователей и это реально боттлнек.
Я почему-то уверен что тут ни то ни другое, и скоро этот интерфейс погрязнет в копипасте, а автом запутается в палочках и заболеет синдромом зубочистки.
И кстати constant only interface был взвешен на весах, и найден антипаттерном еще Блохом в первой "effective java".
roman-kashitsyn 13.11.2014 15:01 # 0
JSON только пишется, парсить его не надо, ответы простые, не требуют особого экранирования.
В этом случае проблемы с подключением либы перевешивают преимущества. Особенно, если пишешь на C или C++.
Я как-то писал сервис на крестах, который отдавал статистику в json/yaml по http, возня с подключением сторонних либ была оверкиллом.
Про интерфейсы с константами согласен, нинужны.
Анонимус 13.11.2014 15:04 # 0
roman-kashitsyn 13.11.2014 15:10 # 0
1024-- 13.11.2014 16:46 # 0
> Про интерфейсы с константами согласен, нинужны.
Эта борьба ведётся именно с интерфейсами (из-за недопустимости наследования констант по какой-то причине или ещё из-за чего) или с любыми попытками объединить много констант с общим доступом под крылом неймспейсоподобной конструкции?
roman-kashitsyn 13.11.2014 16:53 # 0
Немного напоминает крестовый using namespace std;
Анонимус 13.11.2014 17:07 # +1
someone 13.11.2014 17:14 # 0
Анонимус 13.11.2014 17:24 # 0
Хотя это вот очень хорошо показывает что джава не права утверждая что "всё класс". Не всё класс!
Во многих языках (от пайтона до сей) можно хранить константы прямо в модулях, например)
guest 13.11.2014 23:07 # 0
Анонимус 14.11.2014 01:29 # 0
roman-kashitsyn 14.11.2014 08:02 # +3
пишутся переменные, которые ты бы не хотел, чтобы люди меняли
fixed
guest 14.11.2014 09:40 # 0
bormand 14.11.2014 10:25 # 0
guest 14.11.2014 14:35 # 0
wvxvw 14.11.2014 21:18 # +3
Анонимус 14.11.2014 21:03 # 0
guest 14.11.2014 11:36 # 0
guest 14.11.2014 14:36 # 0
roman-kashitsyn 14.11.2014 14:51 # 0
А апперкотом можно?
Сегфолт тебе не даст поменять константу, увы.
guest 14.11.2014 15:28 # 0
roman-kashitsyn 14.11.2014 15:52 # +1
Анонимус 14.11.2014 20:39 # 0
Анонимус 14.11.2014 20:25 # +2
_ВСЕ_ можно поменять.
Просто есть контракт: нарушишь контракт (поменяешь константу) -- получишь неверно работающую систему: сегфолт или багу -- не важно.
Анонимус 14.11.2014 19:05 # 0
http://legacy.python.org/dev/peps/pep-0008/#constants
bormand 14.11.2014 19:07 # +3
Анонимус 14.11.2014 19:10 # 0
wvxvw 14.11.2014 21:24 # 0
Анонимус 14.11.2014 21:31 # 0
wvxvw 14.11.2014 21:32 # 0
3.14159265 14.11.2014 22:10 # 0
Существует теория что со временем фундаментальные физические константы могут меняться с течением времени и пространства. Для постоянной тонкой структуры вроде даже доказали. По крайней мере это объясняет тонкую подстройку вселенной.
Гость м.б. и прав в том плане что вся наша вселенная мутабельная, в ней нет констант.
wvxvw 14.11.2014 22:24 # +1
Т.е. если мы уж один раз представили Пи, то это навсегда. Даже если эта вселенная перестанет существовать. :)
3.14159265 14.11.2014 22:30 # +1
Так это ж не физическая константа из реального мира, а математическая.
wvxvw 14.11.2014 22:36 # 0
С другой стороны есть теоретические физики, которые думают что мир он так неспроста, а что за всем этим стоит математика, и тогда в мире не окажется никакого а постериори знания, о нем все будет доподленно известно от начала и до конца, без возможности что-либо поменять, без свободы воли... В последнем случае, не будет разницы между математическими константами и физическими, это будет одно и то же.
wvxvw 14.11.2014 21:31 # 0
Анонимус 14.11.2014 21:33 # 0
И нам вообще повезло что у нас такие константы, иначе и жизнь бы не зарадилась, и говнокода-бы тогда никакого не было!
roman-kashitsyn 14.11.2014 21:38 # +2
Тсс! Сейчас какой-нибудь питонщик залезет в модуль universe и заманкипатчит что-нибудь.
Анонимус 14.11.2014 21:56 # 0
Я их тут защищаю во-всю, а они :(
wvxvw 14.11.2014 22:28 # 0
Хотя с точки зрения названий имеет место быть несоответствие, это как искусственный естесственный язык: то что выражение является переменной освещает другой аспект этого выражения, нежели тот, о котором говорится в том, что оно - постоянная.
Анонимус 14.11.2014 22:37 # 0
Не только логические. ЛЮБЫЕ выражения.
Все же я считаю что константу следует рассматривать как мнемонику для литерала. Во всяком случае, в программировании. Препроцессор в сях поступает чеснее заменяя #define на литералы еще ДО компиляции, не выделяя для нее память)
wvxvw 14.11.2014 22:53 # +1
3.14159265 14.11.2014 19:11 # 0
var CAPS;
А еще среди питонистов и прочих жабоскриптеров ходят легенды, что если назвать _переменную с подчеркиванием вначале, то она станет приватной.
Чем больше подчеркиваний - тем приватнее.
1024-- 14.11.2014 19:14 # 0
Да вон тут гость обещал константу изменить. В общем-то, никто ему не запретит вызвать нужную функцию-член и в C++.
Анонимус 14.11.2014 20:11 # 0
Анонимус 14.11.2014 20:14 # 0
То что его легко нарушить не говорит о том, что его нет.
Нарушить можно и в Java (рефлекисей) и в нативном коде залезжи в память как сказал гость, и вообще всё что не прошито железно можно испорить. Константа это мнемоника для литерала а не "переменная, чье значение трудно поменять". Ну что за децкие рассуждения, ё-мае
3.14159265 14.11.2014 20:39 # 0
Да точно так же.
В ECMA6 ввели const, ФФ и хром поддерживают, (опера и сафари понимают) можно юзать.
Анонимус 14.11.2014 20:42 # 0
Можно ругать пайтон за то, что он не форсит контракт в рантайме, даже не пытается! (ну нет там use strict), но говорить что там контракта нет -- это не правда
3.14159265 14.11.2014 20:43 # 0
Половина браузеров по-прежнему не поддерживает, const ВНЕЗАПНО работает как var.
А те что поддерживают, не матерятся при присваивании, и возвращают новое значение в качестве его результата.
Анонимус 14.11.2014 20:45 # 0
3.14159265 14.11.2014 20:48 # 0
Более того крокфорд прямо говорит не использовать _var как приватное.
Но нейминг общепринят.
Lure Of Chaos 13.11.2014 17:25 # 0
энумы вообще покрывают 20% кода. я про такой говностиль:
someone 13.11.2014 19:20 # 0
Да ещё и List в качестве возвращаемого значения. Ну хоть не массивы.
guest 14.11.2014 01:54 # 0
someone 14.11.2014 09:28 # 0
guest 14.11.2014 09:30 # 0
guest 14.11.2014 09:50 # 0
Анонимус 13.11.2014 17:09 # 0
Интерфейс это контракт, который класс обязуется реализовать, а не способ импортнуть себе констант. Не нужно карандашом чесать в ухе, он не для того.
Ничего плохого в объединении нет, хотя в 80% случаев ты хочешь enum сделать, на самом деле (привет старым api вроде swing, и новым вроде андроид, там везде int))
someone 13.11.2014 17:15 # 0
В Андроиде инты вместо энумов? Реально? Но зачем?
Анонимус 13.11.2014 17:22 # +1
Видимо сказывается сишный бекграунд разрабов. Любителей спринга тошнит)
Чтоб помочь IDE, они аннотируют параметры. И IDE знает чтоэто не просто int, а туда нужно определенную константу.
C ходу:
someone 13.11.2014 19:23 # +3
Тошнит любителей любых библиотек, появившихся года так после 2006-го.
guest6 15.02.2023 15:30 # 0
JlAKOMKA 15.02.2023 16:29 # 0
roman-kashitsyn 13.11.2014 17:26 # 0
Очевидно, память экономят. И правильно делают.
Анонимус 13.11.2014 17:27 # +1
roman-kashitsyn 13.11.2014 17:50 # 0
Анонимус 13.11.2014 17:59 # +1
bormand 13.11.2014 18:00 # 0
Анонимус 13.11.2014 18:03 # 0
enum Foo {
BAR("bar") // 0
SPAM("bar") // 1
String name;
В памяти
Map[Int, String] для поля name (ну или какие там еще поля будут).
Вообще я не верю что там в памяти дело:
Один enum -- один класс. Все значения его -- инстансы-синглтоны. Вот правда если лейаут параметрс сделать енумом а не интом то память кончица?
someone 13.11.2014 19:28 # +1
roman-kashitsyn 13.11.2014 18:06 # 0
Очевидно, время. Москва не сразу строилась. В 2011 году вроде заоптимизировали.
Анонимус 13.11.2014 18:10 # 0
http://developer.android.com/training/articles/perf-tips.html
Lure Of Chaos 13.11.2014 17:30 # 0
guest 13.11.2014 23:05 # 0
guest 14.11.2014 01:55 # +1
Всмысле нельзя инлайново мапу задать?
В гуаве мождно
guest 14.11.2014 11:37 # 0
bormand 14.11.2014 11:43 # 0
3.14159265 14.11.2014 20:32 # 0
bormand 14.11.2014 20:49 # 0
Анонимус 14.11.2014 20:54 # 0
Сахара для записи мап там и правда нет, к сожалению (для массивов тока е)