• Как сделать отправку сообщения с сервера каждый период времени?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    крон
    Ответ написан
    Комментировать
  • Обязательно ли читать книгу по языку/технологии что бы быть тру и продвинутым кодером?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Вы не найдёте ни одного авторитетного программиста с мировой известностью, который бы утверждал, что курсы и видео-уроки лучше книг. Обычно это утверждают либо профаны, оправдывающие своё нежелание читать, либо авторы курсов, делающие деньги на лентяях и глупцах. И я лично за 18 лет в отрасли встретил множество программистов, но ни одного хорошего, выучившегося по курсам и видео-урокам.

    Видеокурс может запилить любой дурак. Чтобы написать книгу, нужно иметь авторитет достаточный для издательства. Кроме того, текст пройдёт редактуру нескольких профессионалов. Поэтому знания в книгах качественные и систематизированные. Для начинающего это очень важные качества.

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

    Наконец, постоянная практика чтения неизбежно приводит к увеличению скорости чтения. И наступает момент когда прочитать учебник будет в 10 и более раз быстрее, чем просмотреть видеокурсы по той же теме и в том же объёме.

    Кроме того, чтение развивает абстрактное мышление - основной инструмент разработчика.
    Ответ написан
    16 комментариев
  • Можно ли в перечислении делать какие-то вычисления?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Перечисление - это синтаксический сахар над обычным классом, так что нет никаких технических ограничений к тому, чтобы напихать в него логику. Кроме того, это бывает уместно и с архитектурных позиций. Джошуа Блоха в статье 30 шестой главы своего хрестоматийного труда "Effective Java" приводит несколько таких примеров. Один из них очень похож на ваш:
    enum Operation {
        PLUS("+") {
            double apply(double x, double y) { return x + y; }
        },
        MINUS("-") {
            double apply(double x, double y) { return x - y; }
        },
        TIMES("*") {
            double apply(double x, double y) { return x * y; }
        },
        DIVIDE("/") {
            double apply(double x, double y) { return x / y; }
        };
    
        private final String symbol;
    
        Operation(String symbol) {
              this.symbol = symbol;
         }
    
        @Overrided 
        public String toString() {
              return symbol;
         }
    
        abstract double apply(double x, double y);
    }
    
    public class Example {
        public static void main(String[] args) {
            double x = Double.parseDouble(args[0]);
            double y = Double.parseDouble(args[1]);
    
            for (Operation op : Operation.values())
                System.out.printf("%f %s %f = %f%n", x, op, y, op.apply(x, y));
            }
        }
    }
    Ответ написан
    Комментировать