Clean Code
13.3K subscribers
2.32K photos
5 videos
2.98K links
Советы по написанию кода, обзоры распространенных ошибок и многое другое.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

РКН: clck.ru/3Ht6ch
加入频道
Перестаньте использовать i++ в циклах.

Часто при написании циклов мы не задумываемся и пишем i++ для инкремента переменной-счетчика, однако если вы читали код программистов старой закалки, то, вероятно, замечали, что вместо i++ они используют ++i.

Объяснение такой практике простое. Если нам не нужно использовать текущее значение переменной перед инкрементом, то операция преинкремента выполниться быстрее, т.к. не предусматривает хранения предыдущего значения.

Читать статью

#programming #increment
Бабушкины сказки

Вы когда-нибудь пробовали описать цикл так, как показано на примере справа? Вы скажете, что это безумие, однако вот какой интересный факт хранит в себе этот фрагмент кода.

Казалось бы, меньше строк кода - быстрее и эффективнее он работает, однако тесты на Java и Microsoft Visual Basic показали, что второй фрагмент минимум на 60% быстрее первого.

#tips #cycles
8 программ, написание которых улучшит ваш навык программирования.

Эта статья является продолжением предыдущей. В ней представлен список интересных и очень разнообразных проектов, реализация которых позволит вам стать более опытными в вопросах современных методов программирования и разработки, при этом вы коснётесь популярных API и разберетесь в таком важном протоколе, как HTTP.

Для тех, кто хочет писать код и ищет вдохновение статья будет крайне полезна.

Читать статью | Предыдущая

#programming #improvement
Время связывания

Одним из аспектов инициализации, серьезно влияющим на удобство сопровождения и изменения программы, является «время связывания» — момент, когда переменная и ее значение связываются вместе.
В целом чем позже вы выполняете связывание, тем более гибким будет ваш код.

Значение 0xFF связывается с переменной titleBar.color во время написания кода. Как правило, это
неудачное решение, потому что при изменении одного значения 0xFF может утратиться его соответствие в других фрагментах.

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

Связывание во время выполнения является самым гибким решением, ведь достаточно изменить содержание ресурса, из которого ReadTitleBarColor() читает название цвета.

#tips #binding
Почему простой код лучше многократно используемого

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

Основополагающее правило DRY, на самом деле, может создать ряд проблем и привести к нежелательным последствиям. Нет ничего плохого, если ваш код повторяется. Если устранение повторений сделает ваш код менее понятным, воздержитесь от этого. Не усложняйте, двигайтесь в сторону простоты!

Читать статью

#programming #principles
8 причин, по которым мы отказались от разработки гибридных приложений.

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

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

Читать статью

#programming #hybrid_development
Объединение циклов

Если два цикла работают с одним набором элементов, можно выполнить их объединение (jamming). Выгода здесь объясняется устранением затрат, связанных с выполнением дополнительного цикла.

Объединение циклов обычно требует, чтобы условия циклов были одинаковы. В нашем примере оба цикла выполняются от 0 до employeeCount - 1, поэтому мы можем их объединить.

Для случая employeeCount = 100 экономия времени составляет 28%(C++), 32%(PHP), 4%(Visual Basic). Объединить циклы иногда трудно. Будьте внимательны: прежде чем объединять циклы, убедитесь, что это не нарушит работу остальных частей кода.

#tips #cycles
С чего начинать разработку нового приложения?

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

Читать статью

#programming #applications
Логические переменные

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

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

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

#tips #logic
Что значит чистый код.

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

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

Читать статью

#programming #cleancode
Сложности использования оператора break

Согласно статье в «Software Engineering Notes» программная ошибка, которая 15 января 1990 года на 9 часов вывела из строя телефонную сеть Нью-Йорка, возникла из-за лишнего оператора break.

Цикл, содержащий большое количество операторов break, может сигнализировать о нечетком представлении структуры цикла или его роли в окружающем коде.

Допустим, Java поддерживает помеченные операторы break, что позволяет предотвратить проблемы, приведшие к выходу из строя телефонов в Нью-Йорке. break с меткой можно использовать для выхода из цикла for, условия if или любого блока кода, заключенного в скобки, и при этом сделать этот переход однозначным и безопасным.

#tips #break
Я не обновляю свой профиль в LinkedIn!

Изначально LinkedIn являлась и до сих пор является социальной сетью для поиска и установления деловых контактов. Вы размещали там своё резюме и в скором времени получали предложения работы.

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

Читать статью

#tips #social_networks
Не используйте параметры метода в качестве рабочих переменных

Использовать передаваемые в метод параметры как рабочие переменные опасно. Создайте для этой цели локальные переменные. Так, в следующем фрагменте кода переменная inputVal некорректно служит для хранения промежуточных результатов вычислений.

Создание новой переменной workingVal поясняет роль inputVal и исключает возможность ошибочного использования inputVal в неподходящий момент. Имена inputVal и workingVal просто ужасны и служат в данном примере только для пояснения ролей переменных.

#tips #arguments
Инструменты для программистов, которые повысят эффективность работы.

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

Вы узнаете о BundlePhobia, Web Code, RequestBin, CloudCraft и многих других онлайн-сервисах.

Читать статью

#programming #effectiveness
Предотвращайте бесконечную рекурсию с помощью счетчиков безопасности

Если вы используете рекурсию, рекомендуется добавить счетчики безопасности, дабы избежать бесконечной рекурсии. Счетчиком должна быть такая переменная, которая не будет создаваться при каждом вызове метода. Используйте переменную член класса или передавайте счетчик безопасности в виде параметра.

#tips #recursion
Что работает быстрее: while, For, forEach(), For…of ?

Как-то раз автора статьи упрекнули в том, что он не использовал цикл for..of. Данное замечание побудило его провести небольшое исследование производительности и скорости работы каждого из циклов JavaScript. Более подробный отчет о результатах представлен в статье.

Читать статью

#programming #javascript
Хаос в голове - хаос в коде

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

Код из примера слева непонятен даже не по той причине, что отсутствует контекст, а из-за того, что программист не позаботился о пробелах и табуляции, использовал запутывающие условия в цикле. Ему будет намного проще вспомнить назначение этого кусочка кода, если он будет структурирован и продуман. Как ни странно, но помочь в этом могут пробелы и табуляции.

#tips #structuring
Встраивание класса

В случае, если класс в вашей программе совершает минимальное количество действий и не имеет никакой ответственности, то целесообразно переместить все свойства такого класса в состав другого класса.

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

Подробнее

#tips #inline_class
10 вещей, которые я хотел бы знать в начале карьеры программиста

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

Этому и посвящена данная статья, которая расскажет, на какие 10 аспектов в становлении программистом стоит в первую очередь обратить внимание.

Читать статью

#programming #self_improvement