Naira: Небольшой девлог
В общем, добрался я до нового модуля и решил запилить постик. Заодно благодаря этому я вынужден вести документацию, уверен, мне это послужит хорошую службу.
Для начала, я немного прибрался в таблице связи элементов. Теперь она выглядит куда как чище. Поводом для этого стала оптимизация расположения элементов... но хэй, зато теперь всё стало немного лучше и проще.
Да, глядя на схему можно уже заметить потенциальную проблему со связкой Act<->Script, но это вопрос к тому, чтобы написать сборщик мусора в том или ином виде. С другой стороны, забывание историй не то что бы предполагается с одной стороны, а с другой стороны "мне кажется, что я что-то не могу вспомнить" - вот вроде и баг, а как-то человечнее смотрится. Главное, чтобы не вышло "And it's design is very human".
Ну да ладно, просто блоки двигать каждый ёж сможет, а что по делу-то?
Хотел я написать либо что-то прекрасное, либо что-то ужасающее, но получилось что-то среднее.
Эта функция - текущая база Act'a. Но интересна она тем, какой говнокод я в ней навертел, зацените.
Во-первых коммент русскими буквами - это маркер качества. Вернее его отрицательного значения.
Во-вторых, внимательный читатель воскликнет: "Э, паря, ты там IF не забыл вообще!?" Хотя нет. Не знакомый с Питоном читатель словит панику, потому что "Где типы?! Что я вообще вижу!?
В общем, что я тут наговнокодил:
Так как питон не умеет в перегрузки (т.е. "выбирать куда совать исходя из данных") тут я кручу-верчу перегрузку "ручками", чтобы на выходе данные были одинаковыми вне зависимости от того как я это потом реализую. И всё бы ничего, если бы я не захотел избавиться от IF'ов (которых тут и нет). Ниже будет пример с ними.
Избавиться от IF'ов оказалось довольно просто: всего лишь надо было избавиться от операций присвоения (питон такой питон). Потому что IF пускает если получает на вход бульку True и не пускает, если получает бульку False. Но вопрос: а зачем мне вообще IF, если я могу отложить бульку вникуда? Вот именно, не за чем, а значит можно записать в одну строку.
Хотя на самом деле - просто питон не умеет в переводы строк нормально. Вот и выходит кошмар из 80-х.
Ну а внизу я проверяю что типы совпадают и всё работает.
А тут можно увидеть гораздо более читаемый код с IF'ами, а так же несколькими попытками переписать это в компактный говнокод, которые я буду проверять после тестов.
Теперь Найра может сравнивать истории по степени подобия. Надо теперь понять что я от этого хочу.
Подытоживая я набросал небольшую схему связи новой логики. Лишь бы прокрастинировать, ага.
На ней можно видеть как примерное направление течения данных, так и кусок из "Истории/Скрипта", который как раз для того чтобы контактировать предназначен. В общем, пока что так побудет, а там переделаю, может удастся сделать ещё ужаснее.
А вот с тестами не задалось.
С одной стороны - прошлая неделя была геморройной в плане здоровья, а с другой стороны - у меня мозги заклинило. Какую-то имитацию мобы типа картошки набросал с захватом баз, потом упростил до сингловой РПГ про спасение принцессы, где просто надо пройти по прямой. Поторговав, дёрнув за рычаг и убежав от магмы.
На сегодня это всё, о чём стоит упомянуть, наверное.
Хочу энерогос =_=". С ним думается полегче.