1
0
mirror of https://github.com/ascribe/onion.git synced 2024-11-15 09:35:10 +01:00
onion/js/sources/NAMING_CONVENTIONS.md

2.0 KiB

Naming conventions for sources

Introduction

When using alt.js's sources, we don't want the source's method to clash with the store/action's method names.

While actions will still be named by the following schema:

<verb><ObjectToManipulateInTheStore>

e.g.

fetchCurrentUser
logoutCurrentUser
fetchApplication
refreshApplicationToken

we cannot repeat this for a sources' methods as patterns like this would emerge in the stores:

onFetchCurrentUser(invalidateCache) {
    this.invalidateCache = invalidateCache;

    if(!this.getInstance().isLoading()) {
        this.getInstance().fetchCurrentUser(); // does not call a flux "action" but a method in user_source.js - which is confusing
    }
}

Therefore we're introducing the following naming convention:

Rules

  1. All source methods that perform a data lookup of any kind (be it cached or not), are called lookup<ObjectToManipulateInTheStore>. As a mnemonic aid, "You lookup something in a source".
  2. Promise-based callback methods - provided by alt.js - prepend their action, followed by ObjectToManipulateInTheStore (e.g. error<ObjectToManipulateInTheStore>)
  3. For all methods that do not fit 1.), we prepend perform.

Examples

Examples for Rule 1.)

HTTP GET'ing the current User

UserActions.fetchCurrentUser
UserStore.onFetchCurrentUser
UserSource.lookupCurrentUser

Examples for Rule 2.)

This talks about the naming in an actual *_source.js file:

    lookupCurrentUser: {
        success: UserActions.successFetchCurrentUser, // 'success<ObjectToManipulateInTheStore>'
        error: UserActions.errorCurrentUser, // 'error<ObjectToManipulateInTheStore>'
    },

Examples for Rule 3.)

HTTP GET'ing a certain user endpoint, that logs the user out :sad_face:(, as this should not be a GET request anyway)

UserActions.logoutCurrentUser
UserStore.onLogoutCurrentUser
UserSource.performLogoutCurrentUser