Re[6]: Заваленная сборка AppVeyor
От: Sinix  
Дата: 02.12.16 22:09
Оценка:
Здравствуйте, AndrewVK, Вы писали:


S>>0. Культура — ну это очевидно как бы. Для вывода пользователю эта штука с вероятностью 99% использоваться не будет.

AVK>Неконсистентно с фреймворком. В фреймворке везде CurrentUICulture по умолчанию + перегрузка с явным указанием. Можно спорить с тем насколько это правильно, но уж как смогла, так смогла.
Как насчёт такой отмазки: все текстовые сериализаторы — Invariant. У нас по сути оно и есть. Десериализовать никто не обещал

Не, мы можем использовать и текущую культуру, но как я понимаю сценарии использования этой штуки, почти всегда пользователям это не понравится.


S>>1. Функция посередине кода — оно здорово затрудняет чтение кода из-за смешивания кода, который выполняется прямо сейчас

AVK>Я бы не был так уверен. Просто локальные функции это очень непривычно и пока глаз не научился их читать эффективно.
Это для большинства непривычно. А я по горло их накушался, ибо в одном проекте авторы системы генерации отчётов решили поставлять код внутри форм отчётности, но не озаботились импортом кода из .cs-файлов и оставили только возможность копипастить каждый метод по отдельности. В итоге почти все отчёты с сложной логикой — один огромный метод в несколько сотен, а то и тысяч строк с кучей linq-запросов и лямбд с замыканиями внутри. Разумеется, разбираться почему оно не работает достаётся самым повидавшим жизнь, их не так жалко. Так что разбуди ночью — я часами могу типовые косяки с замыканиями и побочными эффектами Linq-запросов перечислять

Это к вопросу "больших последствий маленького решения". Я этих прелестей энтерпрайза столько накушался, что рефлекс сразу делать нормально фиг вытравишь теперь


AVK>По поводу var поначалу тоже жуткие флеймы стояли, как же так, я не увижу тип переменной, все пропало. А прошло время, люди привыкли, научились нормально называть переменные и правильно акцентировать внимание при чтении кода, и у большинства оно теперь не вызывает особых проблем с чтением.


Ну по крайней мере для примитивов я бы явный тип оставлял, от кучи багов спасает. Но это для большого кода критично, для мелких файлов перевешивает "var вперемешку с int/long отвратно читается".
Re[7]: Заваленная сборка AppVeyor
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.12.16 22:21
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Как насчёт такой отмазки: все текстовые сериализаторы — Invariant.


Текстовые сериализаторы, в отличие от, не предназначены для чтения глазами.

S>Не, мы можем использовать и текущую культуру, но как я понимаю сценарии использования этой штуки, почти всегда пользователям это не понравится.


ToInvariantDebugString? Потому что большинство по умолчанию будет таки текущую культуру ожидать, и возврат инвариантной это таки WTF.

S>А я по горло их накушался, ибо в одном проекте авторы системы генерации отчётов решили поставлять код внутри форм отчётности


Аналогии здесь не работают. Нужен опыт именно с шарпом.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[8]: Заваленная сборка AppVeyor
От: Sinix  
Дата: 03.12.16 05:58
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>>Не, мы можем использовать и текущую культуру, но как я понимаю сценарии использования этой штуки, почти всегда пользователям это не понравится.

AVK>ToInvariantDebugString? Потому что большинство по умолчанию будет таки текущую культуру ожидать, и возврат инвариантной это таки WTF.
+1
Только ToDebugStringInvariant тогда, чтобы следовать стилю фреймворка (ToUpper/ToUpperInvariant). И ToInvariantString тож неплохо по аналогии переименовать.

S>>А я по горло их накушался, ибо в одном проекте авторы системы генерации отчётов решили поставлять код внутри форм отчётности

AVK>Аналогии здесь не работают. Нужен опыт именно с шарпом.
Код отчётов — шарп Добрая половина ошибок была как раз из-за слишком вольного обращения с разделяемым состоянием. Но это не в порядке спора, если хочется самому понаступать на эти грабли, я мешать не буду
Re[8]: Заваленная сборка AppVeyor
От: Sinix  
Дата: 03.12.16 12:02
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Sinix, Вы писали:


Кстати, по "заваленной" сборке: у нас новый косяк вылез, пакеты в артефакты не заливаются:
nuget pack Main\nuget\CodeJam.Main.nuspec -version "$env:nugetVersion"

  Attempting to build package from 'CodeJam.Main.nuspec'.
  Successfully created package 'C:\projects\codejam\CodeJam.1.0.0-alpha990.nupkg'.


Push-AppveyorArtifact CodeJam.$env:nugetVersion.nupkg

  Resolve-Path : Cannot find path 'C:\projects\codejam\CodeJam.1.0-alpha990.nupkg' because it does not exist.
  At C:\Program Files\AppVeyor\BuildAgent\Modules\build-worker-api\build-worker-api.psm1:207 char:18


Это наше, или надо в саппорт appveyor отписаться?
Разница в "CodeJam.1.0.0-alpha990" vs "CodeJam.1.0-alpha990.nupkg".

UPD: Да, у перфтестов поправил таргетинг, на 4.5 должно работать. Поправь nuspec + cmd для них как время будет
Отредактировано 03.12.2016 12:06 Sinix . Предыдущая версия .
Re[9]: Заваленная сборка AppVeyor
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.12.16 12:34
Оценка:
Здравствуйте, Sinix, Вы писали:

AVK>>Аналогии здесь не работают. Нужен опыт именно с шарпом.

S>Код отчётов — шарп

Откуда тогда там локальные функции?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[9]: Заваленная сборка AppVeyor
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.12.16 12:34
Оценка: 24 (1)
Здравствуйте, Sinix, Вы писали:

S>Это наше, или надо в саппорт appveyor отписаться?


Имена мы сами формируем, но вот почему они поменялись — вопрос. Надо смотреть.

S>UPD: Да, у перфтестов поправил таргетинг, на 4.5 должно работать. Поправь nuspec + cmd для них как время будет


ОК.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[10]: Заваленная сборка AppVeyor
От: Sinix  
Дата: 03.12.16 12:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:


AVK>>>Аналогии здесь не работают. Нужен опыт именно с шарпом.

S>>Код отчётов — шарп
AVK>Откуда тогда там локальные функции?
Лямбды / анонимные методы ничем в этом плане от локальных функций не отличаются.
Re[11]: Заваленная сборка AppVeyor
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.12.16 13:00
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Лямбды / анонимные методы ничем в этом плане от локальных функций не отличаются.


Тут я не согласен.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[12]: Заваленная сборка AppVeyor
От: Sinix  
Дата: 03.12.16 13:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Sinix, Вы писали:


S>>Лямбды / анонимные методы ничем в этом плане от локальных функций не отличаются.

AVK>Тут я не согласен.
Не согласен с "не согласен"
var a = 10;
Action b = ()=>Console.WriteLine(a);
void B2()=>Console.WriteLine(a);

...
a = 123;
...

b();
B2();

В плане "поменял локальную переменную — завалился левый код, объявленный на экран выше" разницы никакой.
Re[10]: Заваленная сборка AppVeyor
От: Sinix  
Дата: 03.12.16 13:20
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Имена мы сами формируем, но вот почему они поменялись — вопрос. Надо смотреть.


Ещё чего-то не хватает. Кмк это уже надо в саппорт писать.
  Successfully created package 'C:\projects\codejam\CodeJam.PerfTests.MSTest.1.3.0-alpha991.nupkg'.

Push-AppveyorArtifact **\*.nupkg

  Push-AppveyorArtifactInternal : Cannot bind argument to parameter 'FullPath' because it is null.
  At C:\Program Files\AppVeyor\BuildAgent\Modules\build-worker-api\build-worker-api.psm1:209 char:42
  +     Push-AppveyorArtifactInternal -FullPath $fullPath -FileName $File ..
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.