Вниз  Совершенный код
- 2.12.2014 / 16:14
Naik
  Пользователь

Naik 
Сейчас: Offline
Ксакеп, просто гитхаб это так, сегодня он есть, а завтра нет, а лабы им нужно как-то хранить n лет
- 2.12.2014 / 16:48
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Naik, никому эти ваши лабы не нужны, так я вам скажу.

У нас есть ещё платформа Moodle, там всякие работки тоже делаем.
- 2.12.2014 / 20:38
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Цитата aRiGaTo:
В-третьих, на телефоне? Что ты забыл в этой теме? Здесь про "совершенный" код говорим, а не о способах онанизма
А ты? :ogurec:
О себе:
H+, .NET-фанатик, Pythonoфил, иногда извращенец-неформалх

Я считаю, код должен быть максимально чистым. А коллективных проектов у меня попросту не было, и вряд-ли предвидится, я программирую в одиночку. Если кому-то требуется помощь по моим сорцам, которые я выкладываю на гит, например, всегда можно меня спросить, но как правило самому в них разобраться довольно просто, по крайней мере легче, чем во многом, выложенном нашими мемберами
- 2.12.2014 / 20:42
Oak
  Пользователь

Oak 
Сейчас: Offline
DominaN, это же самоирония, очевидно
__________________
 Эль Презеденте
- 3.12.2014 / 05:45
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
DominaN, а я тут причём?
__________________
 don't tread on me
- 4.12.2014 / 00:07
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Кстати, вот так яндекс стали форматировать CSS и делать всё красиво. http://habrahabr.ru/company/yandex/blog/223503/
- 21.12.2014 / 14:16
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Kalter, Пост #388721
Для ограничений лучше использовать if/else, а не тернарники.

Возьмём такой код:
  1. private int x, y;
  2. private final int screenW = 240, screenH = 320;
  3.  
  4. public void upd() {
  5.     // I
  6.     x = x < 0 ? 0 : x > screenW - 40 ? screenW - 40 : x;
  7.     // II
  8.     if (x < 0) x = 0;
  9.     else if (x > screenW - 40) x = screenW - 40;
  10. }

В первом случае байткод будет выглядеть так:
  1.  0: aload_0
  2.  1: aload_0
  3.  2: getfield      #4    // Field x:I
  4.  5: ifge          12
  5.  8: iconst_0
  6.  9: goto          32
  7. 12: aload_0
  8. 13: getfield      #4    // Field x:I
  9. 16: sipush        200
  10. 19: if_icmple     28
  11. 22: sipush        200
  12. 25: goto          32
  13. 28: aload_0
  14. 29: getfield      #4    // Field x:I
  15. 32: putfield      #4    // Field x:I
  16. 35: return
Заметь, во всех случаях вызывается #32 - putfield - запись значения в поле x.


Вот второй случай:
  1.  0: aload_0
  2.  1: getfield      #4    // Field x:I
  3.  4: ifge          15
  4.  7: aload_0
  5.  8: iconst_0
  6.  9: putfield      #4    // Field x:I
  7. 12: goto          32
  8. 15: aload_0
  9. 16: getfield      #4    // Field x:I
  10. 19: sipush        200
  11. 22: if_icmple     32
  12. 25: aload_0
  13. 26: sipush        200
  14. 29: putfield      #4    // Field x:I
  15. 32: return
Здесь не только нет записи в поле x при каждом проходе, здесь ещё и байт-кода меньше получается.

Для сравнения приведу размер скомпилированного класса:
С тернарником: 540 байт
Без тернарника: 518 байт
А вот то же, только поля screenW, screenH - не final:
С тернарником: 484 байт
Без тернарника: 506 байт

Подытожу:
• Ограничители на тернарниках в коде выглядят несколько жутковато;
• Затраты на запись в поле/переменную при каждом проходе;
• Лишний байткод.
__________________
 let live

Изменено aNNiMON (21.12 / 14:59) (всего 6 раз)
- 21.12.2014 / 14:25
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
aNNiMON, а как же твой любимый final?
- 21.12.2014 / 14:34
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Ксакеп, с final метод получился меньше, но класс больше из-за того, что в пуле констант вычисленные значения хранятся. Без final каждый раз 40 отнимается.
__________________
 let live
- 21.12.2014 / 14:57
Magatino
  Администратор

Magatino 
Сейчас: Offline
aNNiMON, Не надо тут навязывать свой код, у меня твой код с пробелами выглядит жутковато, и да, твой стиль описания кода не прижился, хоть с твоих исходников я и начинал изучать Java ME :gg:
Наверх  Всего сообщений: 233
Фильтровать сообщения
Поиск по теме
Файлы топика (7)