JavaRush /Java блог /Архив info.javarush /Оформление кода
Joysi
41 уровень

Оформление кода

Статья из группы Архив info.javarush
Одну из задач (которая была решена и принята сервером) я реализовал в виде кода (забил * и X-ми чтобы не спойлерить). /* xxx 1. Считывать строки(параметры) с консоли, пока пользователь не введет пустую строку(Enter). 2. Каждый параметр соответствует имени ***. Для каждого параметра: 3. Создать объект *** класса ***, который равен *** из getX(String параметр). 4. Вывести на экран toString(). */ public class Solution { public static void main(String[] args) throws Exception { //Add your code here List al= new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String str; while(!"".equals(str = reader.readLine())) al.add(str); for (int i = 0; i Зашедший в гости полузнакомый раскритиковал, что так не пишут (это тебе не C и т.п.). Не подскажете в чем я не прав (есть какие нормы и общепринятые стандарты) ? Или использование в одной строчке нескольких конструкций (оно вообще, без промежуточных присваиваний временным переменным, может привести в каких-либо ситуациях к каким-либо возможным последствиям?) - дурной тон? Основные переменные (al, reader, str) объявлены до их использования (pascal-стиль), так как мне удобнее, всегда знаешь где можешь найти описание переменной с возможным комментарием. Вспомогательные переменные объявлены в нужной зоне видимости (как переменная цикла i). Idea не ругается, правда предлагает 2 опции: Split into declaration and assigment (таки разделить объявление и присваивание) и заключить некоторые участки в блок try. Как бы Вы правильнее написали код? Что не так? Для такой задачи не стоит комментировать каждую строчку.
Комментарии (11)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Nezhelskiy Уровень 14
21 января 2016
Замечу, что написанный в одну строку блок в режиме отладки будет выполняться целиком и невозможно будет проследить по-шагово, что происходит в цикле, например.
Fry Уровень 41
21 января 2016
yag0andy Уровень 41
20 января 2016
Вот такое:

for (int i = 0; i <al.size(); i++) System.out.println(XFactory.getX(al.get(i)).toString());


я предпочел бы заменить на:


for (String line : list) {
    System.out.println(XFactory.getX(line).toString());
}


Названия переменных типа «а1» суть зло ))