Skip to content

Conversation

@ZebulanStanphill
Copy link
Member

@ZebulanStanphill ZebulanStanphill commented Jul 2, 2020

Description

See title. Optional chaining and nullish coalescing are (recent) standard JS features that we already use across our codebase, so this PR helps increase consistency by updating cases where we were using Lodash.get. The native JS syntax is also a lot easier to comprehend, in my opinion.

Since there are a lot of places where _.get is being used right now, I'm doing this one package at a time, to make it easier to review.

It's worth noting there are a few cases where using _.get actually does make sense: cases where the object path has a dynamic level of nesting, which as far as I am aware, cannot be expressed using optional chaining. Those cases have been left unchanged.

This is part of a series of code quality PRs I am working on. The long-term goal is to reduce lodash usage in cases where a standard JS function/syntax works just as well or better, which should reduce our packages' bundle sizes for 3rd parties using them. This will also increase clarity by making nullish value handling more explicit (Lodash often silently ignores nullish values) and avoiding the use of external libraries when simple equivalents exist in standard JS.

@ZebulanStanphill ZebulanStanphill added [Type] Code Quality Issues or PRs that relate to code quality Good First Review A PR that's suitable for someone looking to contribute for the first time by reviewing code [Package] Block editor /packages/block-editor labels Jul 2, 2020
@github-actions
Copy link

github-actions bot commented Jul 2, 2020

Size Change: +87 B (0%)

Total Size: 1.17 MB

Filename Size Change
build/block-editor/index.js 129 kB +87 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.52 kB 0 B
build/api-fetch/index.js 3.35 kB 0 B
build/autop/index.js 2.72 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 8.53 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/style-rtl.css 11.1 kB 0 B
build/block-editor/style.css 11.1 kB 0 B
build/block-library/editor-rtl.css 8.57 kB 0 B
build/block-library/editor.css 8.58 kB 0 B
build/block-library/index.js 135 kB 0 B
build/block-library/style-rtl.css 7.61 kB 0 B
build/block-library/style.css 7.6 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-default-parser/index.js 1.78 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 47.5 kB 0 B
build/components/index.js 167 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/compose/index.js 9.42 kB 0 B
build/core-data/index.js 12 kB 0 B
build/data-controls/index.js 1.27 kB 0 B
build/data/index.js 8.43 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 4.42 kB 0 B
build/edit-navigation/index.js 10.7 kB 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.25 kB 0 B
build/edit-post/style.css 6.24 kB 0 B
build/edit-site/index.js 20.5 kB 0 B
build/edit-site/style-rtl.css 3.54 kB 0 B
build/edit-site/style.css 3.54 kB 0 B
build/edit-widgets/index.js 17.9 kB 0 B
build/edit-widgets/style-rtl.css 2.82 kB 0 B
build/edit-widgets/style.css 2.82 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/index.js 45.4 kB 0 B
build/editor/style-rtl.css 3.83 kB 0 B
build/editor/style.css 3.82 kB 0 B
build/element/index.js 4.44 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.49 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 1.74 kB 0 B
build/html-entities/index.js 621 B 0 B
build/i18n/index.js 3.55 kB 0 B
build/is-shallow-equal/index.js 709 B 0 B
build/keyboard-shortcuts/index.js 2.39 kB 0 B
build/keycodes/index.js 1.85 kB 0 B
build/list-reusable-blocks/index.js 3.02 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.12 kB 0 B
build/notices/index.js 1.69 kB 0 B
build/nux/index.js 3.27 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.44 kB 0 B
build/primitives/index.js 1.34 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13.7 kB 0 B
build/server-side-render/index.js 2.61 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.24 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.74 kB 0 B
build/warning/index.js 1.13 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@ZebulanStanphill ZebulanStanphill force-pushed the polish/remove-lodash-get-from-block-editor branch 4 times, most recently from a3d1cf9 to 7a19d11 Compare July 2, 2020 04:16
@ZebulanStanphill ZebulanStanphill force-pushed the polish/remove-lodash-get-from-block-editor branch from 7a19d11 to 7f257fa Compare July 9, 2020 20:20
@ZebulanStanphill ZebulanStanphill force-pushed the polish/remove-lodash-get-from-block-editor branch from 7f257fa to 6e4688d Compare September 26, 2020 05:35
Copy link
Contributor

@youknowriad youknowriad left a comment

Choose a reason for hiding this comment

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

I find these refactorings a bit useless tbh but 🤷‍♂️

[ 'onChange' ],
null
),
preferredStyle: preferredStyleVariations?.value?.[ blockName ],
Copy link
Contributor

Choose a reason for hiding this comment

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

In this instance, I find the previous implementation a lot more clear.

Copy link
Member Author

Choose a reason for hiding this comment

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

I dunno, it seems clearer to me. 🤔

@ZebulanStanphill ZebulanStanphill merged commit 1719dc2 into master Sep 29, 2020
@ZebulanStanphill ZebulanStanphill deleted the polish/remove-lodash-get-from-block-editor branch September 29, 2020 14:40
@github-actions github-actions bot added this to the Gutenberg 9.2 milestone Sep 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Good First Review A PR that's suitable for someone looking to contribute for the first time by reviewing code [Package] Block editor /packages/block-editor [Type] Code Quality Issues or PRs that relate to code quality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants