M>Мне сложно согласиться с такой посылкой.
M>Например класс log_destination который направляет (готовый) поток вывода конкретному потребителю (файл, сеть, экран...). А теперь представьте себе что этот объект мы абстрагируем с помощью шаблоного агрумента по ВСЕМУ коду программы. Разве вы не увидите недостатков такого решения , разве на основе преимуществ и недостатков нельзя попытаться сформировать правила выбора?
проблема, которая будет тут, если log_destination будет передаваться аргументом шаблона -- это то, что something<OneLogDestination> и something<OtherLogDestination> будут рассматриваться как разные типы, но она тоже решаема
зато гарантированно здесь не будет pure virtual method call
традиции предписывают делать log_destination в виде наследника абстрактного класса; впрочем, если нам придется передавать log_destination в виде значения в рантайме, то это уже не традиция, а скорее необходимость (хотя, при особом желании, можно замутить что-то подобное с шаблонным аргументом, но это будет abuse)
ME>>по преимуществам и недостаткам трех способов уже можно говорить осмысленно M>И по ним же можно составить правила (которые не обязаны быть строгими , но легко понятными)
ну попробуй; если у тебя получится -- я порадуюсь, но по-моему ты обламаешься
плясать со стороны достоинств и недостатков куда легче, чем сочинить и/или помнить эти правила, и плясать от правил
Здравствуйте, m e, Вы писали:
ME>традиции предписывают делать log_destination в виде наследника абстрактного класса; впрочем, если нам придется передавать log_destination в виде значения в рантайме, то это уже не традиция, а скорее необходимость (хотя, при особом желании, можно замутить что-то подобное с шаблонным аргументом, но это будет abuse)
Откровенно, аргументация "такая традиция" меян бы сильно смутила. А если сущетсвуют другии критерии на основе которых многие принимают схожие решения ?
M>Откровенно, аргументация "такая традиция" меян бы сильно смутила. А если сущетсвуют другии критерии на основе которых многие принимают схожие решения ?
вот и прекрасно
давай мы не торопясь, со вкусом обсудим эту тему
да, я считаю, что "такова традиция" -- это основной или первый аргумент; далее идут аргументы, специфичные для проекта, которые могут заставить принять решение, отличающиеся от традиционного
понятно, что в любом случае фундаментальными целями является максимальная проверка правильности программы компилятором, понимабельность ее людьми и легкость выполнения людьми требований, не проверямых компилятором, но выливаться все это может в т.ч. и в нетрадиционное решение (хотя, скорее всего, редко)
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, landerhigh, Вы писали:
L>>Ты будешь смеяться, но у меня в резюме практически так и написано. На поток желающих предложить очередную "once in a lifetime opportunity" никак не повлияло, надмозгов с гномиками, сортировками, недо-брайнбенчами и прочей ересью как отрезало.
ПМ>Ну да, ни одна приличная контора таких капризных девочек приглашать не станет, потому что следующей предьявой будет "отказываюсь тестировать свой код",
Нанимай тестеров
ПМ>"отказываюсь приходить на работу вовремя"
За обоздание на 2 минуты штраф 2 доллара, норма выработки баго-форм в день?
Здравствуйте, minorlogic, Вы писали:
M>Здравствуйте, os24ever, Вы писали:
M>>> Пока есть положительный сдвиг , но очень малый (как по мне).
O>>Можно было бы добавить параметры: временная зона, локаль и т.д.
O>>Но задание на сеньёра, поэтому сеньёр так делать не хочет. Он помнит, что он где-то когда-то уже видел, что всё это задавалось в переменных окружения или в файлах настроек (и язык и кодировка тоже).
M>Это уже НАМНОГО ближе к идеальному с моей точки зрения ответу.
Дык время как угодно можно хранить, если требования позволяют (забить на переполнение, локали) — в твоём случае просто требования скрыты и программисту приходится гадать. Требования в исходной задачи указаны минимальные.
Здравствуйте, m e, Вы писали:
ME>... или московском офисе в гугля -- там тоже емнип можно приходить на работу в любое время
Но там нужно решать задачи про гномиков, тестировать код и согласовывать кучу фигнюшек, перед тем, как выпустить что-то в продакш. И еще, туда не берут "девочек", там работают только сильные, целеустремлённые программисты.
Здравствуйте, ArtemGorikov, Вы писали:
ПМ>>Ну да, ни одна приличная контора таких капризных девочек приглашать не станет, потому что следующей предьявой будет "отказываюсь тестировать свой код", AG>Нанимай тестеров
На программистов, которые думают, что ответственность за качество кода лежит на тестеров, я бы предпочел вообще не тратить ни минуты времени.
ПМ>>"отказываюсь приходить на работу вовремя" AG>За обоздание на 2 минуты штраф 2 доллара, норма выработки баго-форм в день?
И на тех, которые не понимают зачем приходить на работу вовремя — тоже. Вообще не представляю, как взрослый человек может быть настолько инфантильным и безответственным.
Здравствуйте, Паблик Морозов, Вы писали:
O>>Сам не считаю себя знатоком БД, просто язык SQL люблю.
ПМ>Реализация EAV поверх РСУБД — это хороший детектор, позволяющий увидеть ушибленных на голову SQL-ем и недопустить их в проект.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Паблик Морозов, Вы писали:
O>>>Сам не считаю себя знатоком БД, просто язык SQL люблю.
ПМ>>Реализация EAV поверх РСУБД — это хороший детектор, позволяющий увидеть ушибленных на голову SQL-ем и недопустить их в проект.
L>Что предлагаете взамен для решения той задачи?
Первое, что я предлагаю, это rethink the whole thing. Потому что
>когда в БД хранятся некие сущности, которые являются "шаблонами". А потом из этих шаблонов пользователи порождают конкретные "экземпляры", которые могут отличаться между собой значениями полей (само собой), но также могут отличаться и от шаблона, допустим, наличием дополнительных полей.
это не задача, а уже набросок какого-то решения, который может быть в корне неверным. А изгаляться по-всякому можно, но надо ли?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, ArtemGorikov, Вы писали:
ПМ>>>Ну да, ни одна приличная контора таких капризных девочек приглашать не станет, потому что следующей предьявой будет "отказываюсь тестировать свой код", AG>>Нанимай тестеров
ПМ>На программистов, которые думают, что ответственность за качество кода лежит на тестеров, я бы предпочел вообще не тратить ни минуты времени.
Так ты сам таких программистов придумал. Какие-то предъявы сам себе сочинил. Рановато тебе собеседования проводить, рановато.
ПМ>>>"отказываюсь приходить на работу вовремя" AG>>За обоздание на 2 минуты штраф 2 доллара, норма выработки баго-форм в день?
ПМ>И на тех, которые не понимают зачем приходить на работу вовремя — тоже. Вообще не представляю, как взрослый человек может быть настолько инфантильным и безответственным.
А что, для программистов апофеозом ответственности нынче считается быть на работе ровно в девять нуль-нуль, гладко выбритым и в костюме с галстуком?
O>Помогите ей преобразовать эту Вселенную в SQL, нарисуйте ER-диаграмму.
О, кстати, отличная, я бы сказал, классическая задача. В том смысле, что в большинстве случаев сформулирована некорректно. Потому что условие не содержит объяснения, ЗАЧЕМ нужно из дерева составлять таблицы.
В более широком смысле эта задача переходит в "спроектируйте мне ORM".
M>Откровенно, аргументация "такая традиция" меян бы сильно смутила. А если сущетсвуют другии критерии на основе которых многие принимают схожие решения ?
"традиция" в моем понимании не означает, что получив задание реализовать класс для глокой куздры я буду носится по интернету и искать, как традиционно их реализут достаточно легко сделать это по аналогии
традиция, скорее, состоит в том, какого объема ставить себе задачу
рассмотрим тот же log_destination
задачи можно поставить в двух объемах:
1. традиционная -- мы согласны на то ограничение, что log_destination будет конкретным потомком абстрактного класса; в случае, когда этих вариантов назначения лога будет немного (высокая вероятность), то это вполне пригодный вариант
2. расширенная -- мы хотим, чтобы log_destination был объектом любого такого класса SomeClass, для которого (почти) любой класс T имеет
так что разница в дизайне "log_destination делаем в виде классовой иерархии, а потоки в виде (условно скажем) шаблонного оператора" имеется,
и происходит она из-за причины, которую ты очень-очень вряд ли сможешь четко и ясно изложить в правиле, а если и сможешь -- младшие программисты все равно смогут с тобой спорить на тему "нет, это правило у нас сейчас не приложимо"
в то время как достоинства и недостатки языковых средств весьма близки к объективным -- в особенности ответ на вопрос "проверяет ли эту хрень компилятор" на 99% объективен (оставшиеся 1% необъективности отнесен на случай возможности проверки только с помощью переусложненных шаблонов)
ME>>... или московском офисе в гугля -- там тоже емнип можно приходить на работу в любое время
ПМ>Но там нужно решать задачи про гномиков, тестировать код и согласовывать кучу фигнюшек, перед тем, как выпустить что-то в продакш. И еще, туда не берут "девочек", там работают только сильные, целеустремлённые программисты.
что-то подозрительно лексика напоминает лексику успешных менеджеров...
кстати, а кто такие "девочки" -- это те, кто отказывается приходить на работу вовремя?