gameoflife's People
gameoflife's Issues
Разделить на слои более явно
Сейчас, во-первых, нестандартные имена. life
играет роль модели, лучше так и назвать файл и модуль как model
. Вместо controller
у тебя сейчас ui
. Внутри моделей есть обращение во вью и даже вызов view.render(lifeCells)
- это все мешанина. Контроллер должен быть связующим звеном, а модель и вью про друг друга в идеале вообще знать не должны :)
ES6 transition
Так как в 2016ом году ES6 является де факто стандартом в веб разработке, обязательно нужно перевести проект на ES6. Вот краткое ревью ЕS6 http://es6-features.org/#Constants .
В файле model.js вполне возможно (и даже нужно) отрефакторить огромное if условие с использованием switch'а и, возможно, тернарных операторов. Вот одна из возможных стратегий https://goo.gl/WvKzq8
Ещё обязательно нужно поставить ESLint ( http://eslint.org/ ) и настроить простой галп таск который будет проверять код на ошибки стиля. Мы пользуется стайлгайдом от AirBnB, соответственно файл .eslintrc нужно настроить должным образом.
Refactoring for model.js
File: assets/js/src/model.js
Line: 13
Snippet: $.each(model.matrix, function(index, matrix) {
To do:
- Replace model.matrix with this.matrix, it should work too, but will remove dependency from variable from closure;
- Replace function instruction with arrow function.
- Instead of $.each you may be want to use native iterator function matrix.forEach.
Изменение текста статуса - этo view
А у тебя сейчас это меняется в контроллере. Не надо контроллеру лезти в DOM
Создать package.json
Туда вынести описание проекта, зависимости, две команды, чтоб можно было команды оставить
npm run build
Запускать тесты автоматически
Запускать все тесты автоматически без явного перечисления методов и без кнопки-триггера.
Сделать сборку на вотчерах
Чтобы после каждого изменения не надо было руками пересобирать ассеты, можно заюзать такую штуку как watchers. Она будет автоматом следить за изменениями в файлах и пересобирать все.
Собеседование
Кристина, осталось только встретиться и обсудить успехи обучения, посмотреть, что из теории улеглось в памяти и обсудить работу :)
По airBnB надо упростить проверку
cells[iy + matrix[0]] === undefined || cells[iy + matrix[0]][ix + matrix[1]] === undefined
не надо
а надо !cells[iy + matrix[0]] || !cells[iy + matrix[0]][ix + matrix[1]]
Состояние игры хранить в модели.
Сейчас у тебя состояние, жива клетка или нет, хранится в клетке таблицы - это плохо, так как view должно только отображать. На него нельзя полагаться, как на достойный источник информации :)
Поэтому в идеале проверку, жива клетка или нет, надо делать в модели (вместо if ($(this).hasClass('dead'))
). Так же надо менять свойства клетки именно в модели, а вью просто перерендерить в соответсвии с новым состоянием модели (это я про текущую строку view.setState(y, x, 'alive');
)
Координаты хранить в разных атрибутах
Сейчас ты их сохраняешь в id у элемента, разделив решеткой. Лучше используй атрибуты, наподобие data-ordinate
и data-abscissa
.
Не мешать vanilla.js и jQuery
Если проект создан на jQuery и активно его использует - лучше этому следовать везде :)
Это помогает код более читаемым сделать, как минимум, так как
var row = document.createElement("tr");
менее читаемый вариант, чем
var row = $("<tr></tr>");
и соответственно в view.table положить jQuery-обернутые объект:
table: document.getElementById("view"),
заменить на
table: $("#view"),
Лучше все действия с модулями делать через методы, а не править свойства напрямую
То есть model.timer = ...
внутри контроллера - не есть хорошо :)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.