Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

C++0x (С++11). Лямбда-выражения

Время на прочтение13 мин
Количество просмотров303K
Буквально на днях случайно наткнулся на Хабре на статью о лямбда-выражениях из нового (будущего) стандарта C++. Статья хорошая и даёт понять преимущества лямбда-выражений, однако, мне показалось, что статья недостаточно полная, поэтому я решил попробовать более детально изложить материал.

Читать дальше
Всего голосов 75: ↑71 и ↓4+67
Комментарии83

Move semantics в C++11 и STL-контейнеры

Время на прочтение2 мин
Количество просмотров77K
Эта небольшая заметка о том, как с приходом нового стандарта C++11 изменились требования стандартных контейнеров к своим элементам. В C++98 от элемента контейнера требовалось, по сути, наличие «разумных» конструктора копирования и оператора присваивания. Если, например, объект вашего класса владеет каким-либо ресурсом, копирование обычно становится невозможным (по крайней мере, без «глубокого» копирования ресурса). В качестве примера давайте рассмотрим следующий класс-обертку вокруг FILE*, написанную на C++98:

class File
{
    FILE* handle;
public:
    File(const char* filename) {
        if ( !(handle = fopen(filename, "r")) )
            throw std::runtime_error("blah blah blah");
    }
    ~File() { if (handle) fclose(handle); }
    // ...
private:
    File(const File&); //запретить копирование
    void operator=(const File&); //запретить присваивание
};

Читать дальше →
Всего голосов 74: ↑69 и ↓5+64
Комментарии30

90 рекомендаций по стилю написания программ на C++

Время на прочтение20 мин
Количество просмотров408K
От переводчика. Искал в интернете простой и легко применимый гайдлайн по написанию программ на C++. Мне понравился один из вариантов, и я решил его перевести и опубликовать. Если хабрапользователи хорошо встретят этот топик, могу перевести и другие связанные документы, а также гайдлайны по написанию кода от других компаний.

1 Введение


Настоящий документ содержит рекомендации по написанию программ на языке C++.

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

Но для появления ещё одного списка рекомендаций, помимо указанных источников, есть несколько причин. Основная причина — их излишняя обобщённость, поскольку зачастую требуется задать частные правила (в особенности правила именования). Данный документ содержит комментарии, что делает его более удобным в использовании при проведении ревизий кода, чем другие уже существующие документы. К тому же, рекомендации по программированию обычно вперемешку содержат описания проблем стиля и технических проблем, что не совсем удобно. Этот документ не содержит каких-либо технических рекомендаций по C++, делая упор на вопросах стиля.
Читать дальше →
Всего голосов 181: ↑137 и ↓44+93
Комментарии213

Assert. Что это?

Время на прочтение8 мин
Количество просмотров431K
Assert — это специальная конструкция, позволяющая проверять предположения о значениях произвольных данных в произвольном месте программы. Эта конструкция может автоматически сигнализировать при обнаружении некорректных данных, что обычно приводит к аварийному завершению программы с указанием места обнаружения некорректных данных. Странная, на первый взгляд, конструкция — может завалить программу в самый неподходящий момент. Какой же в ней смысл?
Читать дальше →
Всего голосов 47: ↑36 и ↓11+25
Комментарии57

Говнокод или суперархитектура? Сначала говнокод, а потом эволюционный рефакторинг!

Время на прочтение3 мин
Количество просмотров74K
Ответ на статью.

Если вы не разрабатываете ПО для машин или систем автоматического поддержания жизни и тд — нижесказанное работает для вас при грамотном применении.

Сразу скажу — не моя идея, в статье «Проектирования больше нет?» сам Мартин Фаулер писал об эволюционном рефакторинге. А Боб Мартин даже целую книгу запилил с примером поэтапного развития приложения (и не одним), назвав «Быстрая разработка ПО» и продемонстрировав умение виртуозно материться на Java и C++.

Во-первых, говнокод на первом этапе обязателен. Причин куча. Раз — вы ничего не знаете о реальных условиях работы приложения, все ваши домыслы фигня. Пока реальный опыт не получен, пока не занесены первые живые данные реальным пользователем — у вас нет обратной связи. Если вы не согласны, почитайте Макконнелла, миф о стабильных требованиях, и получите левелап.
Читать дальше →
Всего голосов 202: ↑157 и ↓45+112
Комментарии170

Улучшаем качество кода с помощью автоматических утилит

Время на прочтение3 мин
Количество просмотров13K
Достаточно большое число людей используют github для хранения исходного кода своих проектов. Идеология fork/pull request позволяет достаточно легко выполнять обзоры кода (code review). Обзоры кода в значительной степени позволяют поднять качество кодирования в проекте. Однако, часто человек выполняющий обзор кода вынужден заниматься проверкой стандартов кодирования принятых в проекте, и прочих очевидных вещей не связанных непосредственно с задачей решенной в pull запросе. Такие ошибки кодирования могут и должны быть обнаружены автоматически.
Читать дальше →
Всего голосов 53: ↑49 и ↓4+45
Комментарии19

Объединяя C++ и Python. Тонкости Boost.Python. Часть первая

Время на прочтение10 мин
Количество просмотров147K
Boost.Python во всех отношениях замечательная библиотека, выполняющая своё предназначение на 5+, хотите ли вы сделать модуль на С++ для Python либо хотите построить скриптовую обвязку на Python для нативного приложения написанного на С++.
Самое сложное в Boost.Python — это обилие тонкостей, поскольку и C++ и Python — два языка изобилующие возможностями, и потому на стыке их приходится учитывать все нюансы: передать объект по ссылке или по значению, отдать в Python копию объекта или существующий класс, преобразовать во внутренний тип Python или в обёртку написанного на C++, как передать конструктор объекта, перегрузить операторы, навесить несуществующие в C++, но нужные в Python методы.
Не обещаю, что в своих примерах опишу все тонкости взаимодействия этих фундаментальных языков, но постараюсь сразу охватить как можно больше частоиспользуемых примеров, чтобы вы не лазили за каждой мелочью в документацию, а увидели все необходимые основы здесь, или хотя бы получили о них базовое представление.
Читать дальше →
Всего голосов 64: ↑64 и ↓0+64
Комментарии8

Простые советы начинающему фрилансеру

Время на прочтение3 мин
Количество просмотров21K
Перед тем как решить задачу поистине шекспировского масштаба — быть или не быть фрилансером, каждый из нас проходит семь кругов ада, замешанных на сомнениях, страхе и неуверенности в будущем. На этот счет всегда существует полярность мнений среди тех, кто готов отстаивать фриланс как форму бизнеса с богатыми возможностями — с одной стороны, и видеть в ней сомнительную затею — с другой. Сторонники фриланса справедливо полагают, что если ваш профессиональный опыт и образование охватывают несколько сфер деятельности, то, потенциально, вы можете иметь несколько источников дохода, а не складывать все яйца в корзину одного работодателя. Ведь фриланс позволяет распланировать жизнь по своему вкусу, а не красть у себя время, просиживая весь день в офисе.
Читать дальше →
Всего голосов 23: ↑3 и ↓20-17
Комментарии4

Как написать игру в стиле Tower Defense

Время на прочтение19 мин
Количество просмотров62K
Жанр Tower Defence один из самых популярных жанров игр на iOS. Причиной тому веселое времяпрепровождение, сдобренное постройкой башен для создания последней точки обороны против орд монстров, пытающихся эту самую оборону прорвать.
Представляю вашему вниманию перевод статьи, написанной Pablo Ruiz, и найденной мной на сайте raywenderlich.com.
В этом уроке будет показано, как создать игру Tower Defense с нуля, с помощью Cocos2D.
В процессе вы выучите следующее:
  • Как создавать волны врагов и настраивать время их появления.
  • Как заставить этих врагов двигаться по заданным точкам(waypoint'ам).
  • Как строить башни на специально отведенных местах на карте.
  • Как заставить башни стрелять во врагов.
  • Как визуально представить waypoint'ы и радиусы атак башен.

В конце урока, у вас будет свой фрэймворк для создания игр такого типа, который вы сможете расширять, добавляя новые типы врагов, башен и карт.
Для понимания этого урока, вам нужно базовое понимание Cocos2D. Если вы новичок, то можете взглянуть на более легкие уроки на сайте Рэя.
Читать дальше →
Всего голосов 78: ↑72 и ↓6+66
Комментарии24

«Мнемотехника» и «изучение иностранного языка» несовместимые понятия?! Давайте разберемся

Время на прочтение13 мин
Количество просмотров282K
Здравствуйте, Уважаемые Хабрапользователи!



На написание данной публикации меня сподвигло возмущение от прочитанной недавно статьи одного хабраюзера, утверждающего, что мнемотехника «очень хороший способ запоминания информации, совершенно не подходящий для изучения иностранных слов». Я с этим высказыванием в корне не согласен, а потому, хотелось бы доказать обратное.
Если вам интересно, как использовать мнемотехнику для запоминания иностранных слов, то добро пожаловать под кат.
Читать дальше →
Всего голосов 43: ↑36 и ↓7+29
Комментарии26

27+ ресурсов для онлайн-обучения

Время на прочтение5 мин
Количество просмотров969K

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

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

Читать дальше →
Всего голосов 174: ↑163 и ↓11+152
Комментарии68

Junior iOS developer. Путь становления

Время на прочтение5 мин
Количество просмотров44K
Всем привет.

Введение


Расскажу вам свою историю о том, как я стал работать iOS разработчиком на 2 курсе университета. Рассказ будет от и до, со всеми прелестями и подробностями. Надеюсь, кому-нибудь из начинающих пригодится. Все действия происходили в Москве.
Читать дальше →
Всего голосов 75: ↑48 и ↓27+21
Комментарии55

Информация

В рейтинге
Не участвует
Откуда
Edinburgh, Scotland South, Великобритания
Зарегистрирован
Активность