|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Shocker.ProИзопропилпропущено... да+1 кстати Статические классы только для методов расширения.почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 21:33 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
AntonariyShocker.Proпропущено... +1 кстати Статические классы только для методов расширения.почему? "Наша песня хороша, начинай сначала" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 22:05 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatAntonariyпропущено... почему? "Наша песня хороша, начинай сначала" (с) Ага, это зачем ввели? https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-8#static-local-functions ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 22:36 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВАга, это зачем ввели? https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-8#static-local-functions Слышал звон. Static local functions не имеюют никакого отношения к статическим классам или методом. Это просто локальные функции не имеющие доступа к замыканию. Для гарантии отсутствия их побочных эффектов. А статический класс это по сути самая что ни на есть глобальная переменная, которая прямо-таки тянет на то эти самые побочные эффекты наплодить. Но, лично мне, достаточно уже того, что со всем, что использует статические классы, возникает полная жоппа с юнит-тестированием. Тут уже на пяти страницах это обсуждалось, надоело повторяться. Код: c# 1. 2. 3. 4. 5. 6.
А теперь давай, расскажи, как ты будешь писать тесты на свойство "Age" ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 23:47 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
На пяти страницах был срач с Петей, полный уныния и неочевидности. Точно так же не очевидна жопа с юнит-тестированием. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 06:44 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Antonariy, Да пусть не используют. Джунам глобальные переменные использовать нельзя). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 07:04 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
WebPrjДжунам глобальные переменные использовать нельзя). Только начиная с синьора. А лиды, так те вообще пишут все только на статических классах. Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 08:22 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Вообще меня объяснения Шокера интересовали, он-то адекватно свои слова обосновывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 13:20 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatА теперь давай, расскажи, как ты будешь писать тесты на свойство "Age"mock сборка. с датами и без статики гемороя много. и DateTime это не статический класс, даже не класс, по этому к чему он в этой теме? Поля статически у него имеются. автор А статический класс это по сути самая что ни на есть глобальная переменная, которая прямо-таки тянет на то эти самые побочные эффекты наплодить. абсолютно любой тип, статический или нет, после инициализации является глобальным объектом, в котором хранится его TypeHandler, ссылки на методы и поля, у него есть адрес и т.д. По этому, любой тип по сути является глобальной переменной, не только статический. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 14:40 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Roman Mejtesmock сборка. с датами и без статики гемороя много. Какая еще мок-сборка? Все давно уже готовыми мок-фреймворками пользуются. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Вот и все, никаких каких-то сборок. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 15:14 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Roman Mejtesабсолютно любой тип, статический или нет, после инициализации является глобальным объектом, в котором хранится его TypeHandler, ссылки на методы и поля, у него есть адрес и т.д. По этому, любой тип по сути является глобальной переменной, не только статический. Ога. И вообще любой объект (reference type) хранится в куче, котрая является одним огромным глобальным объектом. Этак можно вообще до единой теории всего дофилософствоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 15:17 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatRoman Mejtesmock сборка. с датами и без статики гемороя много. Какая еще мок-сборка? Все давно уже готовыми мок-фреймворками пользуются. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Вот и все, никаких каких-то сборок. Скайна как-то это обозвал, уродством, кажется ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 15:20 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
love_bachfkthatпропущено... Какая еще мок-сборка? Все давно уже готовыми мок-фреймворками пользуются. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Вот и все, никаких каких-то сборок. Скайна как-то это обозвал, уродством, кажется Это вообще-то тупо тест. А вот зачем понадобился интерфейс ISystemClock в реальном проекте - так и не ответили в тот раз. Сложилось впечатление, что сначала напроектировали фигни, а потом с ней героически боролись. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 15:24 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
И виновником помнится оказались не static-и, а люди, кто применял их фиг пойми как и зачем. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 15:25 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Дмитрий МухЭто вообще-то тупо тест. А вот зачем понадобился интерфейс ISystemClock в реальном проекте - так и не ответили в тот раз. Сложилось впечатление, что сначала напроектировали фигни, а потом с ней героически боролись. Понадобился в основном как раз для того, чтобы покрыть тестами весьма критическую часть проекта. Код все это совершенно не усложняет, ибо везде DI Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Вот и весь код. Полдюжины строчек кода, которые решают кучу проблем с тестами. Под такую же херь, кстати, попадает еще всякая шляпа, типа Guid.New(), Random.Next() и т.п. - в общем вся хрень, результат которой ты никак не можешь в случае надобности контролировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 16:06 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Random имеет Seed, можно получить заданную последовательность псевдослучайных чисел, которая будет всегда постоянной... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 16:22 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Roman MejtesRandom имеет Seed, можно получить заданную последовательность псевдослучайных чисел, которая будет всегда постоянной... Это да. Но все равно через seed не получить какую-то предопределенную последовательность для теста. Впрочем, в крайних версиях фреймворка и коре рандом уже сделали с виртуальными методами. Примерно так же как в свое время сделали с HttpContext для тех же целей. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 16:51 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Потом еще такая шляпа. Вполне может захотется сменить Random на секьюрный RandomNumberGenerator. Или вообще в одних местах использовать обычный, а в других секьюрный. С инжекцией это можно сделать букально за минуты. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 17:00 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
AntonariyShocker.Proпропущено... +1 кстати Статические классы только для методов расширения.почему?AntonariyВообще меня объяснения Шокера интересовали, он-то адекватно свои слова обосновывает.Ну, по большей части, уже объяснили конкретно. Это как взрослый на основе своего опыта говорит ребенку "не носись", но сложно объяснить конкретно... потому что упадет и расквасит нос, потому что может попасть под машину, потому что собака рядом бегает без намордника.... В общем, поначалу вроде кажется, что нормально, а потом, спустя время, при рефакторинге натыкаешься на грабли ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 19:55 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Shocker.Pro В общем, поначалу вроде кажется, что нормально, а потом, спустя время, при рефакторинге натыкаешься на грабли Что грабли? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 09:15 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВ, "Суслика видишь?") ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 09:54 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Shocker.ProAntonariyпропущено... почему?AntonariyВообще меня объяснения Шокера интересовали, он-то адекватно свои слова обосновывает.Ну, по большей части, уже объяснили конкретно. Это как взрослый на основе своего опыта говорит ребенку "не носись", но сложно объяснить конкретно... потому что упадет и расквасит нос, потому что может попасть под машину, потому что собака рядом бегает без намордника.... В общем, поначалу вроде кажется, что нормально, а потом, спустя время, при рефакторинге натыкаешься на граблиВ общем, я понял: Дмитрий МухИ виновником помнится оказались не static-и, а люди, кто применял их фиг пойми как и зачем. Ложная тревога, все в порядке со статиками. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 11:06 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
AntonariyВ общем, я понял: А потом, если продукт взлетит, упрешься в перфоманс и вернешься к статикам. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 13:47 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВAntonariyВ общем, я понял: А потом, если продукт взлетит, упрешься в перфоманс и вернешься к статикам. Повернутые на оптимизации? Я в жизни не видал, чтобы проблемы с перформансом были именно из-за использования нестатиков вместо статиков. Вот из-за чего угодно видал, но только не из-за этого. Ты еще начни сравнивать сколько процессорных тактов на тот или иной вызов уходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 14:01 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Зато много раз видал, как из-за статиков утечки памяти возникают. Утечки памяти на платформе со сборкой мусора, Карл. Собственно, статик это фактически, наверное, единственный способ утечку памяти вызвать. Хотя, если, честно, то с синглетоном тоже такую бяку легко сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 14:03 |
|
|
start [/forum/topic.php?fid=20&msg=39811301&tid=1398948]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
139ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 257ms |
0 / 0 |