Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Покритикуйте код. Вопрос к знатокам паттернов и правильного кода. (https://javascript.ru/forum/misc/58206-pokritikujjte-kod-vopros-k-znatokam-patternov-i-pravilnogo-koda.html)

kuzroman 09.09.2015 14:34

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

Мне например не нравится что есть внешние переменные
вроде engravingText.currentX - нужно ли от них избалвяться?
Но по другому я не знал как реализовать изменение этих данных чтобы можно было их читать сразу 2мя классами
LoaderLetters и Bit

Так же мне кажется реализация метода LoaderLetters.showText
корявой, т.е. что в ней находится обработка анимации не только букв но и canvas

http://jsfiddle.net/kuzroman/qsw1yazs/

Буду рад любой здравой критике. Спасибо!

alex.vv 09.09.2015 15:34

Я бы сказал, что лучше один раз использовать функцию-конструктор, в которой определить все методы для экземпляра соответствующего объекта - читается проще. Параметры лучше передавать в виде объекта-аргумента при инциализации экземпляра - так число передаваемых параметров можно задавать произвольно, при необходимости можно обрабатывать передаваемые параметры при инициализации и т.д.

Цитата:

Мне например не нравится что есть внешние переменные
вроде engravingText.currentX - нужно ли от них избалвяться?
Если считаете, что данная переменная должна быть недоступна для внешнего клиента - инкапсулируйте ее, при необходимости предоставив доступ к ней через заранее определенные методы (замыкания) типа engravingText.getCurrentCoords(), engravingText.setCurrentCoords(). В большинстве случаев такая инкапусляция считается хорошей практикой, например http://jsfiddle.net/yykc6Lk9/

Erolast 09.09.2015 15:42

Цитата:

покритикуйте код плиз
Ну, как минимум, код почему-то до сих пор на ES5, когда еще в июне произошел релиз ES6.

kuzroman 09.09.2015 16:16

Ну причина одна, ES6 далеко не во всех браузерах работает, и пока все его реализации добавят хотябы в 4ку лидеров пройдет пара лет)
http://kangax.github.io/compat-table/es6/
Но согласен готовиться стоит, конечно.

Lemme 09.09.2015 16:39

kuzroman, кто то для меня "открыл" babel, теперь я его "открою" для тебя.

https://babeljs.io/

И вот - тоже полезно.
http://learn.javascript.ru/es-modern-usage

kuzroman 09.09.2015 18:19

Примного благодарен!


Часовой пояс GMT +3, время: 23:05.