| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Покритикуйте решение=) |
| Автор: V0R0N91 23.2.2012, 21:25 | ||
| Задача для первого класса, но я только учусь!! условие:1. Создайте новый класс и назовите его TemperatureConverter. Добавьте в него метод для преобразования температур, с такой cигнатурой: public String convertTemp(int temperature, char convertTo) Если аргумент convertTo равен F, то температура должна быть преобразована в Фаренгейты, если C, то в Цельсии. когда вы будете вызывать этот метод, поместите значение аргумента типа char в одинарные кавычки.
Плз покритикуйте !!!! Что так а что не так , я просто хочу с самого начала писать более менее грамотный код=) P S Всем спасибо! |
| Автор: V0R0N91 23.2.2012, 21:41 | ||
Сори не тот код :
|
| Автор: Pawl 23.2.2012, 23:44 | ||
что-то я особой разницы в коде не заметил, хотя не присматривался ИМХО, написано норм, только можно бы вместо банального
сгенерировать какой-нибудь эксэпшен. |
| Автор: 4epT 24.2.2012, 11:32 |
| 1) не помешали бы скобки... если код в case вырастет, будет сложно читать. 2) convertTo можно изначально делать toLowerCase и писать только одну проверку. |
| Автор: dorogoyIV 24.2.2012, 14:33 |
| блин, не смог удержаться... V0R0N91, ну что за издевательство?! нормальный код ты списал откуда то... и что?... |
| Автор: Royan 27.2.2012, 15:31 |
| Ну чтобы не палиться, что вы только начали http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141855.html#277 |
| Автор: Pretorian 28.2.2012, 19:22 | ||
А к чему это? |
| Автор: chupaYchups 29.2.2012, 12:10 |
| выбрасывай IllegalArgumentException в случае кривого символа, Сharacter.toUpperCase() перед свитчом опять же странный какой то метод - принимает целочисленную температуру - а возвращает строковую public int convertTemp(int temperature, char convertTo) - было бы логичнее для метода с названием конверт, также я бы зафигачил внутренний енум - но это моя слабость - дело то хозяйское) |
| Автор: carper 1.3.2012, 09:42 |
| V0R0N91, Ну, если уж учиться ... Что сделал бы я: 1. Метод "должен" быть static final. 2. Название пакета не должно совпадать с названием класса. Ну некрасиво это. И, вообще, посмотрите как принято называть пакеты. 3. char convertTo некрасиво ужасно, лучше ENUM, но хотя бы делайте перед сравнением приведение к одному регистру. 4. Метод должен преобразовывать, а не печатать, или что-то там округлять. Поэтому возвращайте double, пользователь сам решит, что с этим делать. 5. System.out.println("Error"); - еще раз, дело метода преобразовывать, а не печатать, если преобразовать не получается, то надо выбросить ошибку, а не писать в консоль "караул". 6. Где описание метода? Как по мне - уже одно это говорит о неграмотном коде. Может название метода и самодокументированное, но вот что делает, например, char convertTo ? понимает только автор метода и то только первую неделю ... А еще, например, как мне догадаться, что метод не проверяет переданные числа на допустимость и может мне вернуть -456С? Интуитивно? 7. 0K = −273.15 °C, а не -273! 8. "Если аргумент convertTo равен F, то температура должна быть преобразована в Фаренгейты, если C, то в Цельсии." Какая прелесть! Т.е. во что температура должна быть преобразована догадались, а из чего нет? Т.е. сижу это я в интернет, читаю книжку, ну того же Дюма, а он там, вот сюрприз-то температуру в Реомюрах дает. Ввожу я ее в ваш калькулятор и получаю "хрень разноцветная 1 штука"! Кстати, сюрприз! - Вики знает еще минимум 4 шкалы : Ранкин Делиль Ньютон Рёмер! Что это за штуки я, кстати, сам не знаю, но есть же Ага, я уже догадался, как хочется сказать, что для учебной задачи это не важно, так обломитесь! Медленный код можно, не очень грамотный технически можно, не документированный можно, а вот имеющий на выходе "хрень зеленая 1 штука" нельзя! 9. Вообще-то, в нашем учебном примере хорошо бы перейти к замене switch на полиморфизм, интерфейсы, фабрики и т.п. (всякие там паттерны типа стратегии). Т.е. есть куда расти с этим же самым примером от 1 до 10 класса! |
| Автор: Сонечка 1.3.2012, 15:37 |
| Мне вот подумалось, что будет, если я выложу свой любимый из текущего проекта класс, который занимает, прости господи, 6000 строк, если на такую милую задачку 9 пунктов нашлось |
| Автор: Сонечка 1.3.2012, 16:30 | ||||
Дааа, больше стараюсь такую абракадабру не писать) Остальное пока за 600 строк не вылазило Добавлено через 3 минуты и 3 секунды Пересчитала. 50+ классов |
| Автор: baldina 1.3.2012, 16:49 |
афторы книжек разных во-во. только она не единственная. нужна архитектура на всех уровнях: приложение, модуль, класс, функция. тогда программа будет короче, понятнее, и, возможно, быстрее. |
| Автор: k0rvin 1.3.2012, 22:18 | ||
Ну вот, наблюдаем ООП головного мозга. |
| Автор: 502 1.3.2012, 22:26 | ||||
почему не
? +1 |
| Автор: carper 2.3.2012, 08:28 |
Ага. Но для учебы таки самое оно, чтобы потом не получить СДВГ (Синдром дефицита внимания и гиперактивности), которым страдают 99% новичков при увеличении проекта чуть выше уровня "свой калькулятор калорий". |
| Автор: Сонечка 2.3.2012, 10:28 | ||
Время на все нужно. Прочитать, осознать. А еще за половину скаченных книг зазря берешься, ибо бесполезные. Зато время тратишь. Напишите мне, что еще читать, что прям в корне изменит мое мировоззрение и сделает мой код простым и функциональным |
| Автор: k0rvin 2.3.2012, 11:13 | ||
"Структура и интерпретация компьютерных программ" |
| Автор: Сонечка 2.3.2012, 11:39 | ||
Вот спасибо) За одно еще видео какой-то лекции из MITa нашла по этой теме=) |
| Автор: k0rvin 2.3.2012, 12:45 | ||
Не "какой-то лекции по этой теме", а лекции по этому курсу и есть, они так и называются =) Видеоверсия немного отличается от книжной, но совсем чуть-чуть =) |
| Автор: Сонечка 2.3.2012, 14:18 | ||
^^ |
| Автор: baldina 5.3.2012, 18:06 |
| Читайте Г.Буча (ООП с примерами применения). |