Структурирование Coffeescript и использование ключевого слова @ - PullRequest
2 голосов
/ 25 ноября 2011

Это, вероятно, очень простые вещи, но я застрял и немного не в себе.

Я недавно написал игру Snake на CoffeeScript, но я совсем не доволен тем, как структурировал код .

Я пытаюсь переписать это с помощью классов.У меня есть класс Game, класс Snake, класс Food.В моей голове есть смысл сделать это таким образом.Однако для доступа к переменным и функциям я использую ключевое слово '@' (this) и чувствую, что полностью переусердствовал.Например, у меня есть список констант в верхней части моего класса Game.Я должен был объявить их всех как @CONSTANT, чтобы иметь к ним доступ.Или внутри метода:

clearCanvas: ->
    @ctx.clearRect 0, 0, @canvas.width, @canvas.height

То же самое относится и к вызовам методов.Например:

init: ->
    window.snake = new Snake()
    @showStartScreen()

Может кто-нибудь сказать мне, нормально ли это делать, или как я должен структурировать свой код?Я могу поставить ссылку на код, с которым я работаю в данный момент, если кто-то будет так любезен, чтобы проверить его для меня.(Изменить: на самом деле здесь это )

Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 25 ноября 2011

Если вы используете классы CoffeeScript, вы будете интенсивно использовать @. Любые свойства ваших объектов должны быть доступны через @ или this. Вот как вы должны использовать константы:

class Game
  up:     1
  right:  2
  down:   4
  left:   8

  someMethod: ->
    console.log @up, @right, @down, @left

console.log "Class accessible #{Game::up}"

g = new Game
console.log "Object accessinble #{g.up}"

g.someMethod()

Кроме того, @thejh прав. Вы должны использовать мягкие вкладки с шириной в 2 поля.

2 голосов
/ 25 ноября 2011

Помимо вкладок (вместо них следует использовать пробелы), он выглядит хорошо для меня.Да, и точка с запятой в последней строке не должна быть там.:)

...