Здравствуйте, Философ, Вы писали:
Ф>Здравствуйте, мыщъх, Вы писали:
Ф>{ Ф>CleanOldData(); Ф>KillByAge(); Ф>ProducePosterity(); Ф>IncrementAge(); Ф>CleanGenerations(); Ф>}
Clean и Kill смущет. из названий непонятно делает ли Clean тоже, что и Kill или Clean это очистка без убиения. ну, например, есть массив данных. очистить -- перезаписать нулями (null или "" в зависимости от...), а убить это сделаеть ему Free.
CleanOldData -- что такое Old? где в документации найти определение old? и где найти как оно конфигурируется? если конфигурируется вообще?
я вот писал простую функцию выборки данных от и до, где "до" выражалось в кол-ве дней. а вот с "от" вышел казус. понятно, что нужно предусмотреть вариант "сейчас", но "сейчас" это слишком много вариантов, т.к. текущее время нужно откуда-то брать, а откуда его брать -- это вопрос, особенно если это сервер и с ним работают люди из разных часовых поясов. ну то есть нужно придумать простой и понятный способ указать функции какое время брать -- юзерское или серврное или если юзер дэбил ("юзер", конечно, программер) то сказать "auto" и пусть программа сама решает.
но тут приключения только начинаются. ибо тесты. а в тестах нужно имитировать время. а имитировать его путем перевода времени на сервере никто не будет. значит, нужен еще способ указать, что когда мы говорим "сейчас", но работаем в тестовом режиме, то "сейчас" это время из конфига или не из конфига -- это смотря что мы тестируем.
а что мы можем тестировать как не базы? и тут возникает идея, что моя функция не такая дурная, чтобы не взять время из базы и понять когда это "сейчас" (благо время в базе есть).
пикантность в наименовании флагов. блин, на хрена я дал имя флагу auto? вы догадываетесь, что оно означает? нет? и правильно. потому что я дэбил и у меня оно означает брать время из тестовой базы. девы, ес-но, поняли это не так. они поняли, что auto это брать текущее время автоматом. потому как еще есть флаги now и local. какой же я все-таки дэбил. никто так и не понял как их комбинировать... хотя мне казалось логично. если время не указано, а стоит now -- брать серверное время. если now | local -- клиентское. просто local будет поправка к явно заданному времени. auto -- время из базы. now | auto -- поправка на локальное время определяется самой функций при работе в нормальном режиме и берется из конфига при работе в тестовом.
короче, убил три дня пока объяснял как пользоваться этими флагами ;-( а все потому что выбрал неудачные названия. я их понимал по своему, а девы их понимали по своему. кстати, от auto ожидали того, что делает now, т.е. автоподстановки текущей даты с сервера. и вызывали функу auto | local. ну вы догадываетесь к чему приводила такая комбинация... самое интересное, что программа работала правильно. и тесты проходила, и в боевых условиях выдавала ожидаемый результат. вот только конфиги игнорировала, а потому когда вдруг возникла потребность смоделировать ситуацию на фейковой базе, то ни хрена оно не смоделировалось. программа упорно брала время из базы. а база фейковая (только что сгенерированная). и потому время в ней настоящее, а не то, какое мы указали в конфигах (типа это было триста лет тому назад). бааалин, программа игнорирует конфиг. где грабли?! а грабли в неправильном вызове функции, т.к. надо не auto | local, а now | local или просто auto.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.