Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java code convention (if, while, for) and {}, ставите ли вы скобки ?  
:(
    Опции темы
Samotnik
Дата 15.11.2011, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL   Вверх
kemiisto
Дата 15.11.2011, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(Samotnik @  15.11.2011,  21:07 Найти цитируемый пост)
В твоём случае это 16 строк кода, чтобы положить значения в хэшмап. В моём коде те же 16 строк, только через StringBuilder, где PROFIT пока не ясно, ну да ладно, допустим, хорошо.

Я где-то обещал, что строчек будет меньше? Профит тут в том, что сразу ясно, что проиходит на самом деле. Есть множество полных названий земель и множество аббревиатур. Между ними установлено однозначное соответсвие. Что происходит в твоих 16 строчках без вдумчивого анализа не понять.

Цитата(Samotnik @  15.11.2011,  21:07 Найти цитируемый пост)
Как твой код поможет сделать это?  

Мне, может, за тебя ещё всю систему написать? smile Задачка плёвая. Погружаться по колено в Жаву желания нет. Уж извини.

Это сообщение отредактировал(а) kemiisto - 15.11.2011, 22:39


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Samotnik
Дата 15.11.2011, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(kemiisto @  15.11.2011,  22:39 Найти цитируемый пост)
Задачка плёвая. Погружаться по колено в Жаву желания нет. Уж извини.

Конечно задач плёвая, это был хотфиксинг, её нужно было решить в течение 15 минут. Это было давно. Просто тема к слову пришлась, вот отрыл кусок кода. 

Вообще я спросил в том ракурсе, что твой код лишь демонстрирует твоё умение создавать и заполнять Мэп, а задачу поставленную он вообще не решает. 

Это сообщение отредактировал(а) Samotnik - 15.11.2011, 22:49
PM MAIL   Вверх
ci5
Дата 15.11.2011, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 24.12.2008

Репутация: нет
Всего: нет



Спасибо. Логику понял. 
PM MAIL   Вверх
Samotnik
Дата 15.11.2011, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(ci5 @  15.11.2011,  22:51 Найти цитируемый пост)
Спасибо. Логику понял.  

Логика в том, что конечно же лучше всегда использовать {}, но бывают случаи 1 из 1000, что иногда для лучшей читабельности лучше обходится без скобок, но это скорее исключение, чем правило.
PM MAIL   Вверх
kemiisto
Дата 16.11.2011, 00:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Samotnik, вот ты привязалсо то! smile 
Код

import java.util.Map;
import java.util.HashMap;
 
public class SwitchAlternative {
    private static Map<String, String> map = new HashMap<String, String>();
    
    private static void fillMap() {
        map.put("Baden-Württemberg", "BW");
        map.put("Bayern", "BY");
        map.put("Berlin", "BE");
        map.put("Brandenburg", "BB");
        map.put("Bremen", "HB");
        map.put("Hamburg", "HH");
        map.put("Hessen", "HE");
        map.put("Mecklenburg-Vorpommern", "MV");
        map.put("Niedersachsen", "NI");
        map.put("Nordrhein-Westfalen", "NW");
        map.put("Rheinland-Pfalz", "RP");
        map.put("Saarland", "SL");
        map.put("Sachsen", "SN");
        map.put("Sachsen-Anhalt", "ST");
        map.put("Schleswig-Holstein", "SH");
        map.put("Thüringen", "TH");
    }
    
    private static String convertBundesland(String bundesland) {
        final String SPLIT_TOKEN = ",";
        if (bundesland != null && !bundesland.isEmpty()) {
            String[] bundeslands = bundesland.split(SPLIT_TOKEN);
            StringBuilder bundeslandList = new StringBuilder();
            for (String str : bundeslands) {
                bundeslandList.append(map.get(str));
                bundeslandList.append(",");
            }
            return bundeslandList.toString();
        } else {
            return bundesland;
        }
    }
    
    public static void main(String[] args) {
        fillMap();
        System.out.println(convertBundesland("Bayern,Berlin,Brandenburg,Bremen"));
    }
}


Код

BY,BE,BB,HB,


Устроит? Идею, думаю, ты уловил. smile 

Цитата(Samotnik @  15.11.2011,  21:55 Найти цитируемый пост)
но бывают случаи 1 из 1000, что иногда для лучшей читабельности лучше обходится без скобок

Опять же повторюсь - ты не показал такого примера. Твой пример неправильный. Ты и сам признаёшь, что эта заплатка, написанная за пару минут абы-как. Я тебя ругать не собираюсь. smile Просто это не пример. 

Очень похоже на холивар по goto. Там, обычно, мелькают подобные "примеры".

Это сообщение отредактировал(а) kemiisto - 16.11.2011, 00:12


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Stolzen
Дата 16.11.2011, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



О ужас, я думал так только студенты первых курсов пишут. +1 к map.


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
jk1
Дата 16.11.2011, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Обилие такой условной логики, как правило, указывает на серьезные проблемы с полиморфизмом у автора. На собеседованиях все бодренько так выдают определение, а вот в практике откровенно полиморфное поведение распознать не могут и лепят цепочки if-ов.

+1 к enum, на худой конец и map сойдет

Возвращаясь к теме, скобки я ставлю. Всегда. Потому что то, что сегодня укладывается в одну строку, завтра разрастается до десятка. 


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Samotnik
Дата 16.11.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



kemiistoStolzen,  без дешёвых слов "о ужас", "что за бред", "первокурсник" можете нормально объяснить чем способ kemiisto, лучше моего ?

Цитата(jk1 @  16.11.2011,  09:27 Найти цитируемый пост)
Обилие такой условной логики, как правило, указывает на серьезные проблемы с полиморфизмом у автора. На собеседованиях все бодренько так выдают определение, а вот в практике откровенно полиморфное поведение распознать не могут и лепят цепочки if-ов.

А конкретнее? Что именно полиморфного я понимаю?
PM MAIL   Вверх
Stolzen
Дата 16.11.2011, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Samotnik, посчитайте, сколько у kemiisto ифов, и сколько у вас.
Ваш код непонятен с первого раза, второй код читается легко, и сразу ясно, что в нем происходит.
Далее, данные из ассоциативного массива извлекаются за О(1), в то время как для прохождения по цепочке ифов нужно O(N).

Удивление вызывает то, что вы - активный участник форума - и постите достаточно наивное решение.


Это сообщение отредактировал(а) Stolzen - 16.11.2011, 11:23


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Samotnik
Дата 16.11.2011, 11:13 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Stolzen @  16.11.2011,  10:56 Найти цитируемый пост)
Удивление вызывает то, что вы - активный участиник форума - и постите достаточно наивное решение.

Не удивляйся, иногда даже я делаю ошибки, что тут поделаешь. Все мы люди. Если ты всегда пишешь идеальный код - кинь в меня камень  smile 
PM MAIL   Вверх
Samotnik
Дата 16.11.2011, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



kemiisto, согласен, был не прав,твой алгоритм отрабатывает за 2млс, мой за 113. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0863 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.