Здравствуйте, amid493, Вы писали:
A>Прошу не стесняясь попинайте код пожалуйста.
Решение очень слабое. Особенно для тестового задания, в котором Вы должны показывать всю широту своих навыков и знаний.
А тут:
* Тесты — нет
* Предусловия\инварианты\постусловия\контракты — нет
* Обработка ошибочных ситуаций — никакая
* Математика на плавающей точке — базовых вещей не знаете и не понимаете
* Архитектура — каменный век
* Дизайн кода — примитивный
* Документация — отсутствует
* Интернационализация\локализация — отсутствует
* UI\UX — у Xerox в 1973 году было гораздо лучше
Здравствуйте, amid493, Вы писали:
A>Здравствуйте
A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.
Здравствуйте, binnom, Вы писали:
B>Здравствуйте, __kot2, Вы писали:
__>>могу предложить метод экспресс-анализа качества кода. __>>открываете каталог с кодом. и ищете по всем файлам слово helper. найдено — код в помойку B>Зачетный вброс.
хелперов не существует. всё можно назвать хелпером. например string можно было назвать charhelper. а html parser это тоже типа html helper. а программист это компьютерхелпер. в принципе можно всё заменить на хелперы. хелперы хелперам помогают. но по уму, конечно же, у всего есть свое имя. словарный запас и мозг просто нужен для использования понятных терминов. слово программист меньше людям знакомо, чем слово компьютерщик.
__>>MyPointF — использование слов или префиксов-слов-паразитов My, Model, Helper, Util выдают недостаточный "словарный запас" программиста. То есть можно говорить только про начальный уровень. B>MVC — нубы придумали и используют, а .Net framework — извольте на помоечку?
придирки, я так понимаю, к Model ?
вот у нас есть некая сущность. Например, не знаю, танк. Класс с названием танк это и есть наша модель танка. У нас может быть еще танкконтроллер и танквью. но создавать класс танкмодель глупо. сам танк и есть модель. что-то<модель> это масло масленное. да, в некоторых случаях непонятно как это кусок вообще назвать — модель чего она вообще являются. просто какая-то какаха кака-то ходит через базу. какахамодель. Да, те, кто так пишут — нубы.
из трех случаев где я все-таки решился сделать тестовое задание (ибо заняться было особо не чем)
ни в одно место не устроился в итоге. работодатели не нравились — все какие-то мутные и/или с закидонами.
сделал для себя определенные выводы.
пс. а ваше задание вообще навороченное. писать много, а зачем — не понятно.
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Здравствуйте, 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, чтоли имелся в виду?
уберите все эти блоки try-catch, которые ничего не ловят. и не только отсюда.
какая-то странная реализация PointAction — три же action, почему класс один? что это еще за SetNewPoint ?
MyPointF — использование слов или префиксов-слов-паразитов My, Model, Helper, Util выдают недостаточный "словарный запас" программиста. То есть можно говорить только про начальный уровень. вообще MyPoint тоже какой-то странный. зачем он неконстантный-то, например?
if (points != null && points.Length > 2)
{
....
}
else
{
throw new Exception(...);
}
А если points == null? А если измерения отрицательные? А если еще что-то?
Вы либо валидируете по-нормальному и толковые исключения бросайте, либо не трогайте. К тому же Вы перед вызовом конструктора SplineCalculator уже эту проверку выше по стэку делаете (в DrawController)
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() переопределить.
Здравствуйте, amid493, Вы писали:
A>Здравствуйте
A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.
можете их сами спросить, но ответ все равно будет лживый или некорректный
потому что
1. если это стартап и берут человека со стороны, то скорее всего качество кода либо еще не важно, либо уже не важно, а значит тестовое задание ничего не значит и набор идет по др критериям которым вы не соответствуете
2. если это развитой корпоративный проект, то есть деньги и примеры для того, чтобы натаскать любого человека с головой не ниже среднего, и значит вы не прошли по др критериям
3. если это суперпроект, где важно качество кода, то туда берут совсем не по тестовому заданию, а по другим профессиональным критериям и в массы объеву кидают просто наугад чтобы случайно поймать суперспеца без работы, и ам тоже найм идет не по тестовому заданию
4. если это ни одно из перечисленного (стартап в активной фазе роста, неразвитой корпоративный проект, суперпроект являющийся таковым лишь в головах авторов) и работодатели верят, что они могут таким образом отсеять правильных людей, то они некомпетентны
Затем, чтобы можно было оценить ключевые навыки. И то что ТС по итогам не взяли — вполне закономерно. Бо уровень его решения очень слабый.
E>Что-бы устроится на завод надо выполнить тестовое задание — выточить детали и собрать из них "автомобиль".
Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.
D>* Тесты — нет D>* Предусловия\инварианты\постусловия\контракты — нет D>* Обработка ошибочных ситуаций — никакая D>* Математика на плавающей точке — базовых вещей не знаете и не понимаете D>* Архитектура — каменный век D>* Дизайн кода — примитивный D>* Документация — отсутствует D>* Интернационализация\локализация — отсутствует D>* UI\UX — у Xerox в 1973 году было гораздо лучше
Если когда увижу тестовое задание с крутой архитектурой, документацией, интернализацией и тестами, сразу отправлю кандидата в дальнее путешествие.
Самые опасные дураки — деятельные, которые домысливают задание и расширяют его по освоему разумению. Это люди, которые говорят "я думал, что ..."
Если мне нужна собачья будка — не надо мне расчетов прочности, гидрологических исследований почвы, экономического обоснования и т.д.
Здравствуйте, drol, Вы писали:
D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.
Я охреневаю. Вот реально заняться больше нечем на три дня, да ? Кроме как тестовое задание писать ? Это больше половины рабочей недели, вообще то
Здравствуйте, drol, Вы писали:
D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.
Отнимать у человека три дня свободного времени — это ли не свинство?
Если есть необходимость проверить ключевые навыки соискателя на практике, существует испытательный срок.
Здравствуйте, __kot2, Вы писали: __>ну тогда просто если не лень, у кого уже есть установленный qt — гляньте, пожалста, сколько там Helper и Util?
разобрало меня любопытство. скачал qt 4 и 5.
че-то перехвалил я по-моему qt
хотя количество файлов зараженных хелперами упало с 854 до 268 при переходе на 5ую версию, то есть видно улучшение качество, но код всё равно какой-то так себе.
в 5ом так вообще есть класс Helper в helper.h helper.cpp
хорошо, что хотя бы в примерах
ндаа, перехвалил я че-то qt. я еще давно с ним работал — с 3ей версией. мне тогда по сравнению с MFC показался очень даже вменяемый фреймфорк
скачал еще и исходники 3ей версии — там все гораздо чище. всего 30 файлов с упоминаниями хелперов. из них где-то с половина в текстах комментов про helper function, хотя сама ф-ия названа вменяемо типа
а где есть хелперы так просто по затупу какому-то наверное временному от переработки:
Здравствуйте, amid493, Вы писали:
A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так.
Зря, для решения реальных задач логично было взять opencascade. Выполнять сложные тестовые задания при поиске работы только терять время. Большинство людей сами не знают чего они хотят.
E>>Приведите пруф пожалуста. D>То есть Вы отказываетесь от своих песен про автомобиль, и соглашаетесь со мной, что задание простое. Я Вас правильно понял ?
Я привёл простую аналогию.
Не вижу никаких причин и поводов отказываться от своих слов.
С другой стороны, я невижу причин не закончить выяснение смысла фразы
Вы уже спалились, оценив задание как слишком сложное
особбено меня интересует ссылка на мой пост с оценкой задания.
Я думаю, Вас это не затруднит ?
ЗЫ2: Да, кстати:
Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.
Ваша фраза ?
Для справки: 3 дня програмиста с докризисной з.п. в 130 стоят 19,5 тыр; с послекризисной стоят 37,5 тыр.
D>* Тесты — нет D>* Предусловия\инварианты\постусловия\контракты — нет D>* Обработка ошибочных ситуаций — никакая D>* Математика на плавающей точке — базовых вещей не знаете и не понимаете D>* Архитектура — каменный век D>* Дизайн кода — примитивный D>* Документация — отсутствует D>* Интернационализация\локализация — отсутствует D>* UI\UX — у Xerox в 1973 году было гораздо лучше
Так надо чтобы кандидат месяц вечерами писал что-ли? Тестовое задание должно быть и идеальным, и показать умение писать простой код, и с другой стороны показать знания крутых паттернов, с третьей должно быть покрыто тестами, в четвертых должно показать эстетический вкус.
Получается не ТЗ, а готовый продукт.
А самый прикол что в большинстве фирм применяется методология х..к, х..к и в продакшен.
Здравствуйте, drol, Вы писали:
D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.
три дня пахать бесплатно? чтобы просто кому-то понравиться? как по мне, адекватное задание — 3 часа, ну 6 максимум.
Здравствуйте, __kot2, Вы писали:
__>могу предложить метод экспресс-анализа качества кода. __>открываете каталог с кодом. и ищете по всем файлам слово helper. найдено — код в помойку
Зачетный вброс.
__>MyPointF — использование слов или префиксов-слов-паразитов My, Model, Helper, Util выдают недостаточный "словарный запас" программиста. То есть можно говорить только про начальный уровень.
MVC — нубы придумали и используют, а .Net framework — извольте на помоечку?
Здравствуйте, petr_t, Вы писали: _>Здравствуйте, __kot2, Вы писали: __>>хелперов не существует. _>Дано: есть простой метод, который создает каталог, если такового не существует. _>Задача: как назвать класс, куда этот метод нужно поместить?
если нет собственных идей, то посмотрите где подобное уже было расположено другими
тем более, что возможно ф-ия такая уже есть. по сути это же просто create_directory но без кидания исключения в случае если уже создана
в С++ подобные ф-ии находятся в модуле filesystem. в питоне — в модуле path. оба имени неплохи. создаете свой модуль path или filesystem и там пишите реализацию недостающих ф-ий. вам может еще понадобиться ф-ия для проверки существования каталога, проверки, а каталог ли это или, например, узнать размер этого самого каталога. нафига всё это по хелперам раскидывать-то?
тем более языки развиваются и скорее всего спустя несколько лет вы сможете заменить ваши самопальные реализации этих ф-ий на стандартные. вым не придется вычищать всякие хелпер-методы и хелпер-классы разбросанные по проекту
Здравствуйте, petr_t, Вы писали: _>Здравствуйте, __kot2, Вы писали: __>>в С++ подобные ф-ии находятся в модуле filesystem. в питоне — в модуле path. оба имени неплохи. _>Я не про модуль спрашивал, а про класс.
1 модуль — 1 класс. в чем проблема? думаете как-то по другому, чтоли задумано?
в Питоне это просто ф-ии, которые как бы статические. в С++ у вас будет класс Filesystem или filesystem со статическими ф-иями.
Здравствуйте, petr_t, Вы писали:
_>Дано: есть простой метод, который создает каталог, если такового не существует. _>Задача: как назвать класс, куда этот метод нужно поместить?
_>Дано: есть простой метод, который создает каталог, если такового не существует. _>Задача: как назвать класс, куда этот метод нужно поместить?
Типичное ООП головного мозга — создание каталога должно быть обязательно методом класса. C# навязывает ООП как никакой другой язык, в том же C++ можно иметь функуию в неймспейсе.
Здравствуйте, amid493, Вы писали:
A>Здравствуйте
A>решал тестовое задание и получил ответ, что типа вы нам не подходите без объяснения что в коде не так. A>Прошу не стесняясь попинайте код пожалуйста. A>https://github.com/dmitry-kolesov/TCBspline
Часть коммитов датируется двумя годами назад, Вы задание два года делали?
Здравствуйте, Handie, Вы писали:
H>Часть коммитов датируется двумя годами назад, Вы задание два года делали?
да это же задание было два года назад, сейчс кое что перерефакторил, сделал пару бонусов (undo/redo и сохранение)
ответ был тот же причем без пояснений к сожалению.
Здравствуйте, watcher, Вы писали:
W>просто идите искать работу дальше
возможно я не совсем точно выразился
если кратко, то в 7-8 случаях из 10 качество кода либо не имеет принципиального значения либо есть ресурсы, чтобы натаскать любого
поэтому на эту тему париться не стоит
Здравствуйте, watcher, Вы писали:
W>Здравствуйте, watcher, Вы писали:
W>>просто идите искать работу дальше
W>возможно я не совсем точно выразился W>если кратко, то в 7-8 случаях из 10 качество кода либо не имеет принципиального значения либо есть ресурсы, чтобы натаскать любого W>поэтому на эту тему париться не стоит
а в оставшихся 2-3 найм ведется совсем не по тестовым заданиям
и если даже объява в открытом доступе и задания раздаются, то это пустая формальность
Здравствуйте, watcher, Вы писали:
W>Здравствуйте, watcher, Вы писали:
W>>Здравствуйте, watcher, Вы писали:
W>>>просто идите искать работу дальше
W>>возможно я не совсем точно выразился W>>если кратко, то в 7-8 случаях из 10 качество кода либо не имеет принципиального значения либо есть ресурсы, чтобы натаскать любого W>>поэтому на эту тему париться не стоит
W>а в оставшихся 2-3 найм ведется совсем не по тестовым заданиям W>и если даже объява в открытом доступе и задания раздаются, то это пустая формальность
Спасибо за поддержку, я особо не заморачиваюсь просто странно, что не дают обратной связи.
AT>А если points == null? А если измерения отрицательные? А если еще что-то? AT>Вы либо валидируете по-нормальному и толковые исключения бросайте, либо не трогайте. К тому же Вы перед вызовом конструктора SplineCalculator уже эту проверку выше по стэку делаете (в DrawController)
AT>- https://github.com/dmitry-kolesov/TCBspline/blob/master/TCBspline/Controller/DrawerController.cs AT>
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>"
Слишком жирно для тестового задания.
ИМХО, как писали выше, им был нужен твой код. Гнилая контора. Либо тебя кинули хитрые студенты.
Здравствуйте, 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>ИМХО, как писали выше, им был нужен твой код. Гнилая контора. Либо тебя кинули хитрые студенты.
D>Вполне нормальное задание. Когда в своё время в серьёзные конторы собеседовался такого же масштаба работы делал.
А зачем ?
Вот, допустим, был бы ты не програмистом, а слесарем.
Что-бы устроится на завод надо выполнить тестовое задание — выточить детали и собрать из них "автомобиль".
За свой счет разумеется.
D>Затем, чтобы можно было оценить ключевые навыки. И то что ТС по итогам не взяли — вполне закономерно. Бо уровень его решения очень слабый.
Они оцениваются по длругим признакам.
D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.
— добавление управляющих точек,
— изменение значений tension/continuity/bias для управляющих точек,
— перемещение управляющих точек,
— удаление управляющих точек.
движок
* Работоспособность в MS Windows (7/8) или Linux.
* Визуализация сплайнов.
* Разделение кода графического интерфейса и логики приложения.
* Визуальное редактирование сплайнов:
корпус + органы управления
Бонусы:
* Сохранение и загрузка сплайнов,
* Функции undo/redo,
* Поддержка одновременного редактирования произвольного количества сплайнов.
E>>Они оцениваются по длругим признакам. D>Можно оценивать и по другим. И что из этого ? Чем эти "другие" лучше ?
Вы забыли для начала спросить по каким...
E>>движок E>>... E>>корпус + органы управления D>Зачем Вы всё это тут накопипастили ???
Пруф приведите пожалуста того места откуда я это накопипастил.
D>Просто бы написали: "мне, eskimo82, за три дня это сделать слабо"...
Все проще — я не буду этого делать. Просто потому что _я_ _так_ _хочу_, а не вы.
Здравствуйте, eskimo82, Вы писали:
E>Для справки: 3 дня програмиста с докризисной з.п. в 130 стоят 19,5 тыр; с послекризисной стоят 37,5 тыр.
Круто. Я столько и за месяц не зарабатываю.
Здравствуйте, __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?
Здравствуйте, binnom, Вы писали: __>>хелперов не существует. всё можно назвать хелпером. например string можно было назвать charhelper. а html parser это тоже типа html helper. а программист это компьютерхелпер. в принципе можно всё заменить на хелперы. хелперы хелперам помогают. но по уму, конечно же, у всего есть свое имя. словарный запас и мозг просто нужен для использования понятных терминов. слово программист меньше людям знакомо, чем слово компьютерщик. B>Отлично, расширьте наш кругозор и словарный запас Utility и Helper нашли, какие еще есть?
не понял вопроса
B>Да не только. Если посмотреть на .Net framework (в джаве думаю то же самое), то там будут сотни если не тысячи всяческих хелперов и утилзов. Это все видимо тоже не кошерно? B>Вы пробовали делать проекты с UI с помощью какого-либо MVC framework?
да делал, один даже в микрософте пока работал.
у нас там половина классов называлась хелперами.
вы еще приведите MFC в качестве авторитетного примера дизайна
Qt вроде бы было неплохо сделано. давайте просто ради интереса сравним кол-во хелперов в Qt и какой-нить так .Net хрени. соотношение кол-ва хелперов на кол-во классов, как мне кажется, можно уже считать метрикой качества дизайна.
Здравствуйте, __kot2, Вы писали:
B>>Отлично, расширьте наш кругозор и словарный запас Utility и Helper нашли, какие еще есть? __>не понял вопроса
Если суффиксы Helper и Utility вам не нравятся, то каким, по вашему, образом называть подобные классы?
B>>Вы пробовали делать проекты с UI с помощью какого-либо MVC framework? __>да делал, один даже в микрософте пока работал. __>у нас там половина классов называлась хелперами. __>вы еще привезите MFC в качестве авторитетного примера дизайна
У нас видимо разный бэкграунд, в ASP.Net MVC проектах обычно существует куча моделей (ага, с суффиксом Model), и это нормально.
__>Qt вроде бы было неплохо сделано. давайте просто ради интереса сравним кол-во хелперов в Qt и какой-нить так .Net хрени. соотношение кол-ва хелперов на кол-во классов, как мне кажется, можно уже считать метрикой качества дизайна.
Я думаю это в меру бессмысленно, т.к. сравнивать весь .Net FW и Qt — это как сравнивать слона и моську.
Здравствуйте, 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?
Здравствуйте, __kot2, Вы писали:
__>1 модуль — 1 класс. в чем проблема? думаете как-то по другому, чтоли задумано? __>в Питоне это просто ф-ии, которые как бы статические. в С++ у вас будет класс Filesystem или filesystem со статическими ф-иями.
Здравствуйте, Handie, Вы писали:
H>Типичное ООП головного мозга — создание каталога должно быть обязательно методом класса. C# навязывает ООП как никакой другой язык, в том же C++ можно иметь функуию в неймспейсе.
Зато там утечек памяти не бывает. Ну, почти
Ты серьезно? Такое может быть? Я тоже так думаю иногда, когда мне присылают тестовые задания, которое больше похоже на небольшие проекты-шаровары. То есть, его после меня допилить и можно продавать.
Мне в одной компании сказали после собеседования: опыта мало для senior Ruby, почти сразу же, после минутного интервью. Я им: давайте я тестовое задание сделаю. Дали, говорят: делай на любом языке, срок — любой. Почему на любом, вам же Ruby программист нужен, спросил я у них через несколько дней, когда понял, что там что-то не то? Они — это да, но мы... готовы учить человека, если он знает азы.
Здравствуйте, tofox2, Вы писали:
F>>мм, а что за три часа ты успеешь написать? T>достаточно для вынесения решения
давай конкретнее.
что именно ты успеешь написать за это время?
для какой позиции это подойдёт? какие задачи тебе можно будет давать, например, на испытательный срок?
A>Задание было следующим:
A>"1. Создать визуальный редактор сплайнов Кочанека-Бартельса A>(tension/continuity/bias splines).
Настороженно отношусь к таким заданиям, по-моему, для решения принимать на работу или нет любой тест, который надо больше часа делать избыточен. Попахивает желанием заюзать нахаляву под видом тестовых работ. Несколько человек так пропустить и уже неплохо
Здравствуйте, drol, Вы писали:
D>Зачем Вы всё это тут накопипастили ??? Просто бы написали: "мне, eskimo82, за три дня это сделать слабо"...
Это к вопросу об оценке сроков. Три дня чтобы продемонстрировать что-то работающее более-менее достаточно, а если реальный продукт по этому техзаданию, то три недели.
Здравствуйте, drol, Вы писали:
D>Какой автомобиль ??? Вы что несёте ??? Задание примитивное — дня три работы для результата близкого к идеальному по всем параметрам.
Мне тут тоже недавно предложили выполнить тестовое задание, расчитаное на 2 часа. Я сказал этим предлагателям, что у меня есть дела по интереснее, чем пилить никому не нужное приложение.
Но там и задача была бы не на 2 часа, а часов на 5 как минимум.
Здравствуйте, neFormal, Вы писали:
F>для какой позиции это подойдёт? какие задачи тебе можно будет давать, например, на испытательный срок?
У нас была задачка на 2 часа (реально было сделать за полтора).
Обычная вьюшка, в ней при старте нарисован синий круг. При нажатии левой клавишей мышки на нем, у него менялся цвет, форма и он начинал двигаться, отражаясь от "стенок" вьюшки.
Т.е. изначально синий круг, после нажатия красный квадрат, после нажатия зеленый круг, после нажатия синий квадрат и так далее.
При нажатии правой клавиши мышки выскакивало popup-меню с одним пунктом "Свойства". При выборе этого меню открывался модальный диалог, в котором можно было поменять радиус и толщину линии.
Так же переключение radio-кнопками скорость "низкая", "средняя", "высокая"
Бонусный пункт: использовать двойную буфферизацию.
Этого задания было более, чем достаточно понять: умеет ли человек вообще читать тех. задания, правильно их понимать, ставить корректные вопросы. Имеет ли понятия об объектно-ориентированном программировании, имеет ли общее представление как работать со всякими сообщениями и диалогами в винде.
Здравствуйте, SkyKnight, Вы писали:
F>>для какой позиции это подойдёт? какие задачи тебе можно будет давать, например, на испытательный срок? SK>У нас была задачка на 2 часа (реально было сделать за полтора).
да, всё норм, но бывает так, что человеку на это мало 2 часов.
например, он знает это "вообще", а технологию, которую мы хотим, он не знает. это ест время, причём неплохо так ест, если человек плохо учит новое.
тут вот возникает коллизия между ЧСВ кандидата и нашими пожеланиями.
когда поток кандидатов маленький, а кандидаты не блещут качеством, то приходится искать хотя бы мотивированных.
я смотрел код человека, который прямым текстом написал, что задание у него заняло больше 3х часов, поэтому он продолжать не будет и показывает, что есть.
боги, какая же хрень у него была написана!
сделай человек дополнительное усилие, и там было бы всё поприличней. лажу можно было бы подчистить или хотя бы поговорить о ней. пофиг, взяли бы, научили, объяснили бы почемутакплохо. но нет же!
по вашему ТЗ, впрочем, тоже нельзя сказать, какие задачи можно этому человеку ставить, но он хотя бы проходит первичный отбор.
в моём наборе ТЗ есть схожее.
нужно сделать стакан, где сверху падают кружки/шарики, которые между собой коллизятся. когда кружок перемещается в стакане меньше определённой дельты, то он удаляется. сверху постоянно падают новые.
Здравствуйте, neFormal, Вы писали:
F>по вашему ТЗ, впрочем, тоже нельзя сказать, какие задачи можно этому человеку ставить, но он хотя бы проходит первичный отбор.
Мне было важно понять умеет ли человек человек читать задания.
Там был как бы пункт:
создать приложение Document\View с использованием Визарда в Visual Studio ... и удалить все ненужные пункты в главном меню. Так вот 90% кандидатов этот пункт не выполнили, т.е. невнимательно прочитали задание.
Даже на очень простом задании можно минимально понять что человек из себя представляет. На вашем задании тоже можно понять, я думаю, многое. Хотя оно мне показалось сложнее моего
Здравствуйте, SkyKnight, Вы писали:
SK>создать приложение Document\View с использованием Визарда в Visual Studio ... и удалить все ненужные пункты в главном меню. Так вот 90% кандидатов этот пункт не выполнили, т.е. невнимательно прочитали задание.
ну вот, а говорят ещё, что ТЗ не нужно.
у меня были люди, которые в финальной версии допускали очевидную лажу. попросту не проверяли результат или забили на ошибки
конечно, я завидую, что у вас можно процентами считать претендентов. у меня всё намного хуже изза ленивых поисков людей.
SK>Даже на очень простом задании можно минимально понять что человек из себя представляет. На вашем задании тоже можно понять, я думаю, многое. Хотя оно мне показалось сложнее моего
это один из вариантов заданий, но... оно же проще!
берём Box2D(геймдев же), лепим простой стакан с физичными стенками, делаем шарик, фабрику шариков и вуаля!
Здравствуйте, neFormal, Вы писали:
F>у меня были люди, которые в финальной версии допускали очевидную лажу. попросту не проверяли результат или забили на ошибки
Были и такие, но скажем так проверки на ошибки я оценивал при "прочих равных".
F>конечно, я завидую, что у вас можно процентами считать претендентов. у меня всё намного хуже изза ленивых поисков людей.
Это в другой конторе, где я работал. В новой, когда меня брали, никаких тестовых заданий не было и, в этой конторе выполнение тестового задания не требуется, для этого есть испытательный срок в пол года.
F>это один из вариантов заданий, но... оно же проще! F>берём Box2D(геймдев же), лепим простой стакан с физичными стенками, делаем шарик, фабрику шариков и вуаля!
Так как я никогда в геймдеве ничего не делал и практически не в курсе этого всего, то мне оно и показалось сложнее.
Я как-то давно лет так 10 назад чисто ради интереса поковырял OpenGL и DirectX, но дальше этого не пошло.
Здравствуйте, watcher, Вы писали:
W>возможно я не совсем точно выразился W>если кратко, то в 7-8 случаях из 10 качество кода либо не имеет принципиального значения либо есть ресурсы, чтобы натаскать любого
Натаскивать лучше человека имеющего мотивацию.
Качество кода может служить в виде критерия мотивации человека. Если он очень хочет программировать, но при этом его код хуже кода первокурсника, то скорее всего просто врёт и программировать ему не нравится. Лучше искать человека, который любит программировать.