Использование параметров против глобальных переменных - удобочитаемость кода - PullRequest
1 голос
/ 21 июня 2019

Я пытаюсь понять разницу между читабельностью и повторением в моем коде.

Я создаю игру о жизни Конвея в Javascript. Мои функции снова и снова используют множество одних и тех же переменных, например ...

const BOARD_HEIGHT = 50
const BOARD_WIDTH = 50
let gameBoard = createGameBoard();

function createGameBoard(width, height){}
function randomizeGameBoard(gameBoard, width, height){}
function updateGameBoard(gameBoard, width, height){}
function runGameLoop(gameBoard, width, height){}

Должен ли я объявлять такие функции? Где все функции принимают одинаковые параметры ИЛИ если мои функции НЕ принимают параметры и вместо этого получают прямой доступ к часто используемым переменным (глобальным переменным)?

function createGameBoard() {do stuff with BOARD_WIDTH, BOARD_HEIGHT};
function randomizeGameBoard() {do stuff with gameBoard};

1 Ответ

2 голосов
/ 21 июня 2019

Ни глобальные переменные, ни передача переменных не являются подходящим способом (ИМО).Если вы посмотрите внимательно, ширина и высота на самом деле являются свойствами gameBoard ... и все эти функции могут быть методами класса:

  class GameBoard {
    constructor(width, height) {
      this.width = width; this.height = height;
      //...
    }

    randomize() { /*...*/ }
    update() { /*...*/ }
  }

  const board = new GameBoard();

Если есть только одна доска, тогда достаточно объекта:

  const board = {
    width: 50, height: 50,
    randomize() { /*...*/ },
    update() { /*...*/ },
  };
...