Skip to content
This repository has been archived by the owner on Sep 21, 2022. It is now read-only.

Fix up sets logic #568

Merged
merged 1 commit into from
Aug 30, 2016
Merged

Fix up sets logic #568

merged 1 commit into from
Aug 30, 2016

Conversation

rostik404
Copy link
Contributor

@rostik404 rostik404 commented Aug 26, 2016

@levonet levonet added the review label Aug 26, 2016
@coveralls
Copy link

coveralls commented Aug 26, 2016

Coverage Status

Coverage increased (+0.09%) to 81.588% when pulling fa9f2ec on fix-sets into eed63f8 on master.

@coveralls
Copy link

coveralls commented Aug 26, 2016

Coverage Status

Coverage increased (+0.09%) to 81.588% when pulling d2148fc on fix-sets into eed63f8 on master.

@coveralls
Copy link

coveralls commented Aug 26, 2016

Coverage Status

Coverage increased (+0.09%) to 81.588% when pulling dd391a0 on fix-sets into eed63f8 on master.

module.exports = (cli, config, emitter) => {
const geminiPath = path.resolve(config.system.projectRoot, 'gemini');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

если у нас будут переданы файлы или сэты будут не пустыми, то этот путь высчитывается вхолостую. Лучше унести куда-нибудь в отдельную функцию и позвать при необходимости

@coveralls
Copy link

coveralls commented Aug 29, 2016

Coverage Status

Coverage increased (+0.2%) to 81.69% when pulling d476b62 on fix-sets into eed63f8 on master.

3 similar comments
@coveralls
Copy link

Coverage Status

Coverage increased (+0.2%) to 81.69% when pulling d476b62 on fix-sets into eed63f8 on master.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.2%) to 81.69% when pulling d476b62 on fix-sets into eed63f8 on master.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.2%) to 81.69% when pulling d476b62 on fix-sets into eed63f8 on master.

return _.intersection(filesToFilter, this._files);
}

return this._files;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return _.isEmpty(files)
    ? this._files
    : _.intersection(this._files, files);

Copy link
Contributor

@tormozz48 tormozz48 Aug 29, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Или вот так:

if (_.isEmpty(filesToFilter)) {
    filesToFilter = this._files;
}

return _.intersection(filesToFilter, this._files);

@tormozz48
Copy link
Contributor

Посмотрел

@j0tunn
Copy link
Contributor

j0tunn commented Aug 29, 2016

/ok только не забудь посквошить и удалить calibrate.min.js

@coveralls
Copy link

coveralls commented Aug 29, 2016

Coverage Status

Coverage increased (+0.2%) to 81.658% when pulling 577a87f on fix-sets into eed63f8 on master.

@coveralls
Copy link

coveralls commented Aug 29, 2016

Coverage Status

Coverage increased (+0.2%) to 81.658% when pulling 577a87f on fix-sets into eed63f8 on master.

1 similar comment
@coveralls
Copy link

Coverage Status

Coverage increased (+0.2%) to 81.658% when pulling 577a87f on fix-sets into eed63f8 on master.

@coveralls
Copy link

coveralls commented Aug 30, 2016

Coverage Status

Coverage increased (+0.2%) to 81.698% when pulling 7390585 on fix-sets into a73ca63 on master.

@tormozz48
Copy link
Contributor

🆗

@@ -0,0 +1,9 @@
'use strict';

const FilesFilter = require('./index');
Copy link
Contributor

@eGavr eGavr Aug 30, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

можно просто require('./')

@eGavr
Copy link
Contributor

eGavr commented Aug 30, 2016

ИМХО, спорный момент, что это решение понятнее и проще 😄

но общий счет 2:1, поэтому

🆗

@coveralls
Copy link

coveralls commented Aug 30, 2016

Coverage Status

Coverage increased (+0.2%) to 81.698% when pulling f5d3c88 on fix-sets into a73ca63 on master.

if (!_.isEmpty(files)) {
this._set.files = _.intersection(files, this._set.files);
}
this._set.files = this._filesFilter.filter(files);
Copy link
Contributor

@SevInf SevInf Aug 30, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Эээ, ребят, вы серьезно?
3 класса, 1 из которых абстрактный вместо того чтобы сделать

if (isEmpty(this._set.files) {
    return files;
} else if (isEmpty(files)) {
   return this._set.files;
} else {
   return _.intersection(files, this._set.files);
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я бы добавил ещё фабрику для создания фильтров, чтобы не реквайрить 2 файла

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Даешь больше классов ;) и огнетушитель...

Copy link
Contributor

@j0tunn j0tunn Aug 30, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

здесь два разных поведения. Причем это отличие известно на этапе создания объекта:

  • this._set.files - пустые, используем все переданные файлы
  • this._set.files - не пустые, используем пересечение

Зачем оставлять это знание в рантайме? Почему бы не унести на этап создания объекта. Вас смущает, что объекты с одним методом или что?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В плане рантайма это ничего экономит. filterFiles все равно зовется ровно один раз на каждый сет, что так, что так. В плане читаемости, вы правда уверены что эта череда классов удобнее чем 5 строчек, из которых явно видно что вернется или единственный непустой массив, или их пересечение?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет, не уверены :) Но тут не череда классов, а еще один уровень абстракции (причем легонький).
И тут ничего не возвращается, а устанавливается. Так что код будет выглядеть как-то так:

if (isEmpty(this._set.files)) {
    this._set.files = files;
} else if (!isEmpty(files)) {
    this._set.files = _.intersection(files, this._set.files);
}

Такая конструкция читается чуть сложнее: тут три ветки, цикломатическая сложность кода выше и сконцентрирована в одном методе.
Хотя, конечно, возможно и перемудрили

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну, ничего не межает логику вынести в приватный метод, а в filterFiles оставить только

this._set.files = this._getFilteredFiles(files);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а это правда будет проще, чем вариант с фильтрами?

@coveralls
Copy link

coveralls commented Aug 30, 2016

Coverage Status

Coverage increased (+0.2%) to 81.698% when pulling d82ccbe on fix-sets into a73ca63 on master.

@@ -24,10 +27,22 @@ const loadSuites = (sets, emitter) => {
return rootSuite;
};

const filesExist = (configSets, cliPaths) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А почему вы тут присваиваете анонимные функции, присвоенные в переменную а не используете каноничное function ?

@coveralls
Copy link

coveralls commented Aug 30, 2016

Coverage Status

Coverage increased (+0.2%) to 81.698% when pulling 3a27479 on fix-sets into 09e15e6 on master.

@coveralls
Copy link

coveralls commented Aug 30, 2016

Coverage Status

Coverage increased (+0.1%) to 81.653% when pulling c627c71 on fix-sets into 09e15e6 on master.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants