Skip to content

Suggestion: Use early return pattern to avoid nested conditions #420

Description

@jongwooo

Description

Return early is the way of writing functions or methods so that the expected positive result is returned at the end of the function and the rest of the code terminates the execution (by returning or throwing an exception) when conditions are not met.

See actions/cache#1012

In util.ts:

AS-IS

export function isCacheFeatureAvailable(): boolean {
  if (!cache.isFeatureAvailable()) {
    if (isGhes()) {
      throw new Error(
        'Caching is only supported on GHES version >= 3.5...'
      );
    } else {
      core.warning('The runner was not able to contact...');
    }

    return false;
  }

  return true;
}

TO-BE

export function isCacheFeatureAvailable(): boolean {
  if (cache.isFeatureAvailable()) {
    return true;
  }

  if (isGhes()) {
    throw new Error(
        'Caching is only supported on GHES version >= 3.5...'
    );
  }

  core.warning('The runner was not able to contact...');
  return false;
}

Metadata

Metadata

Assignees

Labels

feature requestNew feature or request to improve the current logic

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions