Conversation
bdffb14 to
db1e6a5
Compare
There was a problem hiding this comment.
Метод не использует ничего, что предоставляет инстанс класса. Нужно сделать статическим.
There was a problem hiding this comment.
Тогда вместо this.getStateData придется писать что-то типа this.__self.getStateData
There was a problem hiding this comment.
почему? Сделать его методом класса и писать CaptureProcessor._getStateData(). Что за self?
There was a problem hiding this comment.
ты будешь звать его в наследниках, а там хз от кого ты отнаследовался, все время подключать capture-processor - не айс. __self - это ссылка на класс в инстансе
|
Начало про Идея такая: базовый screen-updater делает какой-то warm-up вроде вычисление Как видится реализация: processCapture: function(capture) {
var _this = this;
this._prepareToProcessCapture()
.then(function(prepared) {
return _this._doProcessCapture(prepared, capture);
})
.thenResolve(this._getStateData(prepared.path, capture));
}Ещё 1 профит от такого рефакторинга - эти данные не будут считаться 2 раза в |
|
Кстати, а зачем вообще остался |
только потому что буду его выпиливать отдельным коммитом. Изначально я надеялся сделать это все до |
|
< captain mode > нужно покрыть тестами</ captain mode > |
There was a problem hiding this comment.
else не нужен. Ну и в принципе этот if тоже не нужен
There was a problem hiding this comment.
если if вообще убрать, то получится такая ситуация, при которой я напишу любую опцию и мне вернется NewUpdater. Типа, gemini update --some запустится как с опцией --new. Мы хотим такого поведения?
There was a problem hiding this comment.
ну вообще, это бы на уровне commander'а сделать, типа Unknown option
There was a problem hiding this comment.
как это правильно сделать? у нас сейчас в commander'е включена опция allowUnknownOption, чтобы можно было передавать опции для gemini дальше. отключить мы ее не можем.
There was a problem hiding this comment.
ну тогда:
if (opts.diff && !opts.new) {
return DiffUpdater
}
if (!opts.diff && opts.new) {
return new NewUpdater
}
return MetaUpdaterи хоть трава не расти
Это паттерн |
There was a problem hiding this comment.
а не будет проблем, что это вызывается в двух местах?
gemini/lib/capture-processor/tester.js
Line 14 in bfc0e75
There was a problem hiding this comment.
он только трекает все изменения темповой директории. Ну и тестер не будет вызываться, когда используется update
db1e6a5 to
a121887
Compare
There was a problem hiding this comment.
нехорошо использовать чужие private/protected методы. MetaUpdater можно унаследовать от CaptureProcessor и переопределить processCapture
There was a problem hiding this comment.
Хотя блин, тогда вся общая логика будет повторяться два раза
There was a problem hiding this comment.
ладно, пускай будет как есть
|
На meta-updater можно написать только те тесты, которых нет в двух других - типа что там все не запускается по два раза. Ну и еще несколько комплексных: типа 'если есть diff и есть тест без эталона', или 'есть diff, но нет теста без эталона', 'нет diff'а, но есть тест без эталона', 'нет нихрена' |
There was a problem hiding this comment.
не зачем, лучше сразу в тестах писать ImageProcessor.prototype.blabla.returns... тогда сразу понятно, что любой инстанс вернет такое значение
There was a problem hiding this comment.
я ее создал, чтобы мне было удобней и короче писать :(
There was a problem hiding this comment.
короче - не всегда понятнее
Если ты видешь в коде теста:
ImageProcessor.prototype.blaBla.returns(true);то сразу становится понятно, что любой инстанс ImageProcessor'а при вызове blaBla вернет true
А если видишь
imageProcessor.blaBla.returns(true);то нужно узнать, что это за imageProcessor такой (причем создается впечатление, что как раз и есть какой-то конкретный инстанс), где он создается, кем возвращается
// cc @j0tunn @SwinX @leonsabr