JavaRush /Java блог /Архив info.javarush /Достойный и красивый код
Javin
7 уровень
Stockholm

Достойный и красивый код

Статья из группы Архив info.javarush
Раздел с примерами как не следует писать программный код есть, так может следует иметь тему на форуме и с диаметрально противоположными примерами? Догадываюсь, что понятия «достойно и красиво» весьма субъективны, ну так дружелюбно и без насмешек ведь вполне можно обходиться с коллегами по изучению java-премудростей, не так ли, друзья?! Идея родилась вчера, когда в комментариях к заданиям в новой версии javarush обнаружил для себя два познавательных и изящных кода (жаль, что авторам в тех разделах нельзя было «плюсануть» - создатели javarush эту возможность не предоставили). А если взять примеры из изобразительного искусства, музыки, литературы, то обучение строится на достойных примерах для подражания. Не встречалось что-то обучение мастерству на примерах китча, безвкусицы, пошлости. Даже в строгой шахматной аннотации используется восклицательный знак, когда следует неочевидный и весьма эффектный ход… В общем, я за подборку достойных и красивых примеров для подражания и в java-программировании. P.S. Созвучная некоторым изложенным мыслям статья: «Что такое красивый код, и как его писать?»
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Javin Уровень 7
9 марта 2017
Использование массива типа char
Автор: Ruslan Zinovyev
Задание: Ввести с клавиатуры число. Определить, сколько в введенном числе четных цифр, а сколько нечетных.
Если число делится без остатка на 2 (т. е. остаток равен нулю), значит оно четное.
Увеличиваем на 1 счетчик четных цифр (статическая переменная even).
Иначе число нечетное, увеличиваем счетчик нечетных цифр (статическая переменная odd).
Вывести на экран сообщение: «Even: а Odd: b», где а — количество четных цифр, b — количество нечетных цифр.


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
   public static int even = 0;
   public static int odd = 0;

   public static void main(String[] args) throws IOException {
           BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
           String s = reader.readLine();
           char[] array = s.toCharArray();

           for (char x : array ) {

               if(x % 2 == 0) {
                   even++;
               } else {
                   odd++;
               }
           }
           System.out.println("Even: " + even + " Odd: " + odd);
       }
}

Тип char в Java используется для хранения Unicode-символов, однако решение предложенное Ruslan Zinovyev напоминает, что его можно использовать и как целочисленный тип [0;65 536]. А зная, что юникод цифровых символов от 0 до 9 в шестнадцатеричной записи: 0030 до 0039, то и для разделения на четные-нечетные цифры он вполне подходит.
Joysi Уровень 41
9 марта 2017
А если взять примеры из изобразительного искусства, музыки, литературы, то обучение строится на достойных примерах для подражания…
Искусство — слишком индивидуально и зависит от массы других факторов (время, социум,..._).
У Сергея Рахманинова солдаты в окно рояль выбросили, что не мешало восхищаться его музыкой в СССР спустя 20 лет.

По поводу красивого и достойного кода после второй половины (я про старую версию, в районе 30 уровня) — будут занятия и практика посвященные правильному оформлению кода (с точки зрения читаемости) и также рефакторингу (оптимизация с точки зрения повторного использования, ресурсовыделения и т.п.).

Если уже любопытно, можете посмотреть материалы на
refactoring.guru/
google.github.io/styleguide/javaguide.html
web.archive.org/web/20140228225807/http://www.oracle.com/technetwork/java/codeconventions-150003.pdf