![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
ci5 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.12.2008 Репутация: нет Всего: нет |
Собственно и дошло время познакомиться с этим файликом. Многое я выполнял и до этого, но наткнулся на такие вещи, как:
Note: if statements always use braces {}. Avoid the following error-prone form: if (condition) //AVOID! THIS OMITS THE BRACES {}! statement; Тоже самое касается цикла for, while. Тоесть
Собственно напрашивается вопрос для чего это надо. По мне табуляция в 4 пробела делает нормальную читабельность. Или другими словами что вы об этом думаете и какая политика у вас в фирме с этим делом? Ну, если не секрет конечно ![]() |
||||
|
|||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Я ставлю скобки.
Добавлено через 52 секунды
|
|||
|
||||
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Ну всё правильно. Я тоже всегда ставлю. Это частный случай золотого правила программирования, так сказать. Код пишеться с нуля один раз, а правиться миллионы раз. То есть прежде всего надо заботиться о том, чтобы последующие изменения обходились малой кровью.
Написали:
Потом захотели добавить в тело цикла ещё что-то, надо добавлять скобки:
А если забыли {} (мало ли бывает, например, параллельно пишем что-то на Python и по невнимательности...)
то получим совсем не то, что ожидаем... -------------------- |
||||||
|
|||||||
Stolzen |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Поддерживаю - всегда ставлю скобки, даже если после ифа только одна строка.
|
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 6 Всего: 92 |
Ставим скобки даже если одна строка. Правда я иногда себе позволяю не ставить скобки в if с управляющими (или как их по-русски) операторами return, continue, break, ну и иногда throw, если он простой. Как правильно сказал kemiisto код не только пишется и читается, но ещё и редактируется. Это сообщение отредактировал(а) Дрон - 15.11.2011, 15:22 -------------------- Да. Именно так. |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Если много условий, то без скобок наоборот лучше. Например:
При использовании скобок, код значительно увеличится. Хотя, пожалуй это единственный случай, когда лучше писать без скобок. ИМХО. |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
-------------------- |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
kemiisto, будет больше опыта в Java программировании - поймёшь, что был не прав
![]() |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Samotnik, а сколько опыта нужно, чтобы пришло озарения?
![]() -------------------- Lost.... |
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 1 Всего: 13 |
Samotnik
Для вашего примера свитч со стейтами смотрится приятней, плохой пример =) |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
toxx, будет больше опыта в Java программировании - поймёшь, что был не прав
![]() -------------------- |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
у кого как ![]() Ситуация: Клиент посылает запрос, один из параметров это название немецкого bundesland. Он приходит в полном виде, например bayern, на сервере в базе также есть bundeslands, но хранятся они в сокращённом формате, например BY. Допустим, нужно самое простое, сделать выборку, подставив значение. При том, что есть куча фильтров, в которых используется это значение. Т.е. нужно либо в каждом методе писать конвертацию внешнего вида bundesland во внутреннюю, либо сделать это один раз, сразу после приёма параметра. Я выбрал второй вариант:
kemiisto, Есть лучше вариант? С радостью послушаю и воспользуюсь. |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Если у вас такой код в продакшене, мне вас жаль. Вообще, я с трудум понимаю тех, кто радуется возможности switch'ить по строкам в Java 7. Если у ввас возникла необходимость switch'ить по строкам, у меня для вас плохие новости, как сказать, так сказать.
![]() Тут enum'ы в чистом виде. Заранее фиксированный набор значений. Особенно меня радует вот этот кусок:
То есть вызываем convertBundesland("Ololo Trollolo!") и будьте любезны - в Германии на одну bundesland больше. Или можно ещё завести Map<String, String> и от него плясать. -------------------- |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
давай без философии. Конкретно, как ты бы решил проблему? Свитчем по энаму? И что, чем это лучше ифа ?
Я не выкладывал код проверки валидности значений, она в другом месте. Цель была показать место, где нужно применять много ифов. Пример можно ? |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
На коленках:
get по отсутствующему ключу вернёт null, но корректность ты где-то в другом месте проверяешь, так что я тоже не стал заморачиваться. ![]() -------------------- |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
kemiisto, и что это?
У меня 16 bundeslands. В твоём случае это 16 строк кода, чтобы положить значения в хэшмап. В моём коде те же 16 строк, только через StringBuilder, где PROFIT пока не ясно, ну да ладно, допустим, хорошо. Ситуация: с клиента пришли такие bundeslands: bayern, berlin, brandenburg, bremen. Для дальнейшей работы с ними в приложении тебе нужно их сконвертировать во внутренние. Как твой код поможет сделать это? Это сообщение отредактировал(а) Samotnik - 15.11.2011, 22:12 |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Я где-то обещал, что строчек будет меньше? Профит тут в том, что сразу ясно, что проиходит на самом деле. Есть множество полных названий земель и множество аббревиатур. Между ними установлено однозначное соответсвие. Что происходит в твоих 16 строчках без вдумчивого анализа не понять. Мне, может, за тебя ещё всю систему написать? ![]() Это сообщение отредактировал(а) kemiisto - 15.11.2011, 22:39 -------------------- |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Конечно задач плёвая, это был хотфиксинг, её нужно было решить в течение 15 минут. Это было давно. Просто тема к слову пришлась, вот отрыл кусок кода. Вообще я спросил в том ракурсе, что твой код лишь демонстрирует твоё умение создавать и заполнять Мэп, а задачу поставленную он вообще не решает. Это сообщение отредактировал(а) Samotnik - 15.11.2011, 22:49 |
|||
|
||||
ci5 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.12.2008 Репутация: нет Всего: нет |
Спасибо. Логику понял.
|
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
||||
|
||||
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Samotnik, вот ты привязалсо то!
![]()
Устроит? Идею, думаю, ты уловил. ![]()
Опять же повторюсь - ты не показал такого примера. Твой пример неправильный. Ты и сам признаёшь, что эта заплатка, написанная за пару минут абы-как. Я тебя ругать не собираюсь. ![]() Очень похоже на холивар по goto. Там, обычно, мелькают подобные "примеры". Это сообщение отредактировал(а) kemiisto - 16.11.2011, 00:12 -------------------- |
||||||
|
|||||||
Stolzen |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
О ужас, я думал так только студенты первых курсов пишут. +1 к map.
|
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Обилие такой условной логики, как правило, указывает на серьезные проблемы с полиморфизмом у автора. На собеседованиях все бодренько так выдают определение, а вот в практике откровенно полиморфное поведение распознать не могут и лепят цепочки if-ов.
+1 к enum, на худой конец и map сойдет Возвращаясь к теме, скобки я ставлю. Всегда. Потому что то, что сегодня укладывается в одну строку, завтра разрастается до десятка. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
kemiisto, Stolzen, без дешёвых слов "о ужас", "что за бред", "первокурсник" можете нормально объяснить чем способ kemiisto, лучше моего ?
А конкретнее? Что именно полиморфного я понимаю? |
|||
|
||||
Stolzen |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Samotnik, посчитайте, сколько у kemiisto ифов, и сколько у вас.
Ваш код непонятен с первого раза, второй код читается легко, и сразу ясно, что в нем происходит. Далее, данные из ассоциативного массива извлекаются за О(1), в то время как для прохождения по цепочке ифов нужно O(N). Удивление вызывает то, что вы - активный участник форума - и постите достаточно наивное решение. Это сообщение отредактировал(а) Stolzen - 16.11.2011, 11:23 |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
||||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
kemiisto, согласен, был не прав,твой алгоритм отрабатывает за 2млс, мой за 113.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |