Почему простой код лучше многократно используемого
Разработчики, особенно молодые из них, тратят слишком много времени, пытаясь думать о будущем и о том, как будет развиваться их код. Вместо этого им просто следует сохранять его простым и поддерживаемым.
Основополагающее правило DRY, на самом деле, может создать ряд проблем и привести к нежелательным последствиям. Нет ничего плохого, если ваш код повторяется. Если устранение повторений сделает ваш код менее понятным, воздержитесь от этого. Не усложняйте, двигайтесь в сторону простоты!
Одним из аспектов инициализации, серьезно влияющим на удобство сопровождения и изменения программы, является «время связывания» — момент, когда переменная и ее значение связываются вместе. В целом чем позже вы выполняете связывание, тем более гибким будет ваш код.
Значение 0xFF связывается с переменной titleBar.color во время написания кода. Как правило, это неудачное решение, потому что при изменении одного значения 0xFF может утратиться его соответствие в других фрагментах.
При связывании во время компиляции изменения будут автоматически отражены во всех местах, где переменная используется. Этот подход почти всегда лучше, чем жесткое кодирование.
Связывание во время выполнения является самым гибким решением, ведь достаточно изменить содержание ресурса, из которого ReadTitleBarColor() читает название цвета.
8 программ, написание которых улучшит ваш навык программирования.
Эта статья является продолжением предыдущей. В ней представлен список интересных и очень разнообразных проектов, реализация которых позволит вам стать более опытными в вопросах современных методов программирования и разработки, при этом вы коснётесь популярных API и разберетесь в таком важном протоколе, как HTTP.
Для тех, кто хочет писать код и ищет вдохновение статья будет крайне полезна.
Вы когда-нибудь пробовали описать цикл так, как показано на примере справа? Вы скажете, что это безумие, однако вот какой интересный факт хранит в себе этот фрагмент кода.
Казалось бы, меньше строк кода - быстрее и эффективнее он работает, однако тесты на Java и Microsoft Visual Basic показали, что второй фрагмент минимум на 60% быстрее первого.
Часто при написании циклов мы не задумываемся и пишем i++ для инкремента переменной-счетчика, однако если вы читали код программистов старой закалки, то, вероятно, замечали, что вместо i++ они используют ++i.
Объяснение такой практике простое. Если нам не нужно использовать текущее значение переменной перед инкрементом, то операция преинкремента выполниться быстрее, т.к. не предусматривает хранения предыдущего значения.
Код с подготовкой к вызову метода должен вызывать у вас подозрение. Натолкнувшись на код, подготавливающий программу к вызову метода или восстанавливающий ее боеспособность после вызова, спросите себя, формирует ли интерфейс метода адекватную абстракцию.
Так, если у вас обычно есть объект WithdrawalTransaction, но в метод ProcessWithdrawal передаются только несколько значений объекта, вам следует подумать о рефакторинге интерфейса метода, чтобы он принимал объект WithdrawalTransaction, а не его отдельные поля
Профессионализм в программировании достигается тяжёлыми усилиями. Если вы выучили пару языков программирования и думаете, что это конец, то вы ошибаетесь. Это только начало. Теперь у вас есть инструмент, но нужно еще научиться его правильно использовать.
В данной статье мы расскажем о книгах, благодаря которым вы сможете стать программистом-экспертом.
На вебинаре мы рассмотрим: ● Основные положения и принцип работы дискреционной модели управления доступом. ● Особенности реализации дискреционной модели управления доступом в Windows. ● Особенности реализации дискреционной модели управления доступом в Secret Net Studio. ● Особенности реализации дискреционной модели управления доступом в других средствах защиты информации.
Приглашаются Junior и Middle разработчики, администраторы, специалисты по информационной безопасности, DevOps специалисты.
Под снижением стоимости (strength reduction) понимают замену дорогой операции на более дешевую, например, умножения на сложение.
Иногда внутри цикла выполняется умножение индекса на какие-то другие значения. Сложение обычно выполняется быстрее, чем умножение, и, если вы можете вычислить то же число, заменив умножение на прибавление значения при каждой итерации цикла, это скорее всего приведет к ускорению выполнения кода.
В данном примере индекс цикла был единственной изменяющейся частью выражения, поэтому мы и смогли сделать выражение более эффективным.
Четыре ошибки, которые совершал каждый программист.
На пути становления хорошим разработчиком мы обязательно проходим этапы, когда все рушится и закончить работу в срок кажется невозможным. Не опускайте руки раньше времени - вот что приведет вас к цели.
Стив Джобс как-то сказал: «Я убежден, что большинство успешных предпринимателей отличаются от неуспешных настойчивостью». И да, это как никогда применимо к программистам, ведь от сложности поставленных задач порой кружится голова. Проявите твердость характера и выполните поставленную задачу. Поверьте, результат не заставит себя ждать, а чувство удовлетворения наполнит вашу жизнь позитивом.
При определенных обстоятельствах табличный код проще, чем сложные логические выражения, легче поддается изменению и он более эффективен. При применении табличных методов перед вами стоят два основных вопроса:
❶ ЧТО хранить в таблице? Иногда результатом поиска в таблице являются данные — тогда можно хранить в таблице сами данные. Если же результатом поиска является действие, можно хранить ссылку на метод.
❷ КАК будет выполняться поиск записей в таблице? Так, если вам нужно систематизировать данные по месяцам, то выбор ключа для таблицы месяцев очевиден. Вы можете использовать массив с индексом от 1 до 12.
Разумеется, создание большого условия if — неуклюжий способ решения этой проблемы.
Как часто мы негодуем насчет PHP, подшучиваем над теми, кто разрабатывает на нем, однако у PHP все круто и он не собирается уходить в небытие. PHP активно разрабатывается, в нем есть мощные фреймворки, такие как Laravel и Symfony.
PHP тесно связан с WordPress, а большинство хостинговых компаний продолжают поддерживать WordPress в качестве основной CMS. Хорошо это или плохо, увидим, но, как минимум, этот фактор точно не даст PHP умереть.
Хорошие разработчики крайне находчивы, но необязательно умны.
Действительно ли так важен интеллект и сообразительность в работе программиста? Думаете, что программистом нужно родиться? Можем с уверенностью сказать, что это неправда.
Хорошие разработчики бросают вызов сами себе и никогда не боятся просить о помощи, задавать вопросы коллегам. Для них решение поставленной задачи - дело первостепенной важности. К ее решению они подходят ответственно, что в конечном итоге делает из них незаменимых разработчиков и очень хороших программистов.
Если то, чем вы занимаетесь, не заставляет вас преодолевать трудности, то вы не развиваетесь в этом.
☝️🏻Курс предназначен для подготовки специалиста, который сможет не только решать рядовые задачи бэкенд-разработки, но и сделать с нуля современную фронтенд часть, включая работу с макетами (Python, JavaScript, Django, Flask, ReactJS, NodeJS, Docker, Figma и др.).
📌Только живое обучение онлайн: вебинары в прямом эфире, общение с преподавателями и группой в Слаке, проверка домашних работ и получение обратной связи.
📌Только опытные преподаватели-практики: Николай Барышников (Backend разработчик в РБК), Юрий Дворжецкий (ведущий разработчик и тренер в LuxoftTraining Center) и другие.
🔥Курс подходит для разработчиков, знающих азы Python, JavaScript и html/css. Проходите вступительное тестирование и присоединяйтесь прямо сейчас!
Используйте переменную только с одной целью. Иногда есть соблазн вызвать одну переменную в двух разных местах для решения двух разных задач. Использование "временной" переменной - очень плохая затея.
Вопрос: какие отношения связывают temp в первых строках кода и temp в последних? Ответ: никакие. Из-за использования в обоих случаях одной переменной создается впечатление, что две задачи связаны, хотя на самом деле это не так. Создавайте уникальные переменные для каждой цели, чтобы сделать код более читабельным и понятным.
🔥OTUS открывает набор на обновлённый продвинутый курс «Machine learning» Пройдите тест и займите своё место со специальной скидкой:
☝️🏻Только живое обучение: вебинары в прямом эфире, общение с преподавателями и группой в Слаке, проверка домашних работ.
☝️🏻Только проверенные преподаватели: Дмитрий Сергеев (Senior Data Scientist в Oura), Дмитрий Музалевский (Lead Data Scientist в Koerber Digital), Антон Лоскутов (Data Scientist в Mail Ru Group).
📌За 5 месяцев обучения: ● Узнаем о классических и самых современных методах и алгоритмах машинного обучения. ● На занятиях используем реальные задачи с грязными данными, а не только титаники с ирисами. ● Подойдём к процессу изучения со стороны работодателей - что действительно нужно и важно знать для решения прикладных проблем. ● Уделим внимание темам, которые незаслуженно упускаются в других программах - работа с временными рядами, поиск аномалий, а также работа с текстовыми данными, графами, рекомендательными системами и многими другими полезными вещами.
5 программ, написание которых улучшит ваш навык программирования
В небольшой статье мы собрали 5 интереснейших идей проектов для реализации. Несмотря на простоту, написание их позволит вам прочувствовать работу с разными инструментами языка JavaScript, при этом освоить популярные технологии и методики программирования.
Код должен быть как можно более выразительным. Слишком длинные выражения, венгерская запись, «волшебные числа» — все это скрывает намерения автора.
Такая запись выглядит компактной и плотной, но разбираться в ней — сущее мучение. Не жалейте времени на то, чтобы сделать намерения своего кода максимально прозрачными для читателей.