Re: Попинайте код
От: drol  
Дата: 12.04.15 20:33
Оценка: +1 -1 :))) :))
Здравствуйте, amid493, Вы писали:

A>Прошу не стесняясь попинайте код пожалуйста.


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

А тут:

* Тесты — нет
* Предусловия\инварианты\постусловия\контракты — нет
* Обработка ошибочных ситуаций — никакая
* Математика на плавающей точке — базовых вещей не знаете и не понимаете
* Архитектура — каменный век
* Дизайн кода — примитивный
* Документация — отсутствует
* Интернационализация\локализация — отсутствует
* UI\UX — у Xerox в 1973 году было гораздо лучше
Re: Попинайте код
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 10.04.15 21:27
Оценка: +4 -1
Здравствуйте, amid493, Вы писали:

A>Здравствуйте


A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.


Может им просто код твой нужен был?
Re[3]: Попинайте код
От: __kot2  
Дата: 16.04.15 13:32
Оценка: :))) :))
Здравствуйте, binnom, Вы писали:

B>Здравствуйте, __kot2, Вы писали:


__>>могу предложить метод экспресс-анализа качества кода.

__>>открываете каталог с кодом. и ищете по всем файлам слово helper. найдено — код в помойку
B>Зачетный вброс.
хелперов не существует. всё можно назвать хелпером. например string можно было назвать charhelper. а html parser это тоже типа html helper. а программист это компьютерхелпер. в принципе можно всё заменить на хелперы. хелперы хелперам помогают. но по уму, конечно же, у всего есть свое имя. словарный запас и мозг просто нужен для использования понятных терминов. слово программист меньше людям знакомо, чем слово компьютерщик.

__>>MyPointF — использование слов или префиксов-слов-паразитов My, Model, Helper, Util выдают недостаточный "словарный запас" программиста. То есть можно говорить только про начальный уровень.

B>MVC — нубы придумали и используют, а .Net framework — извольте на помоечку?
придирки, я так понимаю, к Model ?
вот у нас есть некая сущность. Например, не знаю, танк. Класс с названием танк это и есть наша модель танка. У нас может быть еще танкконтроллер и танквью. но создавать класс танкмодель глупо. сам танк и есть модель. что-то<модель> это масло масленное. да, в некоторых случаях непонятно как это кусок вообще назвать — модель чего она вообще являются. просто какая-то какаха кака-то ходит через базу. какахамодель. Да, те, кто так пишут — нубы.
Re: Попинайте код
От: dad  
Дата: 10.04.15 21:49
Оценка: +4
из трех случаев где я все-таки решился сделать тестовое задание (ибо заняться было особо не чем)
ни в одно место не устроился в итоге. работодатели не нравились — все какие-то мутные и/или с закидонами.
сделал для себя определенные выводы.
пс. а ваше задание вообще навороченное. писать много, а зачем — не понятно.
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re: Попинайте код
От: __kot2  
Дата: 15.04.15 19:07
Оценка: -4
Здравствуйте, amid493, Вы писали:
A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.
A>Прошу не стесняясь попинайте код пожалуйста.
могу предложить метод экспресс-анализа качества кода.
открываете каталог с кодом. и ищете по всем файлам слово helper. найдено — код в помойку

если придираться детально, то:

зекоммичено два мусорных файла — DataGraphic — копия.cs и drawhelper.

к этому:
if (dlg.ShowDialog() == DialogResult.OK)
{
    controller.Serialize(dlg.FileName);
}

я лично такие излишние скобки не люблю. если бы я хотел прикопаться на интервью, то спросил бы формат оператора if и что такое скобки.

увидев вот такой код я всегда борюсь с желанием распечатать его в черной рамочке с надписью DO IT LIKE A PRO, попросить у аффтара подпись и повесить на доску почета
public SplineCalculator(MyPointF[] points, int width, int height, float tension, float continuty, float bias)
        {
            if (points != null && points.Length > 2)
            {
        ...
            }
            else
            {
                if (points != null && points.Length < 2)
                {
                    throw new Exception("Points was not selected");
                }
            }
        }


internal MyPointF[] GetSpline(int discrete = 10) — вообще ничего не понял

private MyPointF CalcRAB(MyPointF p11, MyPointF p22, MyPointF p33, bool isRa) — типичный антипаттерн — передавать булевскую переменную для изменения поведения ф-ии, когда нам на самом деле нужно две ф-ии.

DrawerController — какое-то странное имя. Render, чтоли имелся в виду?

 internal void Draw(List<MyPointF> points, float tensionBarValue, float continuityBarValue, float biasBarValue)
        {
            try
            {
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

уберите все эти блоки try-catch, которые ничего не ловят. и не только отсюда.

какая-то странная реализация PointAction — три же action, почему класс один? что это еще за SetNewPoint ?
MyPointF — использование слов или префиксов-слов-паразитов My, Model, Helper, Util выдают недостаточный "словарный запас" программиста. То есть можно говорить только про начальный уровень. вообще MyPoint тоже какой-то странный. зачем он неконстантный-то, например?
Re: Попинайте код
От: andrey.t  
Дата: 10.04.15 18:47
Оценка: 2 (1) +2
Здравствуйте, amid493, Вы писали:

A>Прошу не стесняясь попинайте код пожалуйста.

A>https://github.com/dmitry-kolesov/TCBspline


Я, так, сбоку по стилю пройдусь.
— А тесты где? У вас же куча математики в сторонних классах. Ну уж можно пару тестов написать для вида. К тому же Вас попросили отделить логику от представления.
https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/DrawHelper.cs — зачем он тут?
https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Common/XmlHelper.cs:
            try
            { ... }
            catch (Exception ex)
            {
                // log ex;
                throw ex;
            }

Зачем? Нет, я знаю зачем это иногда бывает надо (было надо), но в данном то примере зачем такой try-catch?

https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Common/SplineCalculator.cs

        initPoints = points;
                this.points = points;

Вы уж как-нибудь в одном стиле пишите.

— Там же, в конструкторе
            if (points != null && points.Length > 2)
            {
....
            }
            else
            {
        throw new Exception(...);
            }

А если points == null? А если измерения отрицательные? А если еще что-то?
Вы либо валидируете по-нормальному и толковые исключения бросайте, либо не трогайте. К тому же Вы перед вызовом конструктора SplineCalculator уже эту проверку выше по стэку делаете (в DrawController)

https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Controller/DrawerController.cs
       internal DrawerController(int _pictureBoxWidth, int _pictureBoxHeight)
        {
            InitPictureBox(_pictureBoxWidth, _pictureBoxHeight);
        }

        internal void InitPictureBox(int _pictureBoxWidth, int _pictureBoxHeight)
        { ...

Определитесь со стилем. Вы в конструкторе инициализируете поля или в отдельном init-like методе. В других местах у Вас по-другому.

— Там же. Куча Brush'ей, Pen'ов и Graphics'ов без using'a гуляет.

https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Controller/MainController.cs
 class MainController
    {
        private List<MyPointF> points = new List<MyPointF>();
  internal MainController(PictureBox pbx)
        {
            toUndoActionsList = new List<PointAction>();
        ...

Будьте последовательны. Инициализируете одно в одном месте (например, в конструкторе), там же и другое инициализируйте.

https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Model/MyPointF.cs
Какой может быть Index у точки?
Вот вы создали свою точку, даже свою коллекцию точек создали, даже в контроллерах там где-то пытаетесь найти свою точку в коллекции. Наверное лучше было бы вместо кучи вспомогательных методов Equals() и GetHashCode() переопределить.

https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Model/PointsCollection.cs
— Я не понял смысл этого класса.
Re: Попинайте код
От: watcher  
Дата: 10.04.15 18:42
Оценка: 1 (1) +2
Здравствуйте, amid493, Вы писали:

A>Здравствуйте


A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.


можете их сами спросить, но ответ все равно будет лживый или некорректный

потому что
1. если это стартап и берут человека со стороны, то скорее всего качество кода либо еще не важно, либо уже не важно, а значит тестовое задание ничего не значит и набор идет по др критериям которым вы не соответствуете
2. если это развитой корпоративный проект, то есть деньги и примеры для того, чтобы натаскать любого человека с головой не ниже среднего, и значит вы не прошли по др критериям
3. если это суперпроект, где важно качество кода, то туда берут совсем не по тестовому заданию, а по другим профессиональным критериям и в массы объеву кидают просто наугад чтобы случайно поймать суперспеца без работы, и ам тоже найм идет не по тестовому заданию
4. если это ни одно из перечисленного (стартап в активной фазе роста, неразвитой корпоративный проект, суперпроект являющийся таковым лишь в головах авторов) и работодатели верят, что они могут таким образом отсеять правильных людей, то они некомпетентны

просто идите искать работу дальше
Re: Попинайте код
От: ApplicationException  
Дата: 10.04.15 22:14
Оценка: 1 (1) +2
if (points != null && points.Length > 2)
{
......
}
else
{
if (points.Length > 2)
{
MessageBox.Show("Please select points");
throw new Exception("Points was not selected");
}
}

1. Что будет если points == null ? на строчке if (points.Length > 2)

2. catch (Exception ex)
{
// log ex;
throw ex;
}
Теряете стек трейс. throw ex vs throw;

3.

Graphics g = Graphics.FromImage(graphBmp);
DrawPoints(points, g);
UpdateImage(graphBmp);
g.Dispose();


Если проиходит exception в DrawPoints(points, g); или UpdateImage(graphBmp); то g.Dispose(); не вызовется..

лучше так:

using ( Graphics g = Graphics.FromImage(graphBmp))
{
DrawPoints(points, g);
UpdateImage(graphBmp);
}
Re[4]: Попинайте код
От: drol  
Дата: 12.04.15 20:17
Оценка: -1 :))
Здравствуйте, eskimo82, Вы писали:

E>А зачем ?


Затем, чтобы можно было оценить ключевые навыки. И то что ТС по итогам не взяли — вполне закономерно. Бо уровень его решения очень слабый.

E>Что-бы устроится на завод надо выполнить тестовое задание — выточить детали и собрать из них "автомобиль".


Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.
Re[8]: Попинайте код
От: drol  
Дата: 12.04.15 20:54
Оценка: -2 :)
Здравствуйте, eskimo82, Вы писали:

E>Вы забыли для начала спросить по каким...


А зачем ?

E>Все проще — я не буду этого делать. Просто потому что _я_ _так_ _хочу_, а не вы.


Поздно пить "Боржом". Вы уже спалились, оценив задание как слишком сложное
Re[2]: Попинайте код
От: Handie  
Дата: 15.04.15 11:55
Оценка: +2 :)
D>* Тесты — нет
D>* Предусловия\инварианты\постусловия\контракты — нет
D>* Обработка ошибочных ситуаций — никакая
D>* Математика на плавающей точке — базовых вещей не знаете и не понимаете
D>* Архитектура — каменный век
D>* Дизайн кода — примитивный
D>* Документация — отсутствует
D>* Интернационализация\локализация — отсутствует
D>* UI\UX — у Xerox в 1973 году было гораздо лучше

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

Если мне нужна собачья будка — не надо мне расчетов прочности, гидрологических исследований почвы, экономического обоснования и т.д.
Re[2]: Попинайте код
От: кубик  
Дата: 11.04.15 06:53
Оценка: 1 (1) +1
К>Это запросто могла быть чья-то лаба или курсовая, а тебя просто использовали.

Сейчас посмотрел задание .. это вообще чей то диплом скорее. Такая большая работа не может быть тестовым заданием.
Re[5]: Попинайте код
От: nightcode  
Дата: 17.04.15 08:47
Оценка: 1 (1) +1
Здравствуйте, drol, Вы писали:

D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.

Я охреневаю. Вот реально заняться больше нечем на три дня, да ? Кроме как тестовое задание писать ? Это больше половины рабочей недели, вообще то
Re[2]: Попинайте код
От: TMU_1  
Дата: 15.04.15 11:39
Оценка: +2
D>* Документация — отсутствует
D>* Интернационализация\локализация — отсутствует



Может еще и хелп на 5 языках, включая китайский, надо написать?
Re[5]: Попинайте код
От: Sealcon190 Соломоновы острова  
Дата: 16.04.15 08:03
Оценка: +2
Здравствуйте, drol, Вы писали:

D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.


Отнимать у человека три дня свободного времени — это ли не свинство?
Если есть необходимость проверить ключевые навыки соискателя на практике, существует испытательный срок.
Re[8]: Попинайте код
От: __kot2  
Дата: 16.04.15 18:02
Оценка: :))
Здравствуйте, __kot2, Вы писали:
__>ну тогда просто если не лень, у кого уже есть установленный qt — гляньте, пожалста, сколько там Helper и Util?
разобрало меня любопытство. скачал qt 4 и 5.
че-то перехвалил я по-моему qt
хотя количество файлов зараженных хелперами упало с 854 до 268 при переходе на 5ую версию, то есть видно улучшение качество, но код всё равно какой-то так себе.

в 5ом так вообще есть класс Helper в helper.h helper.cpp
хорошо, что хотя бы в примерах

в некоторых местах такое вот творчество:

            QTextCursor helper = cursor;

            helper.setPosition(fragment.position());
            helper.setPosition(fragment.position() + fragment.length(),
                                QTextCursor::KeepAnchor);
            helper.setCharFormat(newImageFormat);


в 4ом есть замечательный drawhelper на 7400 строк
с такими вот замечательными таблицами

DrawHelper qDrawHelper[QImage::NImageFormats] =
{
    // Format_Invalid,
    { 0, 0, 0, 0, 0, 0 },
    // Format_Mono,
    {

DrawHelper qDrawHelperCallback[QImage::NImageFormats] =


ндаа, перехвалил я че-то qt. я еще давно с ним работал — с 3ей версией. мне тогда по сравнению с MFC показался очень даже вменяемый фреймфорк

скачал еще и исходники 3ей версии — там все гораздо чище. всего 30 файлов с упоминаниями хелперов. из них где-то с половина в текстах комментов про helper function, хотя сама ф-ия названа вменяемо типа
а где есть хелперы так просто по затупу какому-то наверное временному от переработки:

static void setStyleHelper(QWidget *w, QStyle *s)
{
    w->unsetPalette();
    w->setStyle(s);

    const QObjectList *children = w->children();
    if (! children)
    return;

    QPtrListIterator<QObject> childit(*children);
    QObject *child;
    while ((child = childit.current()) != 0) {
    ++childit;

    if (child->isWidgetType())
        setStyleHelper((QWidget *) child, s);
    }
}

не понимаю, чем бы их просто setStyle не устроило

или в string тоже как-то коряво
inline QString &QString::insert( uint index, const char *s )
{ return insertHelper( index, s ); }

inline QString &QString::insert( uint index, const QByteArray &s )
{
    int pos = s.find( 0 );
    return insertHelper( index, s, pos==-1 ? s.size() : pos );
}

QString &QString::insertHelper( uint index, const char *s, uint len )

я такие вещи обычно называю insert_impl тогда уж. причем тут хелпер какой-то, когда тут полноценная реализация вставки?
Отредактировано 16.04.2015 18:15 __kot2 . Предыдущая версия .
Re: Попинайте код
От: velkin Удмуртия https://kisa.biz
Дата: 11.04.15 09:00
Оценка: 4 (1)
Здравствуйте, amid493, Вы писали:

A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.


Зря, для решения реальных задач логично было взять opencascade. Выполнять сложные тестовые задания при поиске работы только терять время. Большинство людей сами не знают чего они хотят.
Re: Попинайте код
От: кубик  
Дата: 11.04.15 06:50
Оценка: +1
Это запросто могла быть чья-то лаба или курсовая, а тебя просто использовали.
Re[2]: Попинайте код
От: drol  
Дата: 12.04.15 16:52
Оценка: -1
Здравствуйте, vpchelko, Вы писали:

V>Слишком жирно для тестового задания.


Вполне нормальное задание. Когда в своё время в серьёзные конторы собеседовался такого же масштаба работы делал.
Re[4]: Попинайте код
От: drol  
Дата: 12.04.15 19:57
Оценка: :)
Здравствуйте, UA, Вы писали:

UA>Обычно таким образом набирают студентов.


Ну так я и говорю "в своё время"...

*Как молоды мы были когда-то...
Re[11]: Попинайте код
От: eskimo82  
Дата: 12.04.15 21:30
Оценка: +1
E>>Приведите пруф пожалуста.
D>То есть Вы отказываетесь от своих песен про автомобиль, и соглашаетесь со мной, что задание простое. Я Вас правильно понял ?

Я привёл простую аналогию.

Не вижу никаких причин и поводов отказываться от своих слов.

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

Вы уже спалились, оценив задание как слишком сложное

особбено меня интересует ссылка на мой пост с оценкой задания.

Я думаю, Вас это не затруднит ?


ЗЫ2: Да, кстати:

Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.

Ваша фраза ?
Для справки: 3 дня програмиста с докризисной з.п. в 130 стоят 19,5 тыр; с послекризисной стоят 37,5 тыр.
Отредактировано 12.04.2015 21:40 eskimo82 . Предыдущая версия . Еще …
Отредактировано 12.04.2015 21:39 eskimo82 . Предыдущая версия .
Отредактировано 12.04.2015 21:34 eskimo82 . Предыдущая версия .
Отредактировано 12.04.2015 21:33 eskimo82 . Предыдущая версия .
Re[2]: Попинайте код
От: Handie  
Дата: 15.04.15 10:27
Оценка: +1
D>* Тесты — нет
D>* Предусловия\инварианты\постусловия\контракты — нет
D>* Обработка ошибочных ситуаций — никакая
D>* Математика на плавающей точке — базовых вещей не знаете и не понимаете
D>* Архитектура — каменный век
D>* Дизайн кода — примитивный
D>* Документация — отсутствует
D>* Интернационализация\локализация — отсутствует
D>* UI\UX — у Xerox в 1973 году было гораздо лучше

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

Получается не ТЗ, а готовый продукт.

А самый прикол что в большинстве фирм применяется методология х..к, х..к и в продакшен.
Re[3]: Попинайте код
От: Handie  
Дата: 15.04.15 11:50
Оценка: :)
TMU>Может еще и хелп на 5 языках, включая китайский, надо написать?

Надо еще предложить схему монетизации с экономическим обоснованием. А что, в любом дипломе должна быть экономическая часть
Re[5]: Попинайте код
От: tofox2 Россия  
Дата: 15.04.15 12:22
Оценка: +1
Здравствуйте, drol, Вы писали:

D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.


три дня пахать бесплатно? чтобы просто кому-то понравиться? как по мне, адекватное задание — 3 часа, ну 6 максимум.
Re[2]: Попинайте код
От: binnom  
Дата: 16.04.15 09:25
Оценка: +1
Здравствуйте, __kot2, Вы писали:

__>могу предложить метод экспресс-анализа качества кода.

__>открываете каталог с кодом. и ищете по всем файлам слово helper. найдено — код в помойку
Зачетный вброс.

__>MyPointF — использование слов или префиксов-слов-паразитов My, Model, Helper, Util выдают недостаточный "словарный запас" программиста. То есть можно говорить только про начальный уровень.

MVC — нубы придумали и используют, а .Net framework — извольте на помоечку?
Re[5]: Попинайте код
От: __kot2  
Дата: 17.04.15 14:29
Оценка: :)
Здравствуйте, petr_t, Вы писали:
_>Здравствуйте, __kot2, Вы писали:
__>>хелперов не существует.
_>Дано: есть простой метод, который создает каталог, если такового не существует.
_>Задача: как назвать класс, куда этот метод нужно поместить?
если нет собственных идей, то посмотрите где подобное уже было расположено другими
тем более, что возможно ф-ия такая уже есть. по сути это же просто create_directory но без кидания исключения в случае если уже создана
в С++ подобные ф-ии находятся в модуле filesystem. в питоне — в модуле path. оба имени неплохи. создаете свой модуль path или filesystem и там пишите реализацию недостающих ф-ий. вам может еще понадобиться ф-ия для проверки существования каталога, проверки, а каталог ли это или, например, узнать размер этого самого каталога. нафига всё это по хелперам раскидывать-то?
тем более языки развиваются и скорее всего спустя несколько лет вы сможете заменить ваши самопальные реализации этих ф-ий на стандартные. вым не придется вычищать всякие хелпер-методы и хелпер-классы разбросанные по проекту
Отредактировано 17.04.2015 14:31 __kot2 . Предыдущая версия .
Re[7]: Попинайте код
От: __kot2  
Дата: 17.04.15 15:03
Оценка: :)
Здравствуйте, petr_t, Вы писали:
_>Здравствуйте, __kot2, Вы писали:
__>>в С++ подобные ф-ии находятся в модуле filesystem. в питоне — в модуле path. оба имени неплохи.
_>Я не про модуль спрашивал, а про класс.
1 модуль — 1 класс. в чем проблема? думаете как-то по другому, чтоли задумано?
в Питоне это просто ф-ии, которые как бы статические. в С++ у вас будет класс Filesystem или filesystem со статическими ф-иями.
Отредактировано 17.04.2015 15:05 __kot2 . Предыдущая версия .
Re[5]: Попинайте код
От: BulatZiganshin  
Дата: 19.04.15 20:06
Оценка: :)
Здравствуйте, petr_t, Вы писали:

_>Дано: есть простой метод, который создает каталог, если такового не существует.

_>Задача: как назвать класс, куда этот метод нужно поместить?

filepath
Люди, я люблю вас! Будьте бдительны!!!
Re[6]: Попинайте код
От: neFormal Россия  
Дата: 19.04.15 21:03
Оценка: :)
Здравствуйте, tofox2, Вы писали:

T>три дня пахать бесплатно? чтобы просто кому-то понравиться? как по мне, адекватное задание — 3 часа, ну 6 максимум.


мм, а что за три часа ты успеешь написать?
...coding for chaos...
Re[5]: Попинайте код
От: Handie  
Дата: 20.04.15 15:27
Оценка: :)
_>Дано: есть простой метод, который создает каталог, если такового не существует.
_>Задача: как назвать класс, куда этот метод нужно поместить?

Типичное ООП головного мозга — создание каталога должно быть обязательно методом класса. C# навязывает ООП как никакой другой язык, в том же C++ можно иметь функуию в неймспейсе.
Попинайте код
От: amid493 СССР http://gesell-ru.blogspot.com/
Дата: 10.04.15 15:46
Оценка:
Здравствуйте

решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.

Прошу не стесняясь попинайте код пожалуйста.

https://github.com/dmitry-kolesov/TCBspline

Задание было следующим:

"1. Создать визуальный редактор сплайнов Кочанека-Бартельса
(tension/continuity/bias splines).

Функциональные требования:

* Работоспособность в MS Windows (7/8) или Linux.
* Визуализация сплайнов.
* Разделение кода графического интерфейса и логики приложения.
* Визуальное редактирование сплайнов:
— добавление управляющих точек,
— изменение значений tension/continuity/bias для управляющих точек,
— перемещение управляющих точек,
— удаление управляющих точек.

Бонусы:

* Сохранение и загрузка сплайнов,
* Функции undo/redo,
* Поддержка одновременного редактирования произвольного количества сплайнов.
"
Re: Попинайте код
От: Handie  
Дата: 10.04.15 15:56
Оценка:
Здравствуйте, amid493, Вы писали:

A>Здравствуйте


A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.

A>Прошу не стесняясь попинайте код пожалуйста.
A>https://github.com/dmitry-kolesov/TCBspline

Часть коммитов датируется двумя годами назад, Вы задание два года делали?
Re[2]: Попинайте код
От: amid493 СССР http://gesell-ru.blogspot.com/
Дата: 10.04.15 18:08
Оценка:
Здравствуйте, Handie, Вы писали:

H>Часть коммитов датируется двумя годами назад, Вы задание два года делали?


да это же задание было два года назад, сейчс кое что перерефакторил, сделал пару бонусов (undo/redo и сохранение)
ответ был тот же причем без пояснений к сожалению.
Re[2]: Попинайте код
От: watcher  
Дата: 10.04.15 18:47
Оценка:
Здравствуйте, watcher, Вы писали:

W>просто идите искать работу дальше


возможно я не совсем точно выразился
если кратко, то в 7-8 случаях из 10 качество кода либо не имеет принципиального значения либо есть ресурсы, чтобы натаскать любого
поэтому на эту тему париться не стоит
Re[3]: Попинайте код
От: watcher  
Дата: 10.04.15 18:49
Оценка:
Здравствуйте, watcher, Вы писали:

W>Здравствуйте, watcher, Вы писали:


W>>просто идите искать работу дальше


W>возможно я не совсем точно выразился

W>если кратко, то в 7-8 случаях из 10 качество кода либо не имеет принципиального значения либо есть ресурсы, чтобы натаскать любого
W>поэтому на эту тему париться не стоит

а в оставшихся 2-3 найм ведется совсем не по тестовым заданиям
и если даже объява в открытом доступе и задания раздаются, то это пустая формальность
Re[4]: Попинайте код
От: amid493 СССР http://gesell-ru.blogspot.com/
Дата: 11.04.15 02:31
Оценка:
Здравствуйте, watcher, Вы писали:

W>Здравствуйте, watcher, Вы писали:


W>>Здравствуйте, watcher, Вы писали:


W>>>просто идите искать работу дальше


W>>возможно я не совсем точно выразился

W>>если кратко, то в 7-8 случаях из 10 качество кода либо не имеет принципиального значения либо есть ресурсы, чтобы натаскать любого
W>>поэтому на эту тему париться не стоит

W>а в оставшихся 2-3 найм ведется совсем не по тестовым заданиям

W>и если даже объява в открытом доступе и задания раздаются, то это пустая формальность

Спасибо за поддержку, я особо не заморачиваюсь просто странно, что не дают обратной связи.
Re[2]: Попинайте код
От: amid493 СССР http://gesell-ru.blogspot.com/
Дата: 11.04.15 02:32
Оценка:
Здравствуйте, andrey.t, Вы писали:

AT>Здравствуйте, amid493, Вы писали:


A>>Прошу не стесняясь попинайте код пожалуйста.

A>>https://github.com/dmitry-kolesov/TCBspline


AT>Я, так, сбоку по стилю пройдусь.

AT>- А тесты где? У вас же куча математики в сторонних классах. Ну уж можно пару тестов написать для вида. К тому же Вас попросили отделить логику от представления.
AT>- https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/DrawHelper.cs — зачем он тут?
AT>- https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Common/XmlHelper.cs:
AT>
AT>            try
AT>            { ... }
AT>            catch (Exception ex)
AT>            {
AT>                // log ex;
AT>                throw ex;
AT>            }
AT>

AT> Зачем? Нет, я знаю зачем это иногда бывает надо (было надо), но в данном то примере зачем такой try-catch?

AT>- https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Common/SplineCalculator.cs


AT>
AT>        initPoints = points;
AT>                this.points = points;
AT>

AT>Вы уж как-нибудь в одном стиле пишите.

AT>- Там же, в конструкторе

AT>
AT>            if (points != null && points.Length > 2)
AT>            {
AT>....
AT>            }
AT>            else
AT>            {
AT>        throw new Exception(...);
AT>            }
AT>

AT>А если points == null? А если измерения отрицательные? А если еще что-то?
AT>Вы либо валидируете по-нормальному и толковые исключения бросайте, либо не трогайте. К тому же Вы перед вызовом конструктора SplineCalculator уже эту проверку выше по стэку делаете (в DrawController)

AT>- https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Controller/DrawerController.cs

AT>
AT>       internal DrawerController(int _pictureBoxWidth, int _pictureBoxHeight)
AT>        {
AT>            InitPictureBox(_pictureBoxWidth, _pictureBoxHeight);
AT>        }

AT>        internal void InitPictureBox(int _pictureBoxWidth, int _pictureBoxHeight)
AT>        { ...
AT>

AT>Определитесь со стилем. Вы в конструкторе инициализируете поля или в отдельном init-like методе. В других местах у Вас по-другому.

AT>- Там же. Куча Brush'ей, Pen'ов и Graphics'ов без using'a гуляет.


AT>- https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Controller/MainController.cs

AT>
AT> class MainController
AT>    {
AT>        private List<MyPointF> points = new List<MyPointF>();
AT>  internal MainController(PictureBox pbx)
AT>        {
AT>            toUndoActionsList = new List<PointAction>();
AT>        ...
AT>

AT>Будьте последовательны. Инициализируете одно в одном месте (например, в конструкторе), там же и другое инициализируйте.

AT>- https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Model/MyPointF.cs

AT>Какой может быть Index у точки?
AT>Вот вы создали свою точку, даже свою коллекцию точек создали, даже в контроллерах там где-то пытаетесь найти свою точку в коллекции. Наверное лучше было бы вместо кучи вспомогательных методов Equals() и GetHashCode() переопределить.

AT>https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Model/PointsCollection.cs

AT> — Я не понял смысл этого класса.


Спасибо за подробный ответ)
Re: Попинайте код
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 11.04.15 10:59
Оценка:
Здравствуйте, amid493, Вы писали:

A>* Работоспособность в MS Windows (7/8) или Linux.


Вот эта строчка смутила. Точно они код на .NET хотели?
Ты хоть выяснил чем они занимаются и какие у них потребности?
Re: Попинайте код
От: vpchelko  
Дата: 11.04.15 11:00
Оценка:
Здравствуйте, amid493, Вы писали:
  Скрытый текст
A>Здравствуйте

A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.


A>Прошу не стесняясь попинайте код пожалуйста.


A>https://github.com/dmitry-kolesov/TCBspline


A>Задание было следующим:


A>"1. Создать визуальный редактор сплайнов Кочанека-Бартельса

A>(tension/continuity/bias splines).

A>Функциональные требования:


A>* Работоспособность в MS Windows (7/8) или Linux.

A>* Визуализация сплайнов.
A>* Разделение кода графического интерфейса и логики приложения.
A>* Визуальное редактирование сплайнов:
A> — добавление управляющих точек,
A> — изменение значений tension/continuity/bias для управляющих точек,
A> — перемещение управляющих точек,
A> — удаление управляющих точек.

A>Бонусы:


A>* Сохранение и загрузка сплайнов,

A>* Функции undo/redo,
A>* Поддержка одновременного редактирования произвольного количества сплайнов.
A>"


Слишком жирно для тестового задания.

ИМХО, как писали выше, им был нужен твой код. Гнилая контора. Либо тебя кинули хитрые студенты.
Сало Украине, Героям Сала
Отредактировано 11.04.2015 11:02 vpchelko . Предыдущая версия .
Re[2]: Попинайте код
От: amid493 СССР http://gesell-ru.blogspot.com/
Дата: 12.04.15 01:54
Оценка:
Здравствуйте, vpchelko, Вы писали:

V>Здравствуйте, amid493, Вы писали:

V>
  Скрытый текст
A>>Здравствуйте

A>>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.


A>>Прошу не стесняясь попинайте код пожалуйста.


A>>https://github.com/dmitry-kolesov/TCBspline


A>>Задание было следующим:


A>>"1. Создать визуальный редактор сплайнов Кочанека-Бартельса

A>>(tension/continuity/bias splines).

A>>Функциональные требования:


A>>* Работоспособность в MS Windows (7/8) или Linux.

A>>* Визуализация сплайнов.
A>>* Разделение кода графического интерфейса и логики приложения.
A>>* Визуальное редактирование сплайнов:
A>> — добавление управляющих точек,
A>> — изменение значений tension/continuity/bias для управляющих точек,
A>> — перемещение управляющих точек,
A>> — удаление управляющих точек.

A>>Бонусы:


A>>* Сохранение и загрузка сплайнов,

A>>* Функции undo/redo,
A>>* Поддержка одновременного редактирования произвольного количества сплайнов.
A>>"


V>Слишком жирно для тестового задания.


V>ИМХО, как писали выше, им был нужен твой код. Гнилая контора. Либо тебя кинули хитрые студенты.
Re[3]: Попинайте код
От: UA Украина  
Дата: 12.04.15 17:42
Оценка:
D>Вполне нормальное задание. Когда в своё время в серьёзные конторы собеседовался такого же масштаба работы делал.

Обычно таким образом набирают студентов.
Re[3]: Попинайте код
От: eskimo82  
Дата: 12.04.15 18:04
Оценка:
D>Вполне нормальное задание. Когда в своё время в серьёзные конторы собеседовался такого же масштаба работы делал.
А зачем ?

Вот, допустим, был бы ты не програмистом, а слесарем.
Что-бы устроится на завод надо выполнить тестовое задание — выточить детали и собрать из них "автомобиль".
За свой счет разумеется.

Согласен на такое ?
Re[5]: Попинайте код
От: eskimo82  
Дата: 12.04.15 20:25
Оценка:
D>Затем, чтобы можно было оценить ключевые навыки. И то что ТС по итогам не взяли — вполне закономерно. Бо уровень его решения очень слабый.
Они оцениваются по длругим признакам.

D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.

— добавление управляющих точек,
— изменение значений tension/continuity/bias для управляющих точек,
— перемещение управляющих точек,
— удаление управляющих точек.

движок

* Работоспособность в MS Windows (7/8) или Linux.
* Визуализация сплайнов.
* Разделение кода графического интерфейса и логики приложения.
* Визуальное редактирование сплайнов:

корпус + органы управления

Бонусы:
* Сохранение и загрузка сплайнов,
* Функции undo/redo,
* Поддержка одновременного редактирования произвольного количества сплайнов.

для маньяков по-работать бесплатно.
Re[6]: Попинайте код
От: drol  
Дата: 12.04.15 20:40
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>Они оцениваются по длругим признакам.


Можно оценивать и по другим. И что из этого ? Чем эти "другие" лучше ?

E>движок

E>...
E>корпус + органы управления

Зачем Вы всё это тут накопипастили ??? Просто бы написали: "мне, eskimo82, за три дня это сделать слабо"...
Re[7]: Попинайте код
От: eskimo82  
Дата: 12.04.15 20:46
Оценка:
E>>Они оцениваются по длругим признакам.
D>Можно оценивать и по другим. И что из этого ? Чем эти "другие" лучше ?
Вы забыли для начала спросить по каким...

E>>движок

E>>...
E>>корпус + органы управления
D>Зачем Вы всё это тут накопипастили ???
Пруф приведите пожалуста того места откуда я это накопипастил.

D>Просто бы написали: "мне, eskimo82, за три дня это сделать слабо"...

Все проще — я не буду этого делать. Просто потому что _я_ _так_ _хочу_, а не вы.
Re[9]: Попинайте код
От: eskimo82  
Дата: 12.04.15 20:58
Оценка:
D>Поздно пить "Боржом". Вы уже спалились, оценив задание как слишком сложное
Приведите пруф пожалуста.
Re[10]: Попинайте код
От: drol  
Дата: 12.04.15 21:03
Оценка:
Здравствуйте, eskimo82, Вы писали:

D>>Поздно пить "Боржом". Вы уже спалились, оценив задание как слишком сложное

E>Приведите пруф пожалуста.

То есть Вы отказываетесь от своих песен про автомобиль, и соглашаетесь со мной, что задание простое. Я Вас правильно понял ?
Re[12]: Попинайте код
От: Qt-Coder  
Дата: 15.04.15 05:43
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>Для справки: 3 дня програмиста с докризисной з.п. в 130 стоят 19,5 тыр; с послекризисной стоят 37,5 тыр.

Круто. Я столько и за месяц не зарабатываю.
Re[12]: Попинайте код
От: TMU_1  
Дата: 15.04.15 11:36
Оценка:
E>ЗЫ2: Да, кстати:
E>

Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.

E>Ваша фраза ?
E>Для справки: 3 дня програмиста с докризисной з.п. в 130 стоят 19,5 тыр; с послекризисной стоят 37,5 тыр.



А послекризисная зарплата с какого периода будет начисляться и где ее можно получить? А то я прямо заинтересовался.
Re[4]: Попинайте код
От: binnom  
Дата: 16.04.15 15:22
Оценка:
Здравствуйте, __kot2, Вы писали:

__>>>могу предложить метод экспресс-анализа качества кода.

__>>>открываете каталог с кодом. и ищете по всем файлам слово helper. найдено — код в помойку
B>>Зачетный вброс.
__>хелперов не существует. всё можно назвать хелпером. например string можно было назвать charhelper. а html parser это тоже типа html helper. а программист это компьютерхелпер. в принципе можно всё заменить на хелперы. хелперы хелперам помогают. но по уму, конечно же, у всего есть свое имя. словарный запас и мозг просто нужен для использования понятных терминов. слово программист меньше людям знакомо, чем слово компьютерщик.
Отлично, расширьте наш кругозор и словарный запас Utility и Helper нашли, какие еще есть?

__>>>MyPointF — использование слов или префиксов-слов-паразитов My, Model, Helper, Util выдают недостаточный "словарный запас" программиста. То есть можно говорить только про начальный уровень.

B>>MVC — нубы придумали и используют, а .Net framework — извольте на помоечку?
__>придирки, я так понимаю, к Model ?
Да не только. Если посмотреть на .Net framework (в джаве думаю то же самое), то там будут сотни если не тысячи всяческих хелперов и утилзов. Это все видимо тоже не кошерно?

__>вот у нас есть некая сущность. Например, не знаю, танк. Класс с названием танк это и есть наша модель танка. У нас может быть еще танкконтроллер и танквью. но создавать класс танкмодель глупо. сам танк и есть модель. что-то<модель> это масло масленное. да, в некоторых случаях непонятно как это кусок вообще назвать — модель чего она вообще являются. просто какая-то какаха кака-то ходит через базу. какахамодель. Да, те, кто так пишут — нубы.

Вы пробовали делать проекты с UI с помощью какого-либо MVC framework?
Re[5]: Попинайте код
От: __kot2  
Дата: 16.04.15 15:37
Оценка:
Здравствуйте, binnom, Вы писали:
__>>хелперов не существует. всё можно назвать хелпером. например string можно было назвать charhelper. а html parser это тоже типа html helper. а программист это компьютерхелпер. в принципе можно всё заменить на хелперы. хелперы хелперам помогают. но по уму, конечно же, у всего есть свое имя. словарный запас и мозг просто нужен для использования понятных терминов. слово программист меньше людям знакомо, чем слово компьютерщик.
B>Отлично, расширьте наш кругозор и словарный запас Utility и Helper нашли, какие еще есть?
не понял вопроса

B>Да не только. Если посмотреть на .Net framework (в джаве думаю то же самое), то там будут сотни если не тысячи всяческих хелперов и утилзов. Это все видимо тоже не кошерно?

B>Вы пробовали делать проекты с UI с помощью какого-либо MVC framework?
да делал, один даже в микрософте пока работал.
у нас там половина классов называлась хелперами.
вы еще приведите MFC в качестве авторитетного примера дизайна
Qt вроде бы было неплохо сделано. давайте просто ради интереса сравним кол-во хелперов в Qt и какой-нить так .Net хрени. соотношение кол-ва хелперов на кол-во классов, как мне кажется, можно уже считать метрикой качества дизайна.
Отредактировано 16.04.2015 16:49 __kot2 . Предыдущая версия . Еще …
Отредактировано 16.04.2015 16:48 __kot2 . Предыдущая версия .
Re[6]: Попинайте код
От: binnom  
Дата: 16.04.15 16:25
Оценка:
Здравствуйте, __kot2, Вы писали:

B>>Отлично, расширьте наш кругозор и словарный запас Utility и Helper нашли, какие еще есть?

__>не понял вопроса
Если суффиксы Helper и Utility вам не нравятся, то каким, по вашему, образом называть подобные классы?

B>>Вы пробовали делать проекты с UI с помощью какого-либо MVC framework?

__>да делал, один даже в микрософте пока работал.
__>у нас там половина классов называлась хелперами.
__>вы еще привезите MFC в качестве авторитетного примера дизайна
У нас видимо разный бэкграунд, в ASP.Net MVC проектах обычно существует куча моделей (ага, с суффиксом Model), и это нормально.

__>Qt вроде бы было неплохо сделано. давайте просто ради интереса сравним кол-во хелперов в Qt и какой-нить так .Net хрени. соотношение кол-ва хелперов на кол-во классов, как мне кажется, можно уже считать метрикой качества дизайна.

Я думаю это в меру бессмысленно, т.к. сравнивать весь .Net FW и Qt — это как сравнивать слона и моську.
Re[7]: Попинайте код
От: __kot2  
Дата: 16.04.15 16:57
Оценка:
Здравствуйте, binnom, Вы писали:
B>Здравствуйте, __kot2, Вы писали:
B>>>Отлично, расширьте наш кругозор и словарный запас Utility и Helper нашли, какие еще есть?
__>>не понял вопроса
B>Если суффиксы Helper и Utility вам не нравятся, то каким, по вашему, образом называть подобные классы?
ну как, блин. название должно давать какую-то информацию о классе. каждый класс можно назвать 01helper — он же нам помогает только нолики и единички в памяти перекладывать. но мы это про каждй класс сказать можем. это может быть, не знаю, Person, Account, AccountAction, там какой-нить AccountValidator, а не Data, DataHelper и DataUtility, которые "обрабатывают все имеющиеся данные с помощью вспомогательных классов". какую это информацию нам дает? о чем это вообще?

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

B>>>Вы пробовали делать проекты с UI с помощью какого-либо MVC framework?

__>>да делал, один даже в микрософте пока работал.
__>>у нас там половина классов называлась хелперами.
__>>вы еще привезите MFC в качестве авторитетного примера дизайна
B>У нас видимо разный бэкграунд, в ASP.Net MVC проектах обычно существует куча моделей (ага, с суффиксом Model), и это нормально.
товарищ один в микрософте задизайнил такую вот хрень (за нее его кстати повысили до сеньера)
про жабоскрипт, но сути не меняет.
есть Model — прямо так и называется Model или DataModel
огрооомный такой класс, который в себя включал то, что должно быть в контроллере. Когда он уже перевалил за тыщ 10 строк он создал файл ModelHelper и стал туда какать. Модель могла абсолютно всё. вся логика там была. и пользовалась она классов utils, который в себе содержал самопально и забагованно написанные методы работы с датами, сериализацию в json и еще тыщ 10 строк — я просто лазил туда только за правкой конверсии дат и сериализации.

__>>Qt вроде бы было неплохо сделано. давайте просто ради интереса сравним кол-во хелперов в Qt и какой-нить так .Net хрени. соотношение кол-ва хелперов на кол-во классов, как мне кажется, можно уже считать метрикой качества дизайна.

B>Я думаю это в меру бессмысленно, т.к. сравнивать весь .Net FW и Qt — это как сравнивать слона и моську.
ну тогда просто если не лень, у кого уже есть установленный qt — гляньте, пожалста, сколько там Helper и Util?
Отредактировано 16.04.2015 16:59 __kot2 . Предыдущая версия .
Re[4]: Попинайте код
От: petr_t  
Дата: 17.04.15 09:20
Оценка:
Здравствуйте, __kot2, Вы писали:

__>хелперов не существует.


Дано: есть простой метод, который создает каталог, если такового не существует.
Задача: как назвать класс, куда этот метод нужно поместить?
Re[6]: Попинайте код
От: petr_t  
Дата: 17.04.15 14:54
Оценка:
Здравствуйте, __kot2, Вы писали:

__>в С++ подобные ф-ии находятся в модуле filesystem. в питоне — в модуле path. оба имени неплохи.


Я не про модуль спрашивал, а про класс.
Re[8]: Попинайте код
От: petr_t  
Дата: 20.04.15 03:24
Оценка:
Здравствуйте, __kot2, Вы писали:

__>1 модуль — 1 класс. в чем проблема? думаете как-то по другому, чтоли задумано?

__>в Питоне это просто ф-ии, которые как бы статические. в С++ у вас будет класс Filesystem или filesystem со статическими ф-иями.

filesystem занят. Что будешь делать?
Re[6]: Попинайте код
От: binnom  
Дата: 21.04.15 12:21
Оценка:
Здравствуйте, Handie, Вы писали:

H>Типичное ООП головного мозга — создание каталога должно быть обязательно методом класса. C# навязывает ООП как никакой другой язык, в том же C++ можно иметь функуию в неймспейсе.

Зато там утечек памяти не бывает. Ну, почти
Re[2]: Попинайте код
От: Grienders Земля  
Дата: 25.04.15 02:18
Оценка:
Здравствуйте, gandjustas, Вы писали:


G>Может им просто код твой нужен был?


Ты серьезно? Такое может быть? Я тоже так думаю иногда, когда мне присылают тестовые задания, которое больше похоже на небольшие проекты-шаровары. То есть, его после меня допилить и можно продавать.

Мне в одной компании сказали после собеседования: опыта мало для senior Ruby, почти сразу же, после минутного интервью. Я им: давайте я тестовое задание сделаю. Дали, говорят: делай на любом языке, срок — любой. Почему на любом, вам же Ruby программист нужен, спросил я у них через несколько дней, когда понял, что там что-то не то? Они — это да, но мы... готовы учить человека, если он знает азы.

И другие случаи такие бывали.
Re[7]: Попинайте код
От: tofox2 Россия  
Дата: 25.04.15 09:25
Оценка:
Здравствуйте, neFormal, Вы писали:

F>мм, а что за три часа ты успеешь написать?


достаточно для вынесения решения
Re[8]: Попинайте код
От: neFormal Россия  
Дата: 25.04.15 16:05
Оценка:
Здравствуйте, tofox2, Вы писали:

F>>мм, а что за три часа ты успеешь написать?

T>достаточно для вынесения решения

давай конкретнее.
что именно ты успеешь написать за это время?
для какой позиции это подойдёт? какие задачи тебе можно будет давать, например, на испытательный срок?
...coding for chaos...
Re: Попинайте код
От: Michael7 Россия  
Дата: 29.04.15 10:13
Оценка:
Здравствуйте, amid493, Вы писали:


A>Задание было следующим:


A>"1. Создать визуальный редактор сплайнов Кочанека-Бартельса

A>(tension/continuity/bias splines).

Настороженно отношусь к таким заданиям, по-моему, для решения принимать на работу или нет любой тест, который надо больше часа делать избыточен. Попахивает желанием заюзать нахаляву под видом тестовых работ. Несколько человек так пропустить и уже неплохо
Re[5]: Попинайте код
От: Michael7 Россия  
Дата: 29.04.15 10:24
Оценка:
Здравствуйте, drol, Вы писали:

D> Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.


Вот скажи, зачем нормальному работодателю заставлять кого-то три дня код писать? Что он за эти три дня такого выяснит, чего не смог бы узнать за час?
Re[7]: Попинайте код
От: Michael7 Россия  
Дата: 29.04.15 10:32
Оценка:
Здравствуйте, drol, Вы писали:

D>Зачем Вы всё это тут накопипастили ??? Просто бы написали: "мне, eskimo82, за три дня это сделать слабо"...


Это к вопросу об оценке сроков. Три дня чтобы продемонстрировать что-то работающее более-менее достаточно, а если реальный продукт по этому техзаданию, то три недели.
Re[5]: Попинайте код
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 04.05.15 20:37
Оценка:
Здравствуйте, drol, Вы писали:

D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.

Мне тут тоже недавно предложили выполнить тестовое задание, расчитаное на 2 часа. Я сказал этим предлагателям, что у меня есть дела по интереснее, чем пилить никому не нужное приложение.
Но там и задача была бы не на 2 часа, а часов на 5 как минимум.
github.com/dmitrigrigoriev/
Re[9]: Попинайте код
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 04.05.15 20:45
Оценка:
Здравствуйте, neFormal, Вы писали:

F>для какой позиции это подойдёт? какие задачи тебе можно будет давать, например, на испытательный срок?

У нас была задачка на 2 часа (реально было сделать за полтора).

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

При нажатии правой клавиши мышки выскакивало popup-меню с одним пунктом "Свойства". При выборе этого меню открывался модальный диалог, в котором можно было поменять радиус и толщину линии.
Так же переключение radio-кнопками скорость "низкая", "средняя", "высокая"

Бонусный пункт: использовать двойную буфферизацию.

Этого задания было более, чем достаточно понять: умеет ли человек вообще читать тех. задания, правильно их понимать, ставить корректные вопросы. Имеет ли понятия об объектно-ориентированном программировании, имеет ли общее представление как работать со всякими сообщениями и диалогами в винде.
github.com/dmitrigrigoriev/
Re[10]: Попинайте код
От: neFormal Россия  
Дата: 04.05.15 21:24
Оценка:
Здравствуйте, SkyKnight, Вы писали:

F>>для какой позиции это подойдёт? какие задачи тебе можно будет давать, например, на испытательный срок?

SK>У нас была задачка на 2 часа (реально было сделать за полтора).

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

когда поток кандидатов маленький, а кандидаты не блещут качеством, то приходится искать хотя бы мотивированных.
я смотрел код человека, который прямым текстом написал, что задание у него заняло больше 3х часов, поэтому он продолжать не будет и показывает, что есть.
боги, какая же хрень у него была написана!
сделай человек дополнительное усилие, и там было бы всё поприличней. лажу можно было бы подчистить или хотя бы поговорить о ней. пофиг, взяли бы, научили, объяснили бы почемутакплохо. но нет же!

по вашему ТЗ, впрочем, тоже нельзя сказать, какие задачи можно этому человеку ставить, но он хотя бы проходит первичный отбор.
в моём наборе ТЗ есть схожее.
нужно сделать стакан, где сверху падают кружки/шарики, которые между собой коллизятся. когда кружок перемещается в стакане меньше определённой дельты, то он удаляется. сверху постоянно падают новые.
...coding for chaos...
Re[11]: Попинайте код
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 04.05.15 21:31
Оценка:
Здравствуйте, neFormal, Вы писали:

F>по вашему ТЗ, впрочем, тоже нельзя сказать, какие задачи можно этому человеку ставить, но он хотя бы проходит первичный отбор.

Мне было важно понять умеет ли человек человек читать задания.
Там был как бы пункт:
создать приложение Document\View с использованием Визарда в Visual Studio ... и удалить все ненужные пункты в главном меню. Так вот 90% кандидатов этот пункт не выполнили, т.е. невнимательно прочитали задание.

Даже на очень простом задании можно минимально понять что человек из себя представляет. На вашем задании тоже можно понять, я думаю, многое. Хотя оно мне показалось сложнее моего
github.com/dmitrigrigoriev/
Re[12]: Попинайте код
От: neFormal Россия  
Дата: 04.05.15 21:42
Оценка:
Здравствуйте, SkyKnight, Вы писали:

SK>создать приложение Document\View с использованием Визарда в Visual Studio ... и удалить все ненужные пункты в главном меню. Так вот 90% кандидатов этот пункт не выполнили, т.е. невнимательно прочитали задание.


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

SK>Даже на очень простом задании можно минимально понять что человек из себя представляет. На вашем задании тоже можно понять, я думаю, многое. Хотя оно мне показалось сложнее моего


это один из вариантов заданий, но... оно же проще!
берём Box2D(геймдев же), лепим простой стакан с физичными стенками, делаем шарик, фабрику шариков и вуаля!
...coding for chaos...
Re[13]: Попинайте код
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 04.05.15 22:06
Оценка:
Здравствуйте, neFormal, Вы писали:

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

Были и такие, но скажем так проверки на ошибки я оценивал при "прочих равных".

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

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

F>это один из вариантов заданий, но... оно же проще!

F>берём Box2D(геймдев же), лепим простой стакан с физичными стенками, делаем шарик, фабрику шариков и вуаля!
Так как я никогда в геймдеве ничего не делал и практически не в курсе этого всего, то мне оно и показалось сложнее.
Я как-то давно лет так 10 назад чисто ради интереса поковырял OpenGL и DirectX, но дальше этого не пошло.
github.com/dmitrigrigoriev/
Re[3]: Попинайте код
От: alzt  
Дата: 14.05.15 06:19
Оценка:
Здравствуйте, watcher, Вы писали:

W>возможно я не совсем точно выразился

W>если кратко, то в 7-8 случаях из 10 качество кода либо не имеет принципиального значения либо есть ресурсы, чтобы натаскать любого

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