JavaRush /Java блог /Архив info.javarush /Вырабатываем правильные привычки
BigVOVA
30 уровень

Вырабатываем правильные привычки

Статья из группы Архив info.javarush
Привет Всем! Мне уже 40ет. Хочу сменить карьеру. Точнее я свою трудовую деятельность начинал с программирования. В старые времена работал с базами ForPro, dBase. Давалось все без проблем. Потом вскочил в мелкий бизнес. Больших успехов не достиг. Точнее так... Задолбалось выползать из кризисов, чтоб через несколько лет тебя новый накрыл. Вот и решил вернуться в базы но со сторону ООП. Курс очень понравился. Пока, 8-ой уровень, задачки идут как семечки. Но, дают о себе знать старые привычки. Допустим, я стараюсь по минимуму плодить переменные/ссылки если они участвуют в процессе один раз. Но анализирую решения задач от других участников, вижу, что люди фигачат лишние переменные на право и на лево. Хочется "поставить руку" (стиль) еще в процессе обучения. Вот конкретный пример: Мой код: public static long getTimeMsOfInsert(List list) { //Напишите тут ваш код long startTime = new Date().getTime(); insert10000(list); //Напишите тут ваш код return new Date().getTime() - startTime; } В чужих решениях встречаю приблизительно следующее: public static long getTimeMsOfInsert(List list) { //Напишите тут ваш код long startTime = new Date().getTime(); insert10000(list); //Напишите тут ваш код long finishTime = new Date().getTime(); // мне кажется это лишнее return finishTime - startTime; } Как более грамотно учитывая все моменты, а именно производительность, читаемость и пр.
Комментарии (11)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
BigVOVA Уровень 30
29 марта 2015
Очередной вопрос…

Менять переменные лучше через промежуточную или через сумму?

tmp = i;
i = j;
j = tmp;


VS

i = i + j;
j = i - j;
i = i - j;
BigVOVA Уровень 30
11 марта 2015
Спасибо ребят! Вы, в принципе подтвердили мои догадки как и то, что в этой индустрии за почти 20 лет ничего не поменялось)))
EvIv Уровень 30
11 марта 2015
В последнее время идет тренд в сторону лучшей читаемости кода, немного в ущерб производительности. В больших проектах важно создавать поддерживаемые решения, чтобы можно было либо самому через какое-то время вернуться к этому коду, либо кому-то из коллег. При этом время разработчика чаще гораздо дороже машинного времени, а ресурсы на многих мелочах уже давно можно не считать в большинстве задач (исключая немногие узкие места, которые оптимизируют отдельно и после соответствующего исследования — профилирования). Поэтому общая рекомендация будет: если введение временных, одноразовых переменных улучшит читаемость кода, вводить их. Могу порекомендовать к прочтению книгу Стивена Макеоннела «Совершенный код» — там много полезных рекомендаций по написанию хорошего кода.
rory-breaker Уровень 9
11 марта 2015
Нет никакого смысла в создании переменной finishTime в данном примере,
return new Date().getTime() - startTime;

вполне читаемо, не думаю что создание одной переменной сильно повлияет на производительность(мб компилятор оптимизирует и не будет ее создавать).
На счет стиля кода читайте java code conventions.