дыбр
Собственно, трахался я сегодня с одной фигней. Примерно так выглядит.
Дано:
Единственный вариант использования -
Ну рефакторю. Добавляю параметры
Заменяю на
Все эти args в конфиге - чисто значения, без всяких там эффектов.
Не работает. Два теста рушатся, т.к. во временной директории отсутствую два промежуточных файла с данными.
Вот такой сайд-эффект. Так что режу мой рефакторинг на мелкие кусочки. Локализовал уже два параметра, с которыми фокус чота не удается.
А еще один интегрейшен-тест на мастере внезапно ебанулся; это Кшиштоф причем обнаружил, а до нас как-то не доходит. Стал расследовать. Ну там чо, там в одном месте бросаем ServerConnectionException, в другом ловим любой эксепшен и заворачиваем в ServerConnectionException, в третьем еще раз. Ну и попали, тест не понимает, тест видит, что месидж неправильный. Эксепшен же МОНАДА, ребята. Но этот мудак, Ханифи, он про монаду ничего не знает и знать не желает, он спринг любит. Хер с ним, стал это дело выравнивать под монаду.
А Кшиштоф нервничает, ему чота надо. И Джош нервничает, ему мержить надо. А куда мержить, если тесты не идут. Мы ж не в H2O, мы типа культурные.
Ладно, такие дела.
На скрамном митинге мне Томас навалял какой-то херни делать. Типа удалить такие-то файлы где-то. Или сначала посчитать, сгрупировав. Ну я типа тут хотя бы SQL знаю, дык.
Я нынче две недели в наряде, дежурный по пейджеру (засунутому сами знаете куда). Пейджер звонит, мол, слышь, на dev задержки. Ну я думаю, чо, беременные, нет? Пейджер еще говорит - пойди на сумолоджик и посмотри логи с номером джоба. Но номер джоба не говорит. Ну я там нахожу примерно по контексту. Да, уже три часа джобы не стартуют. Пишу нашим там, админам, девопсам, пусть погавкают на амазон.
В три релиз-митинг. Катя, которую недавно выдвинули в релиз-менеджеры, говорит, что теперь митинг будут вести участники. Игроки. Вот мы вот эти, дежурные по пейджерам.
Синди выступает, у нее там пара интегрейшен-тестов рушится; Синди - это смежники, и она у них в наряде. Я вижу ее стактрейс, говорю, Синди, пошли мне линк, я посмотрю, больно знакомая картина.
Потом я вкратце выступил, что у нас интегрейшен тест поломан, и релизить нам на этой неделе нечего поэтому. Ну и отличненько.
Синдину проблему посмотрел, посоветовал за решением обращаться к девопсам (там с креденшиалзами), но мессага совершенно варварская, и я переписал это дело (валяли там какой-то Гаурабх да наш Том, те еще программисты), переписал с моим классом Result, и послал Синди да Кшиштофу. А Кшиштоф этого класса не знает; рассказал ему заодно. Кшиштоф вообще слегка закипает, что у нас тесты идут по два часа на билд-машине. Я ему такой - давай менеджеров пинать, звеном повыше, потому что наши непосредственные этим делом не интересуются, им за это премию не платят, а наш Пиэм вообще по-программистски не понимает, и зачем нужны тесты, он просто не в курсе, этого нет в плане работ, чтоб тесты ускорять. Их, кстати, Индранил порядочно позамедлял (у меня там стоял ускоритель в 100 раз, но... но всех не вылечишь).
Ну так и день прошел. Что характерно, Томас порадовался моему пятничному пулреквесту, но апрувать не стал, оставил Джошу. А Джош меня долго донимал с этим монадическим эксепшеном, зачем я там мутабельность вставил.
А потому что. (Потому что я начитался SICP и Раста, и не так уж и боюсь этой самой мутабельности, в некоторых специфических случаях.)
Вот и все на сегодня.
А, у нас новый вендор в смысле еды. Кофе поганый, вода для чая поганая, но остальной хавчик образцовый. Ну шоу, конечно. Хавчик подороже они могут в первый месяц повыставлять, а в кофе они ж не разбираются. Питса уже нету. Я люблю питсовский кофе.
А, еще мне из конторы на фе-букву звонил рекрутер, но это была смешная беседа.
Дано:
case class HugeKludge(arg1: String, arg2: String,... arg40: Option[String] = None);
Единственный вариант использования -
val myKludge = HugeKludge(config.arg1, config.arg2,..., userData.arg20, userData.arg21, ..., arg 39)
Ну рефакторю. Добавляю параметры
config и userData. Ну пока что ничо.Заменяю на
case class HugeKludge(config: Config, userData: UserData, arg15, arg17,...) {
val arg1 = config.arg1
val arg2 = config.arg2
...
Все эти args в конфиге - чисто значения, без всяких там эффектов.
Не работает. Два теста рушатся, т.к. во временной директории отсутствую два промежуточных файла с данными.
Вот такой сайд-эффект. Так что режу мой рефакторинг на мелкие кусочки. Локализовал уже два параметра, с которыми фокус чота не удается.
А еще один интегрейшен-тест на мастере внезапно ебанулся; это Кшиштоф причем обнаружил, а до нас как-то не доходит. Стал расследовать. Ну там чо, там в одном месте бросаем ServerConnectionException, в другом ловим любой эксепшен и заворачиваем в ServerConnectionException, в третьем еще раз. Ну и попали, тест не понимает, тест видит, что месидж неправильный. Эксепшен же МОНАДА, ребята. Но этот мудак, Ханифи, он про монаду ничего не знает и знать не желает, он спринг любит. Хер с ним, стал это дело выравнивать под монаду.
А Кшиштоф нервничает, ему чота надо. И Джош нервничает, ему мержить надо. А куда мержить, если тесты не идут. Мы ж не в H2O, мы типа культурные.
Ладно, такие дела.
На скрамном митинге мне Томас навалял какой-то херни делать. Типа удалить такие-то файлы где-то. Или сначала посчитать, сгрупировав. Ну я типа тут хотя бы SQL знаю, дык.
Я нынче две недели в наряде, дежурный по пейджеру (засунутому сами знаете куда). Пейджер звонит, мол, слышь, на dev задержки. Ну я думаю, чо, беременные, нет? Пейджер еще говорит - пойди на сумолоджик и посмотри логи с номером джоба. Но номер джоба не говорит. Ну я там нахожу примерно по контексту. Да, уже три часа джобы не стартуют. Пишу нашим там, админам, девопсам, пусть погавкают на амазон.
В три релиз-митинг. Катя, которую недавно выдвинули в релиз-менеджеры, говорит, что теперь митинг будут вести участники. Игроки. Вот мы вот эти, дежурные по пейджерам.
Синди выступает, у нее там пара интегрейшен-тестов рушится; Синди - это смежники, и она у них в наряде. Я вижу ее стактрейс, говорю, Синди, пошли мне линк, я посмотрю, больно знакомая картина.
Потом я вкратце выступил, что у нас интегрейшен тест поломан, и релизить нам на этой неделе нечего поэтому. Ну и отличненько.
Синдину проблему посмотрел, посоветовал за решением обращаться к девопсам (там с креденшиалзами), но мессага совершенно варварская, и я переписал это дело (валяли там какой-то Гаурабх да наш Том, те еще программисты), переписал с моим классом Result, и послал Синди да Кшиштофу. А Кшиштоф этого класса не знает; рассказал ему заодно. Кшиштоф вообще слегка закипает, что у нас тесты идут по два часа на билд-машине. Я ему такой - давай менеджеров пинать, звеном повыше, потому что наши непосредственные этим делом не интересуются, им за это премию не платят, а наш Пиэм вообще по-программистски не понимает, и зачем нужны тесты, он просто не в курсе, этого нет в плане работ, чтоб тесты ускорять. Их, кстати, Индранил порядочно позамедлял (у меня там стоял ускоритель в 100 раз, но... но всех не вылечишь).
Ну так и день прошел. Что характерно, Томас порадовался моему пятничному пулреквесту, но апрувать не стал, оставил Джошу. А Джош меня долго донимал с этим монадическим эксепшеном, зачем я там мутабельность вставил.
А потому что. (Потому что я начитался SICP и Раста, и не так уж и боюсь этой самой мутабельности, в некоторых специфических случаях.)
Вот и все на сегодня.
А, у нас новый вендор в смысле еды. Кофе поганый, вода для чая поганая, но остальной хавчик образцовый. Ну шоу, конечно. Хавчик подороже они могут в первый месяц повыставлять, а в кофе они ж не разбираются. Питса уже нету. Я люблю питсовский кофе.
А, еще мне из конторы на фе-букву звонил рекрутер, но это была смешная беседа.
Мутабельность
Программисты перестают бояться мутабельности, когда они вынуждены решать практические проблемы.
Хотя, если это не слишком дорого, то мутабельность лучше избегать (чтобы не запутаться).
Re: Мутабельность