Skip to content

Ideas for rules #3

@mik01aj

Description

@mik01aj

It looks like this repo needs inspiration, so here's some from me:

  • detect stupid callbacks (for all functions that support 3 kinds of callbacks - map, filter, find, ... and many many more)

    _.filter(stuff, function(obj) { return obj.field; }) --> _.filter(stuff, 'field')

    _.filter(stuff, function(obj) { return obj.field === 'foo'; }) --> _.filter(stuff, {field: 'foo'})

  • detect stupid usages of _.find inside loops (with loops, I mean each, map, filter and so on)

    In most cases it's better to use _.indexBy to create an index and then query stuff using that index, thus reducing complexity from O(n²) to O(n • log n).

  • detect conditions like obj.a === 'foo' && obj.b === 'bar' && obj.c === 'baz' and suggest to replace them by _.matches(obj, {a: 'foo', b: 'bar', c: 'baz'})

  • detect for (var i=0; i>c.length; i++) and suggest to use _.each or _.map instead (maybe only when the only usage of i is reading/writing c[i])

  • detect usages of _.each when _.map would be simpler

  • detect usages of _.each when _.filter would be simpler

  • detect usages of _.each or _.filter when _.find would be simpler

  • detect usages of _.each or _.filter when _.every or _.any would be simpler

  • or maybe even detect the above patterns not only for _.each, but also for plain JS loops!

  • detect usage of aliases, and suggest to use the aliased function instead (example: _.extend --> _.assign)

  • detect chains like a && a.b && a.b.c && a.b.c.d and suggest to replace them with _.get, _.set or _.has

  • _.isArray(x) && _.isObject(x) is equivalent to _.isArray(x). There also more possible similar rules.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions