JavaRush /Java блог /Random /Кофе-брейк #96. 5 простых приемов программирования, котор...

Кофе-брейк #96. 5 простых приемов программирования, которые сделают ваше приложение более стабильным. 7 ежедневных советов для программистов, которые помогут ускорить написание кода

Статья из группы Random

5 простых приемов программирования, которые сделают ваше приложение более стабильным

Источник: Dev.to Стабильность вашего приложения или веб-сервиса важна как для вас, так и для пользователя. Сделать вещи устойчивыми — непросто, но существует несколько приемов кодирования, которые вы можете использовать, чтобы повысить стабильность и решать проблемы проще и быстрее. Вот пять простых приемов кодирования, которые сделают ваше приложение более стабильным, уменьшат количество ошибок и сделают вас лучшим программистом. Кофе-брейк #96. 5 простых приемов программирования, которые сделают ваше приложение более стабильным. 7 ежедневных советов для программистов, которые помогут ускорить написание кода - 1

Сравнение со статической строкой

Во многих приложениях вам понадобится в какой-то момент сравнить строку, содержащуюся в вашей переменной, с заранее заданным значением. Это распространенный сценарий, и тут очень легко ошибиться, особенно новичкам. Можно создать ошибки, которые, если их не обработать должным образом, приведут к сбою вашего приложения. Ошибки могут возникнуть даже в простых вещах. Давайте посмотрим на следующий пример:

public void doSomething(String parameter) {
    if (parameter.equals("new")) {
        // do something only in this case
    }
    // do some more stuff
}
Выглядит правильно, правда? Что ж, этот подход скрывает исключение NullPointerException, которое может появляться довольно часто. Если по какой-то причине “параметр” не инициализирован и остается пустым, это вызовет NPE. Исправить его довольно просто. Во-первых, давайте извлечем значение, которое мы хотим проверить. Затем, когда мы проводим наше сравнение, вместо того, чтобы сначала использовать параметр, мы используем наше извлеченное значение, так как мы знаем, что оно ВСЕГДА инициализируется. Новый, намного улучшенный код выглядит так:

private static final String NEW_PARAMETER = "new";

public void doSomething(String parameter) {
    if (NEW_PARAMETER.equals(parameter)) {
        // do something only in this case
    }
    // do some more stuff
}

Используйте Optional, если можно вернуть null

Одной из функций, представленных в Java 8, является класс Optional. Хотя он может показаться не таким уж большим, этот класс-оболочка может быть чрезвычайно полезен для облегчения понимания кода, а также для его стабильности. А все потому, что Optional может представлять две различные причины. Если как часть метода у вас есть необязательный параметр, это означает, что этот метод может работать правильно, даже если вы не знаете или не имеете значения для этого параметра. Вы можете просто использовать Optional.empty(), и этот метод будет, по крайней мере теоретически, работать хорошо, если присвоить ему значение по умолчанию или игнорировать этот параметр. Однако если метод возвращает Optional, это означает, что метод не может вернуть ответ в некоторых сценариях. До Java 8 это было сделано путем возврата значения NULL, что может привести к исключениям NullPointerExceptions. В случае с Optional четко указано, что ответ предоставляется не всегда. Кроме того, он сообщает всем, кто использует этот API / метод, что результат должен быть проверен с помощью isPresent(), и только в этом случае вы должны использовать результат. Да, плохие программисты могут просто вызвать .get() без проверки, это легко обнаружить во время проверки кода или с помощью инструментов статического анализа. Это не решает проблему полностью, но, по крайней мере, должно заставить кого-то дважды подумать перед тем как возвращать необязательный параметр. Тот простой факт, что вам нужен дополнительный вызов для получения значения, помогает случайно получить нулевые исключения.

Избегайте Exception Swallowing

С этой проблемой я сталкивался много раз, особенно в устаревших системах. Это то, что легко упустить из виду, и, хотя это не вызывает никаких проблем с фактическим потоком обработки, это делает вещи чрезвычайно трудными для исследования и исправления. Для тех, кто не знает, Exception Swallowing — это способ скрыть возникновение исключения, не регистрируя его. Лучше всего это пояснить на примере ниже:

public boolean processData() {
    try {
        ...
        myService.process(); // this will thrown an exception sometime
        ...
    } catch(Exception e) {
        return false;
    }
    return true;
}
В этом примере служба может вызвать исключение. Когда это происходит, мы его используем, чтобы избежать проблем с потоком обработки, но мы ничего не регистрируем. Для того, кто позже будет изучать в коде, почему обработка не произошла, не будет никакой полезной информации. Это еще хуже, если тот же результат (в данном случае false) может быть возвращен в блоке try {}. Некоторые пытаются исправить это, просто регистрируя сообщение об ошибке. Однако это не улучшает ситуацию. Да, вы знаете, что при обработке данных произошла ошибка, но не более того. Что на самом деле произошло? Что вызвало ошибку? Как мне это воспроизвести? Ниже описано, как правильно это исправить и избежать Exception Swallowing. Вот почему все методы логгера имеют в качестве параметра параметр Throwable. Таким образом, вы фактически напечатаете трассировку стека в журналах и сможете узнать, где возникла проблема, и, если повезет, точную причину.

public boolean processData() {
    try {
        ...
        myService.process(); 
        ...
    } catch(Exception e) {
        LOGGER.error("Error processing data");
        return false;
    }
    return true;
}

public boolean processData() {
    try {
        ...
        myService.process(); // this will thrown an exception sometime
        ...
    } catch(Exception e) {
        LOGGER.error("Error processing data", e);
        return false;
    }
    return true;
}

Создайте финальное catch-all statement

Иногда бывает сложно заранее увидеть все ошибки и исключения, которые могут произойти. Возможно, API изменился в библиотеке, которую вы используете, после обновления до более новой версии, или, может быть, другой член команды ленился и забыл добавить где-нибудь catch. Вот почему важно иметь оператор catch, который инкапсулирует все ваше приложение или сервис. Там вы можете зарегистрировать возникшее исключение и вернуть правильный ответ клиенту. Во всех основных фреймворках есть функция, с помощью которой вы можете определить, что происходит в случае исключения, поэтому обязательно используйте ее. Если ваше приложение вызывается клиентом, у вас будет возможность правильно ответить и не заставлять его ждать. Если это приложение, оно, по крайней мере, не выйдет из строя внезапно и сможет продолжать обрабатывать запросы. Тем не менее, постарайтесь создать всеобъемлющий оператор, в котором все, что пошло не так, должным образом регистрируется, а программа завершается плавно.

Не изобретайте велосипед

Независимо от того, какой язык программирования вы используете, велика вероятность того, что вы найдете библиотеки для многих общих задач и функций, которые вам придется создать. По возможности используйте их. Не пытайтесь изобретать велосипед и писать все самостоятельно. В большинстве случаев код, представленный в таких библиотеках, более надежен, хорошо обрабатывает ошибки и обладает большей функциональностью, чем вы изначально думаете, что вам нужно. Убедитесь, что библиотека находится в хорошем состоянии, и, если вы создаете коммерческий проект, проверьте лицензию. Нужно разобрать текст JSON? Для этого есть библиотека. Хотите протестировать свой код? Для этого тоже есть рамки. Как разработчик, вам не нужно писать все с нуля, но вы должны знать, какие ресурсы использовать и когда для создания своего видения и программного обеспечения.

7 ежедневных советов для программистов, которые помогут ускорить написание кода

Источник: CMSinstallation Программисты часто выполняют очень сложные задания. При этом большинство из них, как правило, сейчас работают из дома, где всегда есть множество отвлекающих факторов, которые мешают во время работы. Чтобы научиться их игнорировать, нужно составить ежедневный список задач. Кофе-брейк #96. 5 простых приемов программирования, которые сделают ваше приложение более стабильным. 7 ежедневных советов для программистов, которые помогут ускорить написание кода - 2Итак, давайте узнаем несколько советов, которые помогут программистам работать лучше и быстрее.
  1. Создайте блок-схему вашего кода.
  2. Придумайте список задач на каждый день.
  3. Всегда пишите полезные комментарии.
  4. Не отвлекайтесь на посторонние вещи.
  5. Попробуйте отладить свой код.
  6. Попробуйте исправить ошибки в своем коде.
  7. Классифицируйте свои навыки.

1. Создайте блок-схему своего кода

Программирование — это язык, которому нужна диаграмма, которая знает все этапы создания и работы вашего кода. Без блок-схемы отладить код очень сложно. Составление блок-схемы кода — хороший способ для программиста научиться чему-то новому. Помните одну вещь, прежде чем приступить к любому проекту: вам нужно создать блок-схему этого проекта. Это улучшит ваши навыки программирования.

2. Ежедневно составляйте список задач

Прежде чем приступить к работе в течение дня, вам необходимо составить список задач, которые вы будете выполнять в течение дня. После того, как вы завершите работу, выполняйте отладку шаг за шагом и устраняйте ошибки. Это один из лучших ежедневных приемов для программистов.

3. Всегда пишите полезные комментарии

Комментарии необходимы, когда у вас большой объем исходного кода. Они помогают определить, что делает каждая строка кода, и помогают понять смысл этой функции. Также это облегчает задачу тем, кто когда-то будет просматривать ваш код. Комментарии в коде делают жизнь разработчика более спокойной и свободной от стресса. Это же относится и к тем, кто после вас должен поддерживать ваш код. Вам нужно просто написать простой комментарий к функции, используя перед ним знак (//).

4. Не отвлекайтесь на посторонние вещи

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

5. Попробуйте отладить свой код

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

6. Попробуйте исправить ошибки в коде

Устранение ошибок — это улучшение навыков программирования, это знает каждый программист, но когда приходит время исправлять ошибки, многие сдаются. Работа над ошибками — не проблема для профессиональных программистов. Просто скажите себе: “Я могу это сделать”. Это воодушевит вас.

7. Классифицируйте свои навыки

У каждого программиста существуют свои способы работать быстрее. Вы также можете создать свой наиболее удобный для вас метод работы. Некоторые для этого больше практикуются, чтобы понять работу той или иной функции.
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Андрей Уровень 29 Expert
14 октября 2021
давайте извлечем значение, которое мы хотим проверить... ...мы используем наше извлеченное значение, так как мы знаем, что оно ВСЕГДА инициализируется Ээээм... А не лучше ли будет написать так:

public void doSomething(String parameter) {
    if ("new".equals(parameter)) {
        // do something only in this case
    }
    // do some more stuff
}
Павел Уровень 35
14 октября 2021
Третий пункт, из 7 советов, уже устарел, т.к. роботы могут коментить описание каждой строчки программы