1. JavaScript / Говнокод #19290

    +2

    1. 1
    str.indexOf('#') === 0

    Проверка что строка начинается с '#'

    Запостил: 3_dar, 11 Января 2016

    Комментарии (11) RSS

    • школоте не понять
      Ответить
    • 0 < str
        .split('')
        .map((c, i) => ({c, i}))
        .filter(x => x.c === '#')
        .filter(x => x.i === 0)
        .length
      Ответить
    • ?
      Ответить
      • Можно было использовать str.charAt(0) === '#' или str[0] === '#'.
        Кстати да, вопрос читателям: /^#/.test(str) в данном случае говнокод или удачное решение?
        Ответить
        • Почему бы не реализовать beginsWith? Это же будет удобнее читать.
          Ответить
          • String.prototype.beginsWith = function(beginsWith) {
                if (typeof(beginsWith) !== 'string' || beginsWith === '' || this.length < beginsWith.length) {
                    return false;
                }
            
            	for (var i = 0; i < beginsWith.length; i++) {
            		if (this[i] != beginsWith[i]) {
            			return false;
            		}
            	}
            	
            	return true;
            };
            Ответить
            • Пихать функции в системные классы - моветон.
              Ответить
              • Это объект!
                Ответить
                • Ну ок, в прототипы, если любишь следовать букве закона, а не духу.
                  Ответить
                  • Не вижу ничего плохого в чистых методах. А-ля экстеншены из шарпов.
                    Ответить
                    • Засирание глобального/системного неймспейса же, которое порицается во всех языках. Если хочешь аналог из шарпа - объявление чего-нибудь прямо в System.

                      Экстеншены немножко из другой оперы - они не видны за пределами того модуля, который их явно импортнул. А этот beginWith виден *всем*, кто юзает стринг (т.е. вообще *всем*). И если какой-то Вася, либу которого ты заюзал, или чуваки из Мозиллы сделают свой но несовместимый с твоим - будет ой как плохо.
                      Ответить

    Добавить комментарий