Comments 5
П.5 позволяет завалить любого. "Мы делаем не так, вы нам не подходите", а как это "так", они не скажут.
Не расстраивайтесь! Они испугались того, что человек, ни разу до этого не юзавший Haxe, не только быстро разобрался, но и умудрился в срок "наваять" решение. Вы же их уделаете если займетесь этим по-настоящему :)
Без текста тестового сложно что-то оценивать, иногда там бывают важные детали, которые легко пропустить.
Иногда команда просто хочет человека, который попадает под "культурный контекст".
Задание по косвенным признакам выглядит достаточно объемным, причем требуется выполнить его на определенном языке, поэтому сложно сказать, что именно важнее: понимание языка или, например, знание определенных алгоритмов.
В код я разумеется не вчитывался, но конкретно в вашем случае случае могу сделать следующие замечания:
так делать ни в коем случае нельзя с точки зрения языка. Результат работы парсера – анонимная структура, она не совместима с типом класса. Приложение просто падает на этом месте на любом статическом таргете, а на html работает по стечению обстоятельств.
Плавающий кодстайл и значительное количество странного, неиспользуемого кода намекает на значительный вклад аишки. Аишка стоит существенно дешевле программиста на "высокой вилке", а если выход сопоставим, то зачем платить больше?
Чисто визуально клики срабатывают тоже так себе – близко к границам (пикселя 3–4 на глаз может соседний объект удалить...
Спасибо за подробный ответ!
Я понимаю, что без исходного задания сложно что-то сказать и мне бы хотелось выложить и его, но решил по этическим соображениям воздержаться - все таки моя цель не врожда с компанией. Хотя тут можно было бы поспорить;
Этот момент я тоже обдумывал, но решил не плодить оверхед и написать самый простой вариант. Не совсем понял почему "анонимная структура" - это конкретный инстанс конкретного класса. В общем оверхед также можно оценить как "плохо" на мой взгляд - сколько кейсов было, когда написали код "наперед", а его все равно приходилось переписывать, но при этом еще разбирать. Изменить 1 класс проще, чем всю систему.
Я действительно использовал ИИ-шку, но в основном только для отладочных целей и нескольких вопросов по языку. В остальном код писался руками. Если не затруднит, то не могли бы вы привести примеры разного код стайла? Возможно также повлияло то что код стайл банально не настроен и автоформатирование работает так себе.
Я постарался охватить все кейсы при тестировании и не смог словить чтобы они отрабатывали как-то неправильно. Если бизнес логика как-то поменяется, то скорее всего сломается. Но более надежное поведение потребовало бы очень больших трудозатрат. По тем же причинам я не стал делать отрисовку пола потайлово и систему рендеринга только тех объектов, что на экране.
Аишка стоит существенно дешевле программиста на "высокой вилке", а если выход сопоставим, то зачем платить больше?
Так если аишка решает все проблемы, то зачем вообще платить человеку?) Вот только специалист не сможет просто вбить в аишку "сделай мне тестовое" и получить готовый результат. Однако, если она ускоряет работу (естественно не надо в слепую копи-паст делать), то ее использование на мой взгляд это плюс. Бизнесу важен результат.
В указанной строчке поцедура присваивания. Тип переменной – инстанс класса. Тип, возвращаемый парсером – Anonymous Structure, но сигнатура –Dynamic. Тип Dynamic специальный, но для наглядности его можно сравнить с Any в ts, для него не работают проверки типа в момент компиляции, но это не делает значения совместимыми между собой. Если хочется использовать результат работы парсера напрямую, как контейнер данных, то для этого можно использовать typedef.
Ну, например, приватные переменные кое-где начинаются с _, в остальных местах нет. Я даже не про форматирование. В целом, стиль написания очень разношерстный: где-то используются сеттеры, где-то поля, где-то функции-акцессоры. Много неиспользуемого кода.
Не обязательно пенять на иишку, человек тоже может накопипастить что-то со стековерфлоу, конвертировав синтаксис в нужный язык. Проблема с иишкой в том, что такой результат она выдает намного дешевле. От человека действительно требуется понимание и контроль. Так вот, в данном решении всего этого не хватает. Решение здесь неаккуратное и глючное. В прод такое совать нельзя, в основной репо проекта коммитить тоже не стоит. Бизнес готов платить многаденяк за человека, который умеет контролировать иишку, а не за человека, которого самого надо контролировать.
А сотни неиспользуемых строк закоммиченных в общий репо могут стоить намного дороже привнесенного решения, создавая дополнительную когнитивную нагрузку на команду.
Разработка изометрической игры на Haxe