Мне кажется вам в любом случае придется хоть что-то вечно доучивать — новые команды форматы экзешников и др В случае с powershell просто есть уже готовый протокол, который уже проталкивается вендором и поддерживается в своих продуктах.
>>Или, там, с grep'ом посреди pipe'а
Это еще почему?
Get-ChildItem | grep exe | ogv
Вполне работает. Только grep принимает и выдает строчки => объектов вы не увидите на последнем конце. Ну так он и json так же может испортить. (Можно в принципе написать чуть сложнее, с использованием Where-Obkect — чтобы объекты доезжали до конца)
Единственный недостаток который я встречал, это если в ps1 включать обычный консольные команды, а потом весь вывод редиректить — тогда все падало (не уверен, что не исправили)
«json в этом случае проще» в powershell можно ограничиться изучением свойств, а методы не учить. Весь дотнет можно не учить — только то, что требуется в данный момент. То есть эта сложность получится по требованию.
>>При этом есть враждебная и не очень хорошо написанная среда — powershell (винды). В которых взяли хорошую идею (пайпы передают не текст, а объекты), но испортили её двумя вещами:
Можно ли узнать что делает эта комбинация? По быстрому не смог найти.
>>2.предложением пойти и выучить .net для того, чтобы нормально с методами работать.
Я так понял, что при использовании json нельзя вообще вызывать методы так как передаются только данные без поведения. Можно ли узнать чем json лучше в этом аспекте Powershell.
В предыдущих спорах по поводу шеллов мне говорили что уже есть объектный шелл — ipython — рассматривали ли вы его?
А он не скалал, что пихает код тестов в продакшн код, а что использует ассерты. Я предположил, что у него там не тесткейзы, а просто разные предусловия и др.
Вообще спрашивали про покрытие а не про эмоции участвующих в процессе людей. Если есть баг, то мы должны подумать о том, почему тесты его пропустили и написать недостающий тест, проверить что он валится, исправить код, проверить что тест проходит.
>>>Можно возразить, что это не обязанность класса погоды качать данные и парсить HTML, но это будет всего лишь придирка к конкретному примеру.
Дык необходимость писать тесты для приватных методов это подсказка, что нарушен SRP — single responsibility principle.
для assertEqual(25, getCurrentTemperature()) простейшая реализация return 25;
тогда вы получите зеленый тест, но не все требования удовлетворены: реализация должна зависеть от состояния температурного сайта.
Тогда придется задуматься о том, как объекту подавать на вход фейковые сайты и что такое сайт (например, можно подумать, что у разных сайтов могут быть разные форматы и схемы url и инкапсулировать генерацию url и разбор формата туда).
>>>Когда работа завершена, методы downloadPage/parseHtml стали приватными. Выкидывать тесты для них?
Red->Green->Refactor — на этапе refactor рефакторятся не только продуктивный код, но и тесты. Как только вам захотелось тестировать что-то приватное отдельно, воспринимайте это как сигнал о том, что у класса слишком много обязанностей и переносите их в отдельный класс. И тестовые методы, если они стали приватными либо выкидываем (если то же самое продублировано тестами публичных методов) либо переносятся в тест этого отдельного класса.
Еще немножко подумал, скорее согласен с подходом с Converter, но мне не нравится его название BoolToVisibilityConverter — оно не отражает, что он конвертирует bool в пару Collapsed | Visible, а не Hidden | Visible — надо либо как-то параметризовывать, либо запихивать Collapsed в имя конвертера. Как вы на это cмотрите?
Не могли бы вы немного пояснить это мнение? View Model — это модель представления. Я так понял, что она должна содержать абстрактное описания представления без привязки к конкретному фреймворку.
Можно попробовать sourceforge.net/projects/pash/ но я бы не стал :)
Мне кажется вам в любом случае придется хоть что-то вечно доучивать — новые команды форматы экзешников и др В случае с powershell просто есть уже готовый протокол, который уже проталкивается вендором и поддерживается в своих продуктах.
>>Или, там, с grep'ом посреди pipe'а
Это еще почему?
Get-ChildItem | grep exe | ogv
Вполне работает. Только grep принимает и выдает строчки => объектов вы не увидите на последнем конце. Ну так он и json так же может испортить. (Можно в принципе написать чуть сложнее, с использованием Where-Obkect — чтобы объекты доезжали до конца)
Единственный недостаток который я встречал, это если в ps1 включать обычный консольные команды, а потом весь вывод редиректить — тогда все падало (не уверен, что не исправили)
«json в этом случае проще» в powershell можно ограничиться изучением свойств, а методы не учить. Весь дотнет можно не учить — только то, что требуется в данный момент. То есть эта сложность получится по требованию.
ipy я не юзаю, но суда по карточке, там можно это сделать, но системный команды предвараются!
damontallen.github.io/IPython-quick-ref-sheets/
типа files = !ls /usr
>>1.Неэргономичной консолью виндов (Shift-PgUp где, а?)
Можно ли узнать что делает эта комбинация? По быстрому не смог найти.
>>2.предложением пойти и выучить .net для того, чтобы нормально с методами работать.
Я так понял, что при использовании json нельзя вообще вызывать методы так как передаются только данные без поведения. Можно ли узнать чем json лучше в этом аспекте Powershell.
В предыдущих спорах по поводу шеллов мне говорили что уже есть объектный шелл — ipython — рассматривали ли вы его?
andrey.moveax.ru/post/csharp-code-contracts-basics.aspx
Дык необходимость писать тесты для приватных методов это подсказка, что нарушен SRP — single responsibility principle.
для assertEqual(25, getCurrentTemperature()) простейшая реализация return 25;
тогда вы получите зеленый тест, но не все требования удовлетворены: реализация должна зависеть от состояния температурного сайта.
Тогда придется задуматься о том, как объекту подавать на вход фейковые сайты и что такое сайт (например, можно подумать, что у разных сайтов могут быть разные форматы и схемы url и инкапсулировать генерацию url и разбор формата туда).
>>>Когда работа завершена, методы downloadPage/parseHtml стали приватными. Выкидывать тесты для них?
Red->Green->Refactor — на этапе refactor рефакторятся не только продуктивный код, но и тесты. Как только вам захотелось тестировать что-то приватное отдельно, воспринимайте это как сигнал о том, что у класса слишком много обязанностей и переносите их в отдельный класс. И тестовые методы, если они стали приватными либо выкидываем (если то же самое продублировано тестами публичных методов) либо переносятся в тест этого отдельного класса.
В википедии написано, что это вариант PresentationModel см у Фаулера ( martinfowler.com/eaaDev/PresentationModel.html ), где в примере можно, например увидеть isComposerEnabled
«Бухгалтер», «бабушка», «амбициозная блондика», а UX тестер будет себе делать коктейли типа «молодая бухгалтер — амюбициозная блондика».