Форум

Замечания по коду

23 февраля 2016 15:27
Строки от 2058 blend4web_sdk_free_16_01\src\geometry.js :
Возможно нехватает break после нахождения блока данных по ключу (для скорости)?

exports.apply_shape_key = function(obj, key_name, new_value) {

//NOTE: only applies shape key for the first scene
var batches = obj.scenes_data[0].batches;
var sk_data = obj.render.shape_keys_values;

for (var i = 1; i < sk_data.length; i++)
if (sk_data["name"] == key_name)
sk_data["value"] = new_value;

for (var i = 0; i < batches.length; i++) {
23 февраля 2016 17:59
навскидку этот код неправильным не является, потому что для разных элементов sk_data это условие может выполняться неоднократно.

а вот за отсутствие скобок у тела цикла и if хочется кого-нибудь убить. не экономьте место пожалуйста

23 февраля 2016 20:02
а вот за отсутствие скобок у тела цикла и if хочется кого-нибудь убить. не экономьте место пожалуйста

Резонное замечание.
Команда Blend4Web
kirill@blend4web.com
24 февраля 2016 00:03
Ответ на сообщение пользователя v1vendi
а вот за отсутствие скобок у тела цикла и if хочется кого-нибудь убить. не экономьте место пожалуйста
Когда я учился программированию, мне говорили, что лишняя фигурная или круглая скобка никогда не повредит, поскольку позволит "не сомневаться". Сейчас я думаю иначе, нужно знать порядок вычисления операций и работу составных операторов идеально, при таких условиях отсутствие скобки улучшает чистоту и читабельность кода .
Команда Blend4Web
https://twitter.com/AlexKowel
24 февраля 2016 12:45
Александр, это просто выглядит слишком неконсистентно. Когда в пределах одной функции смешиваются разные стили - это очень сильно сбивает с толку, вот такую конструкцию из вашего кода считаю абсолютно неприемлемой
    if (bin_name)
        thread.binary_name = bin_name;
    else {
        m_loader.skip_stage_by_name(thread, "load_binaries");
        m_loader.skip_stage_by_name(thread, "prepare_bindata");
    }


Ну и всё-таки абсолютное большинство соглашений по оформлению кода не рекомендуют такой подход
24 февраля 2016 15:05
Я думаю, что тут смешения стилей нет, поскольку в первом случае отсутствие скобок явно указывает на один оператор, во втором на множество. Ну это уже моё мнение, в случае когда скобки всё же будут присутствовать, ошибкой это считаться не будет. Но вот если бы в else был всего один оператор, то скобки были бы явным нагромождением.
Команда Blend4Web
https://twitter.com/AlexKowel
24 февраля 2016 15:50
стр. 96 JavaScript: the Good Parts, Douglas Crockford

"Code that appears to mean one thing but actually means another is likely to cause
bugs. A pair of braces is really cheap protection against bugs that can be expensive to
find."

Если бы я не прочитал эту книгу, то никогда бы не дотронулся. Теперь обожаю ;)
02 июня 2016 15:57
В версии 16.05 очень часто в коде встречаются штуки типа
return _something_;
break;


или

throw "errorMessage";
break;
02 июня 2016 16:06
И ещё удивляет, что вы решили добавить функциональность геймпада непосредственно в модуль 'input', а не вынесли её в отдельный модуль
02 июня 2016 18:51
Мы считаем, что такой стиль вполне допустим. Если выражение изменится, не придётся добавлять ещё один break.

И ещё удивляет, что вы решили добавить функциональность геймпада непосредственно в модуль 'input', а не вынесли её в отдельный модуль
Модуль input создавался, чтобы быть максимально универсальным, поскольку любое устройство ввода может быть представлено как изменение чисел во времени. Кроме того, это сейчас кажется, что геймады несколько необычные устройства, по мере продвижения VR они будут в том или ином виде у многих.
Команда Blend4Web
https://twitter.com/AlexKowel
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.