В случае, если класс в вашей программе совершает минимальное количество действий и не имеет никакой ответственности, то целесообразно переместить все свойства такого класса в состав другого класса.
Это позволит разгрузить код и избавиться от ненужных сущностей.
Бывают такие ситуации, когда приходит идея, как решить проблему, и вы сразу же приступаете к ее воплощению, пишете код, но забываете о его структуре и лаконичности, грамотном именовании переменных. В итоге через какое-то время это приводит к тому, что после повторного прочтения кода вы не имеете ни малейшего понятия, зачем он был написан.
Код из примера слева непонятен даже не по той причине, что отсутствует контекст, а из-за того, что программист не позаботился о пробелах и табуляции, использовал запутывающие условия в цикле. Ему будет намного проще вспомнить назначение этого кусочка кода, если он будет структурирован и продуман. Как ни странно, но помочь в этом могут пробелы и табуляции.
💥Всех желающих детальнее погрузиться в виртуальную машину Java и научиться заглядывать «под капот» популярных фреймворков OTUS приглашает на открытые 2х-дневные онлайн-интенсивы.
Старт 12 декабря, в 20.00 мск. 👉🏻Запишитесь, чтобы не пропустить:
🖊День 1 посвящен Framework Spring: -вы узнаете, что такое Spring и IoC-контейнер; -научитесь создавать простые приложения; -разберетесь с получением данных со стороннего сервиса.
🖊День 2 будет предназначен для Java: -вы поймете, как использовать всю мощь Java; -научитесь настраивать GC; -изучите методы проведения правильного логирования.
🗣Проводят встречи специалисты с многолетним опытом и руководители образовательных программ, не нуждающиеся в дополнительном представлении: Юрий Дворжецкий и Сергей Петрелевич.
Записывайтесь и присоединяйтесь к нам 12 и 13 декабря. Вам точно будет чему поучиться!
Что работает быстрее: while, For, forEach(), For…of ?
Как-то раз автора статьи упрекнули в том, что он не использовал цикл for..of. Данное замечание побудило его провести небольшое исследование производительности и скорости работы каждого из циклов JavaScript. Более подробный отчет о результатах представлен в статье.
Знаете, каким образом ваш голосовой помощник распознает речь, как банк защищает ваш аккаунт от мошенников и как интернет-магазин определяет товар для рекомендации?
Эти задачи решает Data Scientist. Неудивительно, что сегодня это прорывная профессия с ЗП от 130 000 руб./мес
Звучит интересно, но сложно? На специализации Data Science в школе-данных SkillFactory вы сможете онлайн освоить профессию за 12 месяцев. Будет непросто, да, но интересно и суперперспективно.
На курсе вас ждут 20% теории и 80% практики на реальных данных: Python, машинное обучение, нейросети и deep learning, Big Data и Data engineering, математика и статистика для Data Sciencе + модуль менеджмента.
Уже к концу обучения вы сможете продемонстрировать работодателям Git-репозиторий с вашими готовыми кейсами!
🎯Если и учиться, то только практикуя. Реализуйте свой потенциал! P.S. До 13 декабря действует скидка 40%.
Предотвращайте бесконечную рекурсию с помощью счетчиков безопасности
Если вы используете рекурсию, рекомендуется добавить счетчики безопасности, дабы избежать бесконечной рекурсии. Счетчиком должна быть такая переменная, которая не будет создаваться при каждом вызове метода. Используйте переменную член класса или передавайте счетчик безопасности в виде параметра.
● Поговорим о среде, в которой живут тесты. ● Обсудим, что нам нужно кроме IDE и CI-сервера для счастья ● Выясним, как избавиться от рутины с Jira-отчетами. ● Посмотрим, как можно мониторить автоматизацию и выявлять слабые места.
📌Онлайн вы научитесь завязывать автоматизацию тестирования с CI-системой, Jira, TestRail ,а также узнаете, что полезно визуализировать в процессе автоматизации и как это делать.
Проведёт интенсив Дмитрий Еремин (Тестировщик, QA Lead, специалист по автоматизированному тестированию), руководитель программы и преподаватель онлайн-курса "Java QA Engineer".
Ловите курс по основным темам C++, всего 148 часов!😉 Пройдите тест, чтобы поступить в группу
«Разработчик С++» от OTUS – наиболее полный курс по C++ об асинхронном программировании и шаблонной магии проектирования, стандартах С++ 14/17, паттернах, популярных ML-библиотеках и многом другом.
Инструменты для программистов, которые повысят эффективность работы.
Статья рассказывает о 9 крайне полезных инструментах, которые помогут программистам в решении часто возникающих проблем и задач, начиная от разработки облачной архитектуры, сжатия изображений и заканчивая генераторами кода.
Вы узнаете о BundlePhobia, Web Code, RequestBin, CloudCraft и многих других онлайн-сервисах.
Что такое безопасность веб-приложений и можно ли добиться максимальной защищённости? Узнай всё о кибербезопасности на бесплатном интенсиве от Skillbox.
За три дня мы разберёмся с различными аспектами безопасности веб-приложений, на практике используем инструменты анализа уязвимостей и применим некоторые из них на тестовом веб-сайте, узнаем, что такое SQL-injection и XSS-атаки и чем пентестер отличается от хакера.
🎁 А в конце интенсива у тебя будет шанс получить грант на обучение в онлайн-университете Skillbox!
Не используйте параметры метода в качестве рабочих переменных
Использовать передаваемые в метод параметры как рабочие переменные опасно. Создайте для этой цели локальные переменные. Так, в следующем фрагменте кода переменная inputVal некорректно служит для хранения промежуточных результатов вычислений.
Создание новой переменной workingVal поясняет роль inputVal и исключает возможность ошибочного использования inputVal в неподходящий момент. Имена inputVal и workingVal просто ужасны и служат в данном примере только для пояснения ролей переменных.
Изначально LinkedIn являлась и до сих пор является социальной сетью для поиска и установления деловых контактов. Вы размещали там своё резюме и в скором времени получали предложения работы.
Многие считают, что чем чаще вы обновляете своё резюме, тем выше ваши шансы в конкурентной борьбе. Частично это так, но и здесь есть свои подводные камни, грабли, на которые наступаешь уже впоследствии. Статья описывает возможные проблемы, возникающие при неудержимом желании обновлять своё резюме в LinkedIn
Согласно статье в «Software Engineering Notes» программная ошибка, которая 15 января 1990 года на 9 часов вывела из строя телефонную сеть Нью-Йорка, возникла из-за лишнего оператора break.
Цикл, содержащий большое количество операторов break, может сигнализировать о нечетком представлении структуры цикла или его роли в окружающем коде.
Допустим, Java поддерживает помеченные операторы break, что позволяет предотвратить проблемы, приведшие к выходу из строя телефонов в Нью-Йорке. break с меткой можно использовать для выхода из цикла for, условия if или любого блока кода, заключенного в скобки, и при этом сделать этот переход однозначным и безопасным.
С помощью хорошего кода мы можем рассказывать историю наподобие того, как писатель отражает судьбу своих героев. Чистый и экспрессивный код способен воодушевлять и дарить радость.
В статье собран набор основных правил и советов, следование которым сделает ваш код более аккуратным и читабельным, что является его важной характеристикой, особенно при сопровождении.
Логические или булевы переменные сложно использовать неправильно, но их вдумчивое применение сделает вашу программу аккуратней.
Создание логических переменных упрощает сложные условия и облегчает модифицирование в дальнейшем, ведь зачастую сложно составить правильное логическое условие с первой попытки.
Иногда проверку логического условия удобнее поместить в какой-либо метод или функцию, тогда мы уменьшим избыточность кода и повысим его читабельность. В таком случае название метода должно четко и ясно характеризовать проверку.
Подготовили очень полезный материал, в котором перечислены обязательные компоненты приложения, внедрение и реализацию которых необходимо продумывать заранее. При этом даются дельные советы и случаи из реальной практики, которые происходили во время разработки.
Если два цикла работают с одним набором элементов, можно выполнить их объединение (jamming). Выгода здесь объясняется устранением затрат, связанных с выполнением дополнительного цикла.
Объединение циклов обычно требует, чтобы условия циклов были одинаковы. В нашем примере оба цикла выполняются от 0 до employeeCount - 1, поэтому мы можем их объединить.
Для случая employeeCount = 100 экономия времени составляет 28%(C++), 32%(PHP), 4%(Visual Basic). Объединить циклы иногда трудно. Будьте внимательны: прежде чем объединять циклы, убедитесь, что это не нарушит работу остальных частей кода.
8 причин, по которым мы отказались от разработки гибридных приложений.
Действительно ли так хороша кроссплатформенная разработка, стоит ли вообще прибегать к разработке гибридных приложений? Безусловно, ряд проектов имеет смысл разрабатывать таким подходом, но если дело доходит до ПО широкого масштаба, здесь уже не обойтись без нативной разработки.
Статья расскажет вам, какие опасности подстерегают разработчиков гибридных приложений.