Вы какие-то странности рассказываете. На период работы Collect'а сборщиком мусора, все потоки приложения суспендятся; остаётся работать только поток, вызывающий финализаторы. У него нет шансов быть вызванным. Максимум, Рихтер писал, могу быть проблемы при выгрузке домена/завершении приложения: там на всё время очистки памяти выделен лимит времени, у каждого отдельного — тоже лимит времени. Теоретически, они могут и не успеть Но повторюсь, это при выгрузке домена, а не при нормальной работе программы.
Кстати, а Вы могли бы всё-таки привести этот конкретный пример скрытой ошибки программирования, особенно в многопоточном приложении, интересно же? Хотя бы в общих словах.
Почему следует забыть про finalizer? Он и IDisposable — две разные истории. Если есть возможность определить момент, когда требуется освобождать ресурс, то обязательно надо использовать using/Dispose. Но это не отменяет того, что надо писать финализатор. Он вызовется если не при Collect'е (порой слишком поздно), то при выгрузке домена/завершении приложения и т.д. В общем, я не вижу причин НЕ писать финализатор. Просто полагаться только на него, разумеется, нельзя.
Про IDisposable/Dispose Вы сказали верно. А про деструктор (финализатор) — не совсем. Он будет вызван при сборке мусора, но когда это произойдёт — неизвестно. Аналогично, при возникновении исключения просто так деструктор вызван не будет (если только это не CriticalFinalizerObject, с ним чуть сложнее). И в этой неопределённости момента вызова финализатора есть проблема. Например, неосвобождение открытого файла может привести к проблемам при повторном его же открытии.
Прекрасно Вас понимаю. До того как мы «придумали» такую «структуру», я сам боялся extension'ов как огня именно из-за проблем с поиском. Бывало, помнишь, что кто-то уже писал нужный метод для класса, но в какой сборке определён extension-класс, как он и его метод называются?.. В случае же, если extension где-то используется, найти его не представляет труда полнотекстовым поиском.
В таком случае, я согласен с Вашей точкой зрения. У каждого инструмента своё назначение, равно как и свои «накладные расходы». Трудно писать «идеальный код». Иногда extensions помогают в этом, а иногда нет. Слепо (бездумно) использовать любые фичи языка — плохо.
> Непонятно, где находятся различные методы расширения, предназначенные для одного и того же класса. Непонятно, как их подключать.
Из-за таких проблем мы договорились, что все extension-методы для одного типа реализовываются в одном статическом классе вида <TypeName>Extensions. А чтобы не думать, как подключать, эти классы находятся в глобальном пространстве имён проекта. Не думаю, что это сильное «загрязнение» этого пространства имён.
К чтению серьезных и важных статей нужно подходить только в нужной для этого атмосфере (вас ничто не должно отвлекать, ни внешнее окружение, ни внутренние беспокойства). Только так возможно читать аналитически.
Читаю достаточно серьёзную литературу о программировании в метро и ничего, впитывается вполне нормально. Но читаю, действительно, с карандашом/ручкой. Так что тут вопрос не в условиях, а к приспосабливаемости к ним. Например, под музыку читать, вникая, мне не удаётся.
Про С++ я тоже про typedef подумал, но я не шарю в «плюсах». Мелькнула мысль, что там могут быть какие-то подводные камни, поэтому утверждать ничего не стал.
А про обращение к статическим полям… Ну, это не так важно для рассматриваемого вопроса, имхо. Тут же важен процесс type resolve и имеющийся конфликт имён.
Людям несвойственна возможность ясно видеть задачу в деталях, особенно в начале работы. Но даже когда человек расписал задачу в деталях в голове или на бумаге, это не защищает от ошибок.
Я не говорю, что планирование бесполезно. Просто переоценивать его тоже не стоит.
Кстати, людей, «понимающих задачу» в сфере IT я редко встречал (к разработке игр это, правда, не относится). Самые хорошие спецы, на которых я ориентируюсь, _постоянно_ изучают задачу (да, на протяжении всего решения они не останавливаются).
Спасибо за ответ. Я Вас понял. Примерно это и ожидал услышать. Просто как уже обсуждалось, книги/музыка/ПО это не бентли и не пища, поэтому такие как я и не согласны с Вашим мнением.
Хотя соглашусь, что есть вагон и маленькая тележка действительно спорных вопросов во всей этой заварухе с копирайтами. Например, которые касаются качества продукции (возмещение ущерба за некачественный продукт и прочее).
По поводу моего дела — какая вам разница, какое мне дело?
А такая разница, что мне, как человеку, смотрящему на ситуацию с баррикады авторов, интересен образ мысли тех, кто не испытывает зазрения совести, занимаясь пиратством. Нет, я не осуждаю. Всё чего бы мне хотелось при этом, это чтобы «пират» понимал, что он делает всё-таки нехорошее действие.
Ну а про справедливость. Я так понял, что на самом деле корень спора как раз в том, что с двух баррикад люди и видят справедливость по-разному.
Т.е. Вы считаете, что на риски производитель должен идти, если он затевает выпуск продукта, а получать с его реализации «сверхприбыль» это уже несправедливо? Или я что-то неправильно понял?
И второй вопрос. Какое вам дело до денег производителя? Чужих, между прочим, денег. Нажитых может и не непосильным, но всё-таки трудом. Нет, честно.
Полагаю, Вы беспокоиться должны всё-таки о своём кошельке. Не хочется же ни мне ни Вам дорого платить за фильм или игру. Но если нам не нравится цена, то можно, например, пройти мимо и не обращать внимания. Или сами рассуждения тут в чём-то неверны?
Может модель и ошибочная. В этом проблема авторов ПО. Просто мне не приятно, когда такую или подобную аргументацию приводят люди в защиту «пиратства» (это я не про Вас — Ваше мнение про «пиратство» мне неизвестно). Неприятно потому, что часто люди выражают несогласие с ценой, выставленной автором ПО, не путём игнорирования ПО (не покупая, то бишь), а именно «взяв бесплатно». Т.е. они ставят себя выше озвученных Вами законов экономики (физики?)
По моему скромному мнению, это вопрос честности. Мне было бы намного приятнее, если бы человек скачав «пиратку», понимал, что это всё-таки не очень хорошо.
Спасибо. Подтверждаю, есть такая альтернатива. Но нужна приписка: хотите — качайте с трекеров, только не обижайтесь, если кто-то будет считать вас «пиратом». В отдельных случаях и на людей в масках не обижайтесь.
Я действительно, считаю, что это альтернатива. Без шуток.
Из-за таких проблем мы договорились, что все extension-методы для одного типа реализовываются в одном статическом классе вида <TypeName>Extensions. А чтобы не думать, как подключать, эти классы находятся в глобальном пространстве имён проекта. Не думаю, что это сильное «загрязнение» этого пространства имён.
Читаю достаточно серьёзную литературу о программировании в метро и ничего, впитывается вполне нормально. Но читаю, действительно, с карандашом/ручкой. Так что тут вопрос не в условиях, а к приспосабливаемости к ним. Например, под музыку читать, вникая, мне не удаётся.
А про обращение к статическим полям… Ну, это не так важно для рассматриваемого вопроса, имхо. Тут же важен процесс type resolve и имеющийся конфликт имён.
Я не говорю, что планирование бесполезно. Просто переоценивать его тоже не стоит.
Кстати, людей, «понимающих задачу» в сфере IT я редко встречал (к разработке игр это, правда, не относится). Самые хорошие спецы, на которых я ориентируюсь, _постоянно_ изучают задачу (да, на протяжении всего решения они не останавливаются).
Хотя соглашусь, что есть вагон и маленькая тележка действительно спорных вопросов во всей этой заварухе с копирайтами. Например, которые касаются качества продукции (возмещение ущерба за некачественный продукт и прочее).
А такая разница, что мне, как человеку, смотрящему на ситуацию с баррикады авторов, интересен образ мысли тех, кто не испытывает зазрения совести, занимаясь пиратством. Нет, я не осуждаю. Всё чего бы мне хотелось при этом, это чтобы «пират» понимал, что он делает всё-таки нехорошее действие.
Ну а про справедливость. Я так понял, что на самом деле корень спора как раз в том, что с двух баррикад люди и видят справедливость по-разному.
И второй вопрос. Какое вам дело до денег производителя? Чужих, между прочим, денег. Нажитых может и не непосильным, но всё-таки трудом. Нет, честно.
Полагаю, Вы беспокоиться должны всё-таки о своём кошельке. Не хочется же ни мне ни Вам дорого платить за фильм или игру. Но если нам не нравится цена, то можно, например, пройти мимо и не обращать внимания. Или сами рассуждения тут в чём-то неверны?
По моему скромному мнению, это вопрос честности. Мне было бы намного приятнее, если бы человек скачав «пиратку», понимал, что это всё-таки не очень хорошо.
Я действительно, считаю, что это альтернатива. Без шуток.