Задать вопрос
  • Как вычислить максимальную производительность веб-разработчика?

    jacksparrow
    @jacksparrow
    Ваш вопрос напоминает - заход в клуб байкеров с вопросом, как лучше контролировать количество мотобайков на дороге, а то их больно много. Тут огромный процент публики - разработчики, которым не нравится быть доенными коровами.
    Далее без сарказма.
    1)Ваши эксперименты по максимальной выработке начнут бесить разумных работников. Как писали в книге, мифический человеко месяц (рекомендую почитать), разработчики весьма умные люди и легко ломают ваши метрики. И будут использовать их против вас.
    2)Если человек справляется хорошо с количеством текущих задач, и по вашему мнению работают с 70-80% кпд, при загрузке на 90-100 может сильно просесть по результативности.
    3)То чем вы интересуетесь похоже на термин эффективный менеджмент, к примеру, 2 месяца работники вкалывают без сна, затем увольняются. По бумагам у вас прибыль в 2 раза, по факту спустя два месяца нет работников.
    4)Что бы оценивать работу тех. специалистов по качеству и кпд, надо хорошо понимать специфику задачи и быть в состояние ее выполнить. Да это будет субъективное мнение, но оно будет отражать ситуацию лучше чем оценка строк кода, задач, приложений.
    -----
    Вас должна устраивать по проектная/по задачная оплата, ибо вопрос о кпд человека там не сильно волнует, у задачи есть состояние выполнена и невыполнена.
    Ответ написан
    Комментировать
  • Что делать, если я не знаю какой будет "IF"?

    riot26
    @riot26
    <:З )~~
    Это ужасный быдлокод. Всё нужно переписывать.
    Ответ написан
    2 комментария
  • Какой ноут выбрать для front-end, macbook или PC?

    @Yestestvenno
    Системный администратор
    Arik абсолютно согласен если есть желание и время освоится то берите мак
    Ответ написан
    Комментировать
  • Какой ноут выбрать для front-end, macbook или PC?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Одно из отличий профессионала - уровень владения своим инструментарием.
    • Если вы не можете конкретно сформулировать, чем лучше для вас OS X - не стоит на него переходить, для экспериментов можно и виртуалке покрутить.
    • Наличие опыта работы за Windows увеличит вашу производительность, а значит ценность как сотрудника.
    • Возможно тестирование работ на браузерах Microsoft, для чего надо гонять те же виртуалки.

    У Mac есть свои плюсы в виде некоторых программ (к примеру, Omnigraffle), и другие принципы работы, предпочтения в которых - дело вкуса.
    Ответ написан
    1 комментарий
  • Какой ноут выбрать для front-end, macbook или PC?

    @Arik
    Если есть время освоиться, то лучше мак, а так пока привыкнете много мата будет, но на винду не захотите назад.
    Ответ написан
    Комментировать
  • Какой ноут выбрать для front-end, macbook или PC?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Макбук:
    - работать кайфово
    - шрифты в IDE класс
    - много рабочих столов (если конечно на компе не вин 10)
    - кайфовый экран, трекпад, клава
    - для IE всегда есть виртуальные машины
    - консоль в макоси гораздо(!) круче виндовой
    Ответ написан
    Комментировать
  • Почему такой вариант работы с DOM считается темной стороной силы?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Потому что операции работы с DOM затратны по ресурсам и времени. Если элемент в DOM еще не добавлен, изменять его гораздо дешевле.

    Но в вашем конкретном случае это нормально - вы же работаете со всеми ячейками строки, а не с одной создаваемой. Разве что добавление кнопки "Добавить в корзину" лучше сделать сразу в создаваемую ячейку, тогда и искать ее не надо будет и на операциях с DOM сэкономите.

    Я бы переписал так:
    var classes = ['item-id', 'item-title', 'item-price'],
        table = document.getElementById('table'),
        rows = table.getElementsByTagName('tr'),
        rowIndex, cellIndex, cells, currentRow, currentCell, addToCartCell;
    
    // Пропускаем первую строку, потому что в ней находится заголовок таблицы
    for (rowIndex = 1; rowIndex < rows.length; rowIndex++) {
        currentRow = rows[rowIndex];
        cells = currentRow.getElementsByTagName('td');
    
        for (cellIndex = 0; cellIndex < cells.length; cellIndex++) {
            currentCell = cells[cellIndex];
            currentCell.setAttribute('class', classes[cellIndex]);
        };
    
        addToCartCell = document.createElement("td");
        addToCartCell.innerHTML = '<a class="add_item">Добавить в корзину</a>';
        currentRow.appendChild(addToCartCell);
    };

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

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

    Можно было бы пойти чуть дальше и разбить код на маленькие независимые функции:
    function getTable() {
        return document.getElementById('table')
    }
    
    function getRows(table) {
        var allTableRows = table.getElementsByTagName('tr'),
            rows = [],
            index;
    
        // Пропускаем первую строку, потому что в ней находится заголовок таблицы
        for (index = 1; index < allTableRows.length; index++) {
            rows.push(allTableRows[index]);
        }
    
        return rows;
    }
    
    function appendAddToCartButton(row) {
        var cell = document.createElement("td");
        cell.innerHTML = '<a class="add_item">Добавить в корзину</a>';
        row.appendChild(cell);
    }
    
    function setCellsClasses(row) {
        var classes = ['item-id', 'item-title', 'item-price'],
            cells = row.getElementsByTagName('td'),
            index;
    
        // Обратите внимание, что здесь мы итерируем по классам, а не по ячейкам
        // В том случае, если в функции prepareTable кто-то по ошибке
        // поменяет местами строки добавления классов и кнопки добавления в корзину
        // код не сломается
        for (index = 0; index < classes.length; index++) {
            cells[index].setAttribute('class', classes[index]);
        }
    }
    
    function prepareTable() {
        var table = getTable(),
            rows = getRows(table),
            rowIndex, currentRow;
    
        for (rowIndex = 0; rowIndex < rows.length; rowIndex++) {
            currentRow = rows[rowIndex];
            setCellsClasses(currentRow);
            appendAddToCartButton(currentRow);
        }
    }
    
    prepareTable();

    Но в данном случае, скорее всего, это уже излишне.
    Ответ написан
    Комментировать