Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 15.09.2018
Сообщений: 8

Не стыдно ли показать что-то такое потенциальному работодателю, чтобы претендовать на должность стажера/джуниора?

15.09.2018, 22:57. Показов 4066. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
https://github.com/bikunororu/My-Way

Не прошу вникать и пр., так как ценю ваше время. Какие есть общие рекомендации для развития?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2018, 22:57
Ответы с готовыми решениями:

Что написать такого, чтобы можно было отправлять потенциальному работодателю?
Работодатель просит показать ему код, которым я горжусь :) Как по мне, так звучит бредово. Если я не пишу какой-то свой особый проект, на...

Нужно оптимизировать готовый код, чтобы не было стыдно показать
Мне дали сделать задачку, чтобы проверить мои знания в ООП (я только 2 месяца назад начал изучать С++). И так, задача: Я написал...

Можно ли претендовать на должность Java программиста, если знать только яву под Android?
Всем привет. Хочу поинтересоваться вашим мнением по поводу android программирования. Я с ним уже знаком, и хочу дальше углублять свои...

42
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
16.09.2018, 00:22
Утечка памяти:
C++
1
2
3
4
5
6
7
8
9
void Enemy::move()
{
    coordinate* hero = new coordinate(getHeroPos());
    
    if (calcRange(pos_x, hero->pos_x, pos_y, hero->pos_y) > calcRange(pos_x + 1, hero->pos_x, pos_y, hero->pos_y) && vision[centerY][centerX + 1] == EMPTY)
    {
        pos_x++;
        return;
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
coordinate Enemy::getHeroPos()
{
    coordinate* coord = new coordinate;
    for (int y = 0; y < visionRange; y++)
        for (int x = 0; x < visionRange*2; x++)
            if (vision[y][x] == HERO)
            {
                coord->pos_x = pos_x - (centerX - x);
                coord->pos_y = pos_y - (centerY - y);
 
                return *coord;
            }
 
    coord->pos_x = pos_x; 
    coord->pos_y = pos_y;
    return *coord;
}
Переменные не инкапсулированы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Weapon
{
public:
 
    cellvar weapon_type;
    
    Weapon() : weaponPos(centerCellX, centerCellY - 1), hidden(false)
    {
        weapon_type = WEAPON_EMPTY;
    }
 
    void outOf(wiev_pos);
 
    coordinate weaponPos;
 
    int damage();
 
    bool hidden;     //hidden or not
};
1
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
16.09.2018, 00:35
bikunororu, по-моему, они вообще не смотрят гитхаб.
Обычно смотрят, есть ли он вообще, есть ли там проекты.
А код в них спецам смотреть некогда, а hr там ничего не поймут.

Добавлено через 2 минуты
Ещё не принято писать список TODO в репозиторий с кодом.
Я бы закинул это куда-то в Trello или прямо на Github в issue.

Добавлено через 6 минут
Я бы не стал писать такие аргументы у функций.
C++
1
void getVision(int, int, cellvar (&vision)[visionRange][visionRange*2]);
0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
16.09.2018, 00:35
C++
1
2
3
4
5
int Weapon::damage()
{
    if (weapon_type == WEAPON_EMPTY)
        return 1;
}
int Weapon::damage() const

C++
1
coordinate(int = 0, int = 0);
explicit coordinate(int = 0, int = 0);
C++
1
while (1)
while (true)
C++
1
Map* cell = new Map(globalMap.loadCell());
auto cell = std::make_shared<Map>(globalMap.loadCell());
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
16.09.2018, 00:46
Почему у тебя по-разному стилю именованы KEY и globalMap?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class GlobalMap
{
public:
 
    GlobalMap();
    Map loadCell();
    void fixChanges(Map*);
 
    coordinate KEY;
 
private:
    std::map<coordinate, Map> globalMap;
};
Добавлено через 3 минуты
notAll, auto не особо рекомендуется. У меня на работе оно почти запрещено к использованию, и это не просто так.
auto норм лишь для лямб и очень некрасивых итераторов, имхо.

Добавлено через 1 минуту
И да, можно вообще написать int Weapon::damage() const noexcept

Добавлено через 4 минуты
C++
1
2
3
4
5
6
#define centerY (visionRange/2)
#define centerX visionRange
#define centerCellX cellSize/2
#define centerCellY cellSize/4
#define WindowSizeX visionRange*2
#define WindowSizeY visionRange
Замени всё это на
C++
1
constexpr
константы.

И это тоже:
C++
1
2
3
4
5
const int visionRange = 14; //range drawing (x = 2*y for symbol leinght)
const int cellSize = 50;    //cell size (x = 2*y for symbol leinght)
const int enemyCount = 5;   //how much enemies
const int simpEnemyHP = 2;
const int heroHP = 10;
Все макросы (то есть, #define) пиши капсом.
А вот в enum капс не нужен.

И вместо enum wiev_pos пиши enum class wiev_pos.
0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
16.09.2018, 00:47
Цитата Сообщение от New man Посмотреть сообщение
auto норм лишь для лямб и очень некрасивых итераторов
У кого не запрещено тот и пользуется, имхо.
C++
1
2
inline int getPos_x() { return pos_x; }
inline int getPos_y() { return pos_y; }
int getPos_x() const { return pos_x; }
int getPos_y() const { return pos_y; }

C++
1
2
void setPos_x(int x) { pos_x = x; }
    void setPos_y(int y) const { pos_y = y; }
void setPos_x(int x) const { pos_x = x; }
void setPos_y(int y) const { pos_y = y; }

Короче, везде пропущен const для методов
C++
1
int HP;
private:
int HP;


Переменные надо инкапсулировать.
0
14 / 11 / 3
Регистрация: 12.09.2018
Сообщений: 61
16.09.2018, 00:48
Цитата Сообщение от bikunororu Посмотреть сообщение
Какие есть общие рекомендации для развития?
Уметь писать код, решающий задачи, которые ставит тот, кто вам их ставит .
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
16.09.2018, 00:51
Map.cpp:
C++
1
2
 it = enemy_list.begin()+i;
setObject(it->getPos_x(), it->getPos_y(), ENEMY);
Замени на
C++
1
setObject(enemy_list[i].getPos_x(), enemy_list[i].getPos_y(), cellvar::ENEMY);
Добавлено через 1 минуту
Цитата Сообщение от notAll Посмотреть сообщение
C++
1
2
void setPos_x(int x) const { pos_x = x; }
void setPos_y(int y) const { pos_y = y; }
Ты, мягко говоря, не прав. Этот метод же меняет состояние объекта, как его const сделать?
0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
16.09.2018, 00:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class ConsoleDraw
{
public:
 
    enum class contextMenu
    {
        NEWGAME = 0
    };
 
    static void drawMainMenu(bool = true, bool = false);
 
    static void drawGame(cellvar(&vision)[visionRange][visionRange * 2], int HP, int Dmg);                          //draws game process
    static void drawContextMenu(contextMenu op);
 
private:
 
    ConsoleDraw();
 
    static std::string getText(contextMenu);        //for context menu: gets needed string from CONTEXTMENU.txt
    static void drawLogo();
    static void drawMenu(bool);
};
Можно заменить на namespace. private функции поместить в .cpp в безимянный namespace

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от New man Посмотреть сообщение
Ты, мягко говоря, не прав. Этот метод же меняет состояние объекта, как его const сделать?
Упс, не заметил.

0
14 / 11 / 3
Регистрация: 12.09.2018
Сообщений: 61
16.09.2018, 00:56
Цитата Сообщение от notAll Посмотреть сообщение
Можно заменить на namespace. private функции поместить в .cpp в безимянный namespace
Какая разница как офомлен код? Пусть он хоть будет весь в 1 строчку, главное чтобы он делал то, что от него требуется.
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
16.09.2018, 00:58
Hero.cpp
C++
1
if ((button == 's' || button == 'S') && ((vision[centerY + 2][centerX] == EMPTY && !weapon.hidden) || vision[centerY + 1][centerX] == EMPTY))
Вынеси настройки клавиш в свой Resource.h в отдельный enum, а лучше вообще в файл настроек.

C++
1
2
3
4
5
6
7
8
9
10
11
enum class InputKey: char
{
   IK_MoveBack = 's',
   IK_MoveForward = 'w',
  // и т.п.
};
 
inline bool is_same_input(char in, InputKey checking) 
{
    return checking==in || std::tolower(in) == checking;
}
И в Hero.cpp:
C++
1
if (is_same_input(button,InputKey::IK_MoveBack) && ((vision[centerY + 2][centerX] == EMPTY && !weapon.hidden) || vision[centerY + 1][centerX] == EMPTY))
В итоге, если захочется изменить клавиши управления, придётся менять только в одном месте.
0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
16.09.2018, 01:03
C++
1
if ((button == 's' || button == 'S') && ((vision[centerY + 2][centerX] == EMPTY && !weapon.hidden) || vision[centerY + 1][centerX] == EMPTY))
Такие сложные условия надо бы разбивать на логические методы.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
bool Hero::outOf(coordinate& GLOB)
{
    if (pos_x <= 0)
    {                                                       
        weapon.outOf(LEFT);
 
        pos_x = cellSize-1;
        GLOB.pos_x--;
        return 1;
    }
return true;

Добавлено через 2 минуты
C++
1
class Hero : public unObject
У unObject нету виртуальных методов и виртуального деструктора, наверное он не предназначен для наследования.
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
16.09.2018, 01:14
Лучший ответ Сообщение было отмечено bikunororu как решение

Решение

Цитата Сообщение от bikunororu Посмотреть сообщение
Какие есть общие рекомендации для развития?
Почитай:
Стив Макконелл "Совершенный код"
http://isocpp.github.io/CppCor... Guidelines
http://cpp-reference.ru/patterns/catalog/
https://ru.wikipedia.org/wiki/... 0%B8%D0%B5)
0
14 / 11 / 3
Регистрация: 12.09.2018
Сообщений: 61
16.09.2018, 01:17
Цитата Сообщение от New man Посмотреть сообщение
http://cpp-reference.ru/patterns/catalog/
C++ это же уже устаревший язык, сейчас все пишут на питоне и джаваскрипте же?
1
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
16.09.2018, 01:21
martin23, а что ты тогда забыл в разделе C++?

Так-то у тех языков, которые ты привёл, совсем другая ниша.

Из возможных замен C++ виден только Rust, но ещё совсем непонятно, сможет ли он его заменить.

В серьёзном геймдеве, например, сейчас выбора нет: только C++.
0
14 / 11 / 3
Регистрация: 12.09.2018
Сообщений: 61
16.09.2018, 01:25
Цитата Сообщение от New man Посмотреть сообщение
геймдеве
Вот именно только в "геймдеве". Для драйверов пойдёт си, который быстро учится. Насчёт геймдева, зачем играть в игры? Но если это тебе важно, то лучше уж писать на питоно подобном языке.

Добавлено через 44 секунды
Цитата Сообщение от New man Посмотреть сообщение
а что ты тогда забыл в разделе C++?
пришёл в поисках новых анекдотов
1
16.09.2018, 01:32

Не по теме:

martin23, C для драйверов и нужен. А вот для сложных систем ему недостаёт возможностей абстрагирования.

Людям нравятся играть в игры. Почему бы не писать для них то, что им нравится?
Алсо, к "геймдеву" я отнёс и такие вещи, как CAD-системы, например. Ты же не станешь это на python писать?

Если сильно захочешь, пиши, даже подскажу, куда надо копать: фреймворк kivy.

P.S. Python классный, а JS — говно!

0
14 / 11 / 3
Регистрация: 12.09.2018
Сообщений: 61
16.09.2018, 01:40
Цитата Сообщение от New man Посмотреть сообщение
P.S. Python классный, а JS — говно!
Надо для C++ новый синтаксис сделать, чтобы был как питон. Тогда можно будет его использовать. Ну или отказаться от C++, сделав всякие удобные библиотеки для питона. Тогда останется два типа программистов - те, кто решает задачи на питоне и те, кто пишет библиотеки для питона на C++, если они требуются .
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.09.2018, 09:15
Цитата Сообщение от New man Посмотреть сообщение
по-моему, они вообще не смотрят гитхаб.
ещё как смотрят.
даже более того, проекты на хабе - мощный бонус.

Добавлено через 1 минуту
Цитата Сообщение от notAll Посмотреть сообщение
make_shared
почему не юник?

Добавлено через 34 секунды
Цитата Сообщение от New man Посмотреть сообщение
auto не особо рекомендуется
мы вам перезвоним.

Добавлено через 45 секунд
Цитата Сообщение от New man Посмотреть сообщение
И вместо enum wiev_pos пиши enum class wiev_pos.
аргументируйте.

Добавлено через 1 минуту
Цитата Сообщение от notAll Посмотреть сообщение
int getPos_x() const { return pos_x; }
C++
1
auto getPos_x() const noexcept { return pos_x; }
Добавлено через 1 минуту
Цитата Сообщение от notAll Посмотреть сообщение
void setPos_x(int x) const { pos_x = x; }
C++
1
void setPos_x(const int x) noexcept { pos_x = x; }
Добавлено через 1 минуту
Цитата Сообщение от martin23 Посмотреть сообщение
Надо для C++ новый синтаксис сделать, чтобы был как питон.
не нужно.
уже сегодня ничто не мешает писать на плюсах в змеинном стиле.
новый синтаксис для этого не нужен.

Добавлено через 1 минуту
Цитата Сообщение от New man Посмотреть сообщение
А вот для сложных систем ему недостаёт возможностей абстрагирования.
эпичный такой бред.

операционнки - недостаточно сложные системы?
и что у вас за проблема такая с абстрагированием в процедурном стиле?
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
16.09.2018, 13:31
Лучший ответ Сообщение было отмечено bikunororu как решение

Решение

Цитата Сообщение от New man Посмотреть сообщение
А код в них спецам смотреть некогда
Действительно, ведь спецы пилят фичи и фиксят баги, и больше ничего не делают по работе))

Цитата Сообщение от New man Посмотреть сообщение
Ещё не принято писать список TODO в репозиторий с кодом.
Кем не принято? Где можно посмотреть на них? Где они обитают?))

Цитата Сообщение от New man Посмотреть сообщение
У меня на работе оно почти запрещено к использованию, и это не просто так.
Конечно, ведь проще запретить, чем научить им пользоваться. Странно, что сам С++ разрешен))

Цитата Сообщение от martin23 Посмотреть сообщение
Пусть он хоть будет весь в 1 строчку, главное чтобы он делал то, что от него требуется
Мы вам перезвоним (нет).

Цитата Сообщение от martin23 Посмотреть сообщение
C++ это же уже устаревший язык, сейчас все пишут на питоне и джаваскрипте же?
Правильно, большинство должно страдать и делать рутинные задачи)

Цитата Сообщение от martin23 Посмотреть сообщение
Надо для C++ новый синтаксис сделать, чтобы был как питон.
Из нормального языка питон не сделаешь))

Добавлено через 6 минут
bikunororu, в джуниоры тебе рано еще. Хотя, конечно, джуниоры джуниорам рознь. В каждой компании по-своему.
Читай книги/статьи/блоги по С++, культуре разработки ПО, алгоритмам и структурам данных. Пиши код.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2018, 13:31
Помогаю со студенческими работами здесь

Задание на должность стажера Системного Администратора
Всем привет. Устраиваюсь на работу, на должность стажер Системного администратора. Так вот, что бы пройти один из этапов собеседования...

Есть две таблицы: Должность и Работники. Необходимо сделать так, чтобы выводило в поле Edit должность работника
Возможно ли это осуществить? Проблема в том, что на каждого работника выводит только одну должность - первую (официант). Если бы можно было...

Посоветуйте что должен содержать словарь, что бы его было не стыдно показывать
Разрабатываю на курсовой проект словарь &quot;АНГ-РУС&quot;, 'РУС-Анг' он работает через 2 текстовых файла посоветуйте какие еще функции кроме...

Куда двигаться дальше чтобы дотянуть до шарп джуниора?
Здарствуйте, Я начал изучать програмирование(C#) пару месяцов назад. Я изучил все(возможно и не все) основные и не основные конструкции...

Стыдно признаться, но я не понимаю, что происходит
почему элемент &lt;div id=&quot;holder&quot;&gt; имеет высоту 61.59 ? Мне необходимо что бы весь контент был в ДИВе, что бы у всех элементов был...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru