Оцените пожалуйста и мой код
От: Sorc17 Россия  
Дата: 14.09.11 10:43
Оценка:
Что-то зачастили темы с просьбами оценить качество кода и я решил тоже создать. А что? Я тоже хочу чтобы мне сказали что я ни на что не годный б***локодер

Вот, отдаю на суд тем кому не лень заглянуть в чужой код свою писанину на яваскрипте. Это класс игрока для для одной простенькой РПГшки, в которой пока ничего нельзя делать кроме как ходить по карте и чатится в чате.

http://code.google.com/p/iivgprg/source/browse/trunk/client/Player.js

Есть ли шанс стать хорошим программистом или я 5 лет в институте и 2 года работы программистом на разных работах потратил зря? Яваскрипт изучал сам по справочникам и гуглу.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re: Оцените пожалуйста и мой код
От: mogikanin Россия  
Дата: 14.09.11 10:47
Оценка: +1
S>Есть ли шанс стать хорошим программистом или я 5 лет в институте и 2 года работы программистом на разных работах потратил зря? Яваскрипт изучал сам по справочникам и гуглу.

Есть шанс, только зачем столько комментов в коде. От них в глазах рябит.
Re[2]: Оцените пожалуйста и мой код
От: Sorc17 Россия  
Дата: 14.09.11 10:51
Оценка:
Здравствуйте, mogikanin, Вы писали:

S>>Есть ли шанс стать хорошим программистом или я 5 лет в институте и 2 года работы программистом на разных работах потратил зря? Яваскрипт изучал сам по справочникам и гуглу.


M>Есть шанс, только зачем столько комментов в коде. От них в глазах рябит.


Ну я боялся что кто-то ещё будет со мной пилить клиент и ничего не поймёт
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re: Оцените пожалуйста и мой код
От: Roman Odaisky Украина  
Дата: 14.09.11 10:58
Оценка: 9 (1)
Здравствуйте, Sorc17, Вы писали:

S>http://code.google.com/p/iivgprg/source/browse/trunk/client/Player.js


Вроде прилично. Бросаются в глаза объявления переменных, по-паскалевски сваленные в начало функции (лучше ставить var при первом использовании), и непоследовательное использование точек с запятой (если всегда их ставить, сообщения об ошибках в случае неверной расстановки скобок будут намного понятнее).

В комментариях хорошо бы прояснять, какие именно эффекты имеет каждая функция, сейчас методы изменяют состояние класса как хотят и неясно, что может измениться после вызова данной функции, а что нет.
До последнего не верил в пирамиду Лебедева.
Re: Оцените пожалуйста и мой код
От: monax  
Дата: 14.09.11 11:09
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>http://code.google.com/p/iivgprg/source/browse/trunk/client/Player.js


Сам код оставил нормальное впечатление. Но есть у меня несколько замечаний:

  1. В конце строк нет ; если код будет в таком виде отправлен клиенту, то ок, а если его нужно будет прогнать через упаковщик, то могут быть проблемы.
  2. Переменные объявляются в начале методов, а используются в конце. Тут у каждого свой вкус, я объявляю переменные непосредственно перед их использованием.
  3. Разные типы комментариев для полей. Это усложняет автоматическую генерацию документации.
     /**
         * Идентификатор игрока.
         */
        this.id = id;
    
        // Положение относительно карты в клетках по ширине.
        this.j = j;

  4. Обе функции создают объекты? Если да, то почему разный подход?
    function Player(id, mapId, j, i, name, spriteLoader, speed) {
    
        // Эту функцию можно вызвать только как конструктор (с new).
        if (this.constructor !== arguments.callee) {
            throw new Error("Constructor called like a simple function!");
        }
    
    ............
    
    /**
     *  Точка пути.
     */
    function WayPoint(x, y, v, t, diag) {
        this.x = x          // X координата точки пути.
        this.y = y          // Y координата точки пути.
        this.v = v          // Скорость движения в эту точку пути из предыдущей точки пути в пикселях в милисекунду.
        this.t = t          // Время прибытия в эту точку пути.
        this.diag = diag    // Лежит ли эта точка пути и предыдущая точка пути на диагонали.
    
        return this
    }
Re[2]: Оцените пожалуйста и мой код
От: Sorc17 Россия  
Дата: 14.09.11 11:17
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>по-паскалевски сваленные в начало функции


По работе часто пишу на Си (без ++) Наследие прошлого!

RO>непоследовательное использование точек с запятой (если всегда их ставить, сообщения об ошибках в случае неверной расстановки скобок будут намного понятнее).


А точки с запятой значит всё же лучше ставить? Я по началу везде ставил, но потом понял что можно не ставить и перестал. Видимо зря

RO>В комментариях хорошо бы прояснять, какие именно эффекты имеет каждая функция, сейчас методы изменяют состояние класса как хотят и неясно, что может измениться после вызова данной функции, а что нет.


Да, мне и самому это не нравится. Даже сейчас, пока кода не много, когда я собираюсь использовать поле какого-то класса, я начинаю напрягаться и думать: а могу ли я его использовать и на что это может повлиять. Приходится Find Usages делать и смотреть. Наверное совсем без этого никак, но неприятный осадок где-то в глубине души остаётся.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re: Оцените пожалуйста и мой код
От: UA Украина  
Дата: 14.09.11 11:19
Оценка: +3 -1
Здравствуйте, Sorc17, Вы писали:

JS не тру язык, оценить на нем мастерство и полет мысли невозможно. Какой код на нем не напиши, он будет выглядеть всегда как быдлокод.
Re[2]: Оцените пожалуйста и мой код
От: Sorc17 Россия  
Дата: 14.09.11 11:29
Оценка:
Здравствуйте, monax, Вы писали:

Ох, в WayPoint я поленился добавить проверку. Надо исправить.

Спасибо за отзыв!
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re[3]: Оцените пожалуйста и мой код
От: wander  
Дата: 14.09.11 11:38
Оценка: 10 (2)
Здравствуйте, Sorc17, Вы писали:

S> RO>по-паскалевски сваленные в начало функции


S> По работе часто пишу на Си (без ++) Наследие прошлого!


Многие почему-то не знают, что в Си (без ++) переменные определяются вначале блока, любого, а не только функции. То есть:
void foo()
{
   int a = 0;
   if(a == 0)
   {
       int b = 1;
       // some code...
   }
   // some code...
}
avalon 1.0rc3 build 426, zlib 1.2.3
Re[2]: Оцените пожалуйста и мой код
От: Roman Odaisky Украина  
Дата: 14.09.11 12:03
Оценка:
Здравствуйте, UA, Вы писали:

UA>JS не тру язык, оценить на нем мастерство и полет мысли невозможно. Какой код на нем не напиши, он будет выглядеть всегда как быдлокод.


JS трее всех трых. Там функции — первоклассные объекты, что еще нужно для счастья?
До последнего не верил в пирамиду Лебедева.
Re[4]: Оцените пожалуйста и мой код
От: Sorc17 Россия  
Дата: 14.09.11 12:55
Оценка: -2
Здравствуйте, wander, Вы писали:

W>Здравствуйте, Sorc17, Вы писали:


S>> RO>по-паскалевски сваленные в начало функции


S>> По работе часто пишу на Си (без ++) Наследие прошлого!


W>Многие почему-то не знают, что в Си (без ++) переменные определяются вначале блока, любого, а не только функции. То есть:

W>
W>void foo()
W>{
W>   int a = 0;
W>   if(a == 0)
W>   {
W>       int b = 1;
W>       // some code...
W>   }
W>   // some code...
W>}
W>


А в старых стандартах было нельзя :3 Видимо с тех времён так и остались рекомендации писать переменные в начале функции. Так же говорят о том, что полезно переменные объявлять в начале функции чтобы они сразу были на виду. Наследие в общем.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re: Оцените пожалуйста и мой код
От: uuu84  
Дата: 14.09.11 13:36
Оценка:
Оформление неплохое. Но я вижу потенциальный баг: перемещения фигур завязаны на пиксели, а скорость измеряется в пикселях в миллисекунду. Это плохо, ибо создаёт проблемы с масштабированием игрового поля. Решение очевидно: нужно отделить "функциональную карту" от её графического представления т.е. координатами фигуры должны быть игровые клетки или субклетки ("виртуальные пиксели").
Re: Оцените пожалуйста и мой код
От: elmal  
Дата: 14.09.11 13:57
Оценка: +1
Здравствуйте, Sorc17, Вы писали:

S>Есть ли шанс стать хорошим программистом или я 5 лет в институте и 2 года работы программистом на разных работах потратил зря? Яваскрипт изучал сам по справочникам и гуглу.

По такому коду сложно судить, тем более это JavaScript, там свои особенности. Но могу сказать, что пишешь лучше 80% людей, отучившихся 5 лет в институте и имеющих опыт работы 2 года. Лично я особо ничего такого страшного не нашел (а я придирчивый). Единственно — переменные лучше не объявлять в паскалевском стиле, как тебе сказали. Нужна паременная — объяви как можно ближе к месту использования и сразу присвой значение.
Re[2]: Оцените пожалуйста и мой код
От: Miroff Россия  
Дата: 14.09.11 14:10
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Вроде прилично. Бросаются в глаза объявления переменных, по-паскалевски сваленные в начало функции (лучше ставить var при первом использовании)


Это крокфордовская конвенция. Малость устарела, но вполне годная. Аргументируется тем, что в отличие от привычных языков в JS не block scope поэтому объявление переменных в блоке может здорово смутить программиста не читавшего стандарта.
Re[3]: Оцените пожалуйста и мой код
От: __kot2  
Дата: 14.09.11 15:01
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, UA, Вы писали:
UA>>JS не тру язык, оценить на нем мастерство и полет мысли невозможно. Какой код на нем не напиши, он будет выглядеть всегда как быдлокод.
RO>JS трее всех трых. Там функции — первоклассные объекты, что еще нужно для счастья?
а разве это логично?
Re: Оцените пожалуйста и мой код
От: -VaS- Россия vaskir.blogspot.com
Дата: 14.09.11 18:09
Оценка:
Это ужас:

function Player(id, mapId, j, i, name, spriteLoader, speed)

В динамических языках аргументы нужно именовать особенно тщательно. И их очень-очень много.
Re[4]: Оцените пожалуйста и мой код
От: Roman Odaisky Украина  
Дата: 14.09.11 18:54
Оценка:
Здравствуйте, __kot2, Вы писали:

UA>>>JS не тру язык, оценить на нем мастерство и полет мысли невозможно. Какой код на нем не напиши, он будет выглядеть всегда как быдлокод.

RO>>JS трее всех трых. Там функции — первоклассные объекты, что еще нужно для счастья?
__>а разве это логично?

Не понял вопроса, но возможность передавать функции аргументами и возвращать функции из функций очень важна. Посмотри хотя бы на jQuery.
До последнего не верил в пирамиду Лебедева.
Re: Оцените пожалуйста и мой код
От: Безон Великобритания  
Дата: 14.09.11 20:09
Оценка:
Странно, что функции не вынесены в прототип, вроде же они одинаковые для всех объектов типа Player?

Здравствуйте, Sorc17, Вы писали:

S>Что-то зачастили темы с просьбами оценить качество кода и я решил тоже создать. А что? Я тоже хочу чтобы мне сказали что я ни на что не годный б***локодер


S>Вот, отдаю на суд тем кому не лень заглянуть в чужой код свою писанину на яваскрипте. Это класс игрока для для одной простенькой РПГшки, в которой пока ничего нельзя делать кроме как ходить по карте и чатится в чате.


S>http://code.google.com/p/iivgprg/source/browse/trunk/client/Player.js


S>Есть ли шанс стать хорошим программистом или я 5 лет в институте и 2 года работы программистом на разных работах потратил зря? Яваскрипт изучал сам по справочникам и гуглу.
-----
Re: Оцените пожалуйста и мой код
От: zakima Канада  
Дата: 14.09.11 21:08
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Что-то зачастили темы с просьбами оценить качество кода и я решил тоже создать. А что? Я тоже хочу чтобы мне сказали что я ни на что не годный б***локодер


S>Вот, отдаю на суд тем кому не лень заглянуть в чужой код свою писанину на яваскрипте. Это класс игрока для для одной простенькой РПГшки, в которой пока ничего нельзя делать кроме как ходить по карте и чатится в чате.


S>http://code.google.com/p/iivgprg/source/browse/trunk/client/Player.js


S>Есть ли шанс стать хорошим программистом или я 5 лет в институте и 2 года работы программистом на разных работах потратил зря? Яваскрипт изучал сам по справочникам и гуглу.


Мне кажется, что лучше переменные называть нормально, а не использовать однобуквенные переменные. Как результат комментариев будет нужно меньше и когда смотришь на переменную в коде, то не нужно будет постоянно идти наверх и смотреть что же она значит.
Re: Оцените пожалуйста и мой код
От: _Obelisk_ Россия http://www.ibm.com
Дата: 15.09.11 04:51
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Что-то зачастили темы с просьбами оценить качество кода и я решил тоже создать. А что? Я тоже хочу чтобы мне сказали что я ни на что не годный б***локодер


S>Вот, отдаю на суд тем кому не лень заглянуть в чужой код свою писанину на яваскрипте. Это класс игрока для для одной простенькой РПГшки, в которой пока ничего нельзя делать кроме как ходить по карте и чатится в чате.


S>http://code.google.com/p/iivgprg/source/browse/trunk/client/Player.js


S>Есть ли шанс стать хорошим программистом или я 5 лет в институте и 2 года работы программистом на разных работах потратил зря? Яваскрипт изучал сам по справочникам и гуглу.


Много комментариев. Лучше использовать говорящие имена перменных/функций и стараться избегать тавтологий в духе

/**
 * Идентификатр карты, на котрой находится игрок.
*/
    this.mapId = mapId



Душа обязана трудиться! (с) Н.Заболоцкий.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.