Жив ли PHP?
Как часто мы негодуем насчет PHP, подшучиваем над теми, кто разрабатывает на нем, однако у PHP все круто и он не собирается уходить в небытие. PHP активно разрабатывается, в нем есть мощные фреймворки, такие как Laravel и Symfony.
PHP тесно связан с WordPress, а большинство хостинговых компаний продолжают поддерживать WordPress в качестве основной CMS. Хорошо это или плохо, увидим, но, как минимум, этот фактор точно не даст PHP умереть.
Читать статью
#programming #php
Как часто мы негодуем насчет PHP, подшучиваем над теми, кто разрабатывает на нем, однако у PHP все круто и он не собирается уходить в небытие. PHP активно разрабатывается, в нем есть мощные фреймворки, такие как Laravel и Symfony.
PHP тесно связан с WordPress, а большинство хостинговых компаний продолжают поддерживать WordPress в качестве основной CMS. Хорошо это или плохо, увидим, но, как минимум, этот фактор точно не даст PHP умереть.
Читать статью
#programming #php
Основные вопросы применения табличных методов
При определенных обстоятельствах табличный код проще, чем сложные логические выражения, легче поддается изменению и он более эффективен. При применении табличных методов перед вами стоят два основных вопроса:
❶ ЧТО хранить в таблице? Иногда результатом поиска в таблице являются данные — тогда можно хранить в таблице сами данные. Если же результатом поиска является действие, можно хранить ссылку на метод.
❷ КАК будет выполняться поиск записей в таблице? Так, если вам нужно систематизировать данные по месяцам, то выбор ключа для таблицы месяцев очевиден. Вы можете использовать массив с индексом от 1 до 12.
Разумеется, создание большого условия if — неуклюжий способ решения этой проблемы.
#programming #table_methods
При определенных обстоятельствах табличный код проще, чем сложные логические выражения, легче поддается изменению и он более эффективен. При применении табличных методов перед вами стоят два основных вопроса:
❶ ЧТО хранить в таблице? Иногда результатом поиска в таблице являются данные — тогда можно хранить в таблице сами данные. Если же результатом поиска является действие, можно хранить ссылку на метод.
❷ КАК будет выполняться поиск записей в таблице? Так, если вам нужно систематизировать данные по месяцам, то выбор ключа для таблицы месяцев очевиден. Вы можете использовать массив с индексом от 1 до 12.
Разумеется, создание большого условия if — неуклюжий способ решения этой проблемы.
#programming #table_methods
Четыре ошибки, которые совершал каждый программист.
На пути становления хорошим разработчиком мы обязательно проходим этапы, когда все рушится и закончить работу в срок кажется невозможным. Не опускайте руки раньше времени - вот что приведет вас к цели.
Стив Джобс как-то сказал: «Я убежден, что большинство успешных предпринимателей отличаются от неуспешных настойчивостью». И да, это как никогда применимо к программистам, ведь от сложности поставленных задач порой кружится голова. Проявите твердость характера и выполните поставленную задачу. Поверьте, результат не заставит себя ждать, а чувство удовлетворения наполнит вашу жизнь позитивом.
Читать статью
#programming #improvement
На пути становления хорошим разработчиком мы обязательно проходим этапы, когда все рушится и закончить работу в срок кажется невозможным. Не опускайте руки раньше времени - вот что приведет вас к цели.
Стив Джобс как-то сказал: «Я убежден, что большинство успешных предпринимателей отличаются от неуспешных настойчивостью». И да, это как никогда применимо к программистам, ведь от сложности поставленных задач порой кружится голова. Проявите твердость характера и выполните поставленную задачу. Поверьте, результат не заставит себя ждать, а чувство удовлетворения наполнит вашу жизнь позитивом.
Читать статью
#programming #improvement
Снижение стоимости операций
Под снижением стоимости (strength reduction) понимают замену дорогой операции на более дешевую, например, умножения на сложение.
Иногда внутри цикла выполняется умножение индекса на какие-то другие значения. Сложение обычно выполняется быстрее, чем умножение, и, если вы можете вычислить то же число, заменив умножение на прибавление значения при каждой итерации цикла, это скорее всего приведет к ускорению выполнения кода.
В данном примере индекс цикла был единственной изменяющейся частью выражения, поэтому мы и смогли сделать выражение более эффективным.
#programming #tips
Под снижением стоимости (strength reduction) понимают замену дорогой операции на более дешевую, например, умножения на сложение.
Иногда внутри цикла выполняется умножение индекса на какие-то другие значения. Сложение обычно выполняется быстрее, чем умножение, и, если вы можете вычислить то же число, заменив умножение на прибавление значения при каждой итерации цикла, это скорее всего приведет к ускорению выполнения кода.
В данном примере индекс цикла был единственной изменяющейся частью выражения, поэтому мы и смогли сделать выражение более эффективным.
#programming #tips
7 книг для программистов
Профессионализм в программировании достигается тяжёлыми усилиями. Если вы выучили пару языков программирования и думаете, что это конец, то вы ошибаетесь. Это только начало. Теперь у вас есть инструмент, но нужно еще научиться его правильно использовать.
В данной статье мы расскажем о книгах, благодаря которым вы сможете стать программистом-экспертом.
Читать статью
#programming #books
Профессионализм в программировании достигается тяжёлыми усилиями. Если вы выучили пару языков программирования и думаете, что это конец, то вы ошибаетесь. Это только начало. Теперь у вас есть инструмент, но нужно еще научиться его правильно использовать.
В данной статье мы расскажем о книгах, благодаря которым вы сможете стать программистом-экспертом.
Читать статью
#programming #books
Подготовительный код
Код с подготовкой к вызову метода должен вызывать у вас подозрение. Натолкнувшись на код, подготавливающий программу к вызову метода или восстанавливающий ее боеспособность после вызова, спросите себя, формирует ли интерфейс метода адекватную абстракцию.
Так, если у вас обычно есть объект WithdrawalTransaction, но в метод ProcessWithdrawal передаются только несколько значений объекта, вам следует подумать о рефакторинге интерфейса метода, чтобы он принимал объект WithdrawalTransaction, а не его отдельные поля
#tips #preparation_code
Код с подготовкой к вызову метода должен вызывать у вас подозрение. Натолкнувшись на код, подготавливающий программу к вызову метода или восстанавливающий ее боеспособность после вызова, спросите себя, формирует ли интерфейс метода адекватную абстракцию.
Так, если у вас обычно есть объект WithdrawalTransaction, но в метод ProcessWithdrawal передаются только несколько значений объекта, вам следует подумать о рефакторинге интерфейса метода, чтобы он принимал объект WithdrawalTransaction, а не его отдельные поля
#tips #preparation_code
Перестаньте использовать i++ в циклах.
Часто при написании циклов мы не задумываемся и пишем i++ для инкремента переменной-счетчика, однако если вы читали код программистов старой закалки, то, вероятно, замечали, что вместо i++ они используют ++i.
Объяснение такой практике простое. Если нам не нужно использовать текущее значение переменной перед инкрементом, то операция преинкремента выполниться быстрее, т.к. не предусматривает хранения предыдущего значения.
Читать статью
#programming #increment
Часто при написании циклов мы не задумываемся и пишем i++ для инкремента переменной-счетчика, однако если вы читали код программистов старой закалки, то, вероятно, замечали, что вместо i++ они используют ++i.
Объяснение такой практике простое. Если нам не нужно использовать текущее значение переменной перед инкрементом, то операция преинкремента выполниться быстрее, т.к. не предусматривает хранения предыдущего значения.
Читать статью
#programming #increment
Бабушкины сказки
Вы когда-нибудь пробовали описать цикл так, как показано на примере справа? Вы скажете, что это безумие, однако вот какой интересный факт хранит в себе этот фрагмент кода.
Казалось бы, меньше строк кода - быстрее и эффективнее он работает, однако тесты на Java и Microsoft Visual Basic показали, что второй фрагмент минимум на 60% быстрее первого.
#tips #cycles
Вы когда-нибудь пробовали описать цикл так, как показано на примере справа? Вы скажете, что это безумие, однако вот какой интересный факт хранит в себе этот фрагмент кода.
Казалось бы, меньше строк кода - быстрее и эффективнее он работает, однако тесты на Java и Microsoft Visual Basic показали, что второй фрагмент минимум на 60% быстрее первого.
#tips #cycles
8 программ, написание которых улучшит ваш навык программирования.
Эта статья является продолжением предыдущей. В ней представлен список интересных и очень разнообразных проектов, реализация которых позволит вам стать более опытными в вопросах современных методов программирования и разработки, при этом вы коснётесь популярных API и разберетесь в таком важном протоколе, как HTTP.
Для тех, кто хочет писать код и ищет вдохновение статья будет крайне полезна.
Читать статью | Предыдущая
#programming #improvement
Эта статья является продолжением предыдущей. В ней представлен список интересных и очень разнообразных проектов, реализация которых позволит вам стать более опытными в вопросах современных методов программирования и разработки, при этом вы коснётесь популярных API и разберетесь в таком важном протоколе, как HTTP.
Для тех, кто хочет писать код и ищет вдохновение статья будет крайне полезна.
Читать статью | Предыдущая
#programming #improvement
Время связывания
Одним из аспектов инициализации, серьезно влияющим на удобство сопровождения и изменения программы, является «время связывания» — момент, когда переменная и ее значение связываются вместе.
В целом чем позже вы выполняете связывание, тем более гибким будет ваш код.
Значение 0xFF связывается с переменной titleBar.color во время написания кода. Как правило, это
неудачное решение, потому что при изменении одного значения 0xFF может утратиться его соответствие в других фрагментах.
При связывании во время компиляции изменения будут автоматически отражены во всех местах, где переменная используется. Этот подход почти всегда лучше, чем жесткое кодирование.
Связывание во время выполнения является самым гибким решением, ведь достаточно изменить содержание ресурса, из которого ReadTitleBarColor() читает название цвета.
#tips #binding
Одним из аспектов инициализации, серьезно влияющим на удобство сопровождения и изменения программы, является «время связывания» — момент, когда переменная и ее значение связываются вместе.
В целом чем позже вы выполняете связывание, тем более гибким будет ваш код.
Значение 0xFF связывается с переменной titleBar.color во время написания кода. Как правило, это
неудачное решение, потому что при изменении одного значения 0xFF может утратиться его соответствие в других фрагментах.
При связывании во время компиляции изменения будут автоматически отражены во всех местах, где переменная используется. Этот подход почти всегда лучше, чем жесткое кодирование.
Связывание во время выполнения является самым гибким решением, ведь достаточно изменить содержание ресурса, из которого ReadTitleBarColor() читает название цвета.
#tips #binding
Почему простой код лучше многократно используемого
Разработчики, особенно молодые из них, тратят слишком много времени, пытаясь думать о будущем и о том, как будет развиваться их код. Вместо этого им просто следует сохранять его простым и поддерживаемым.
Основополагающее правило DRY, на самом деле, может создать ряд проблем и привести к нежелательным последствиям. Нет ничего плохого, если ваш код повторяется. Если устранение повторений сделает ваш код менее понятным, воздержитесь от этого. Не усложняйте, двигайтесь в сторону простоты!
Читать статью
#programming #principles
Разработчики, особенно молодые из них, тратят слишком много времени, пытаясь думать о будущем и о том, как будет развиваться их код. Вместо этого им просто следует сохранять его простым и поддерживаемым.
Основополагающее правило DRY, на самом деле, может создать ряд проблем и привести к нежелательным последствиям. Нет ничего плохого, если ваш код повторяется. Если устранение повторений сделает ваш код менее понятным, воздержитесь от этого. Не усложняйте, двигайтесь в сторону простоты!
Читать статью
#programming #principles
8 причин, по которым мы отказались от разработки гибридных приложений.
Действительно ли так хороша кроссплатформенная разработка, стоит ли вообще прибегать к разработке гибридных приложений? Безусловно, ряд проектов имеет смысл разрабатывать таким подходом, но если дело доходит до ПО широкого масштаба, здесь уже не обойтись без нативной разработки.
Статья расскажет вам, какие опасности подстерегают разработчиков гибридных приложений.
Читать статью
#programming #hybrid_development
Действительно ли так хороша кроссплатформенная разработка, стоит ли вообще прибегать к разработке гибридных приложений? Безусловно, ряд проектов имеет смысл разрабатывать таким подходом, но если дело доходит до ПО широкого масштаба, здесь уже не обойтись без нативной разработки.
Статья расскажет вам, какие опасности подстерегают разработчиков гибридных приложений.
Читать статью
#programming #hybrid_development
Объединение циклов
Если два цикла работают с одним набором элементов, можно выполнить их объединение (jamming). Выгода здесь объясняется устранением затрат, связанных с выполнением дополнительного цикла.
Объединение циклов обычно требует, чтобы условия циклов были одинаковы. В нашем примере оба цикла выполняются от 0 до employeeCount - 1, поэтому мы можем их объединить.
Для случая employeeCount = 100 экономия времени составляет 28%(C++), 32%(PHP), 4%(Visual Basic). Объединить циклы иногда трудно. Будьте внимательны: прежде чем объединять циклы, убедитесь, что это не нарушит работу остальных частей кода.
#tips #cycles
Если два цикла работают с одним набором элементов, можно выполнить их объединение (jamming). Выгода здесь объясняется устранением затрат, связанных с выполнением дополнительного цикла.
Объединение циклов обычно требует, чтобы условия циклов были одинаковы. В нашем примере оба цикла выполняются от 0 до employeeCount - 1, поэтому мы можем их объединить.
Для случая employeeCount = 100 экономия времени составляет 28%(C++), 32%(PHP), 4%(Visual Basic). Объединить циклы иногда трудно. Будьте внимательны: прежде чем объединять циклы, убедитесь, что это не нарушит работу остальных частей кода.
#tips #cycles
С чего начинать разработку нового приложения?
Подготовили очень полезный материал, в котором перечислены обязательные компоненты приложения, внедрение и реализацию которых необходимо продумывать заранее. При этом даются дельные советы и случаи из реальной практики, которые происходили во время разработки.
Читать статью
#programming #applications
Подготовили очень полезный материал, в котором перечислены обязательные компоненты приложения, внедрение и реализацию которых необходимо продумывать заранее. При этом даются дельные советы и случаи из реальной практики, которые происходили во время разработки.
Читать статью
#programming #applications
Логические переменные
Логические или булевы переменные сложно использовать неправильно, но их вдумчивое применение сделает вашу программу аккуратней.
Создание логических переменных упрощает сложные условия и облегчает модифицирование в дальнейшем, ведь зачастую сложно составить правильное логическое условие с первой попытки.
Иногда проверку логического условия удобнее поместить в какой-либо метод или функцию, тогда мы уменьшим избыточность кода и повысим его читабельность. В таком случае название метода должно четко и ясно характеризовать проверку.
#tips #logic
Логические или булевы переменные сложно использовать неправильно, но их вдумчивое применение сделает вашу программу аккуратней.
Создание логических переменных упрощает сложные условия и облегчает модифицирование в дальнейшем, ведь зачастую сложно составить правильное логическое условие с первой попытки.
Иногда проверку логического условия удобнее поместить в какой-либо метод или функцию, тогда мы уменьшим избыточность кода и повысим его читабельность. В таком случае название метода должно четко и ясно характеризовать проверку.
#tips #logic
Что значит чистый код.
С помощью хорошего кода мы можем рассказывать историю наподобие того, как писатель отражает судьбу своих героев. Чистый и экспрессивный код способен воодушевлять и дарить радость.
В статье собран набор основных правил и советов, следование которым сделает ваш код более аккуратным и читабельным, что является его важной характеристикой, особенно при сопровождении.
Читать статью
#programming #cleancode
С помощью хорошего кода мы можем рассказывать историю наподобие того, как писатель отражает судьбу своих героев. Чистый и экспрессивный код способен воодушевлять и дарить радость.
В статье собран набор основных правил и советов, следование которым сделает ваш код более аккуратным и читабельным, что является его важной характеристикой, особенно при сопровождении.
Читать статью
#programming #cleancode
Сложности использования оператора break
Согласно статье в «Software Engineering Notes» программная ошибка, которая 15 января 1990 года на 9 часов вывела из строя телефонную сеть Нью-Йорка, возникла из-за лишнего оператора break.
Цикл, содержащий большое количество операторов break, может сигнализировать о нечетком представлении структуры цикла или его роли в окружающем коде.
Допустим, Java поддерживает помеченные операторы break, что позволяет предотвратить проблемы, приведшие к выходу из строя телефонов в Нью-Йорке. break с меткой можно использовать для выхода из цикла for, условия if или любого блока кода, заключенного в скобки, и при этом сделать этот переход однозначным и безопасным.
#tips #break
Согласно статье в «Software Engineering Notes» программная ошибка, которая 15 января 1990 года на 9 часов вывела из строя телефонную сеть Нью-Йорка, возникла из-за лишнего оператора break.
Цикл, содержащий большое количество операторов break, может сигнализировать о нечетком представлении структуры цикла или его роли в окружающем коде.
Допустим, Java поддерживает помеченные операторы break, что позволяет предотвратить проблемы, приведшие к выходу из строя телефонов в Нью-Йорке. break с меткой можно использовать для выхода из цикла for, условия if или любого блока кода, заключенного в скобки, и при этом сделать этот переход однозначным и безопасным.
#tips #break