Моя библиотека cPcre для работы с регулярными выражениями.
Решил написать нечто большое, полезное и потолковее...
Терпеливо снабжал комментариями и jsdoc.
Но должен сказать до совершенства так и не дотянул - нет полноценной реализации поиска назад, может потом сделаю.
Несмотря на это кода получилось более чем на 100 кбайт.
И вот что получилось...
...Может пригодится кому...- смотрите, кому не лень.
Буду благодарен дельным отзывам, еще я хочу эту штуку разместить
куда-нибудь во всеобщее свободное программистское достояние
(наподобие pear для php, есть ли сайт для javascript? ответьте если знаете).
Понимаю что возможно для этого формат оформления надо будет поменять.
|
После сжатия гуглом 9 килобайт вес (с гзипом 3)), а можно узнать практическое применение? Прост, у мя никогда не было проблем с чистыми регулярками и пока в голову не приходит зачем нужна эта либа, НО я могу ошибаться, так что без обид)
Честно говоря вы правы, именно _практической пользы не так уж и много, сам пока её не использую в силу такого размера. Более того сам попрактиковавшись с регулярными выражениями на яваскрипте, внутренне понял, что меня, как и вас и так всё устраивает. Зато вначале, когда изучал после пхп и узнавал о недостатках реализации на яваскрипт - руки чесались их исправить, так и появилась данная библиотека.
Главное в чём я вижу здесь практичность(если было бы нативно):
1.возможность делать многостроковое регулярное выражение с комментариями. (оно же может быть сильно сложным, а значит и нечитабельным, это аналог модификатору /x на пхп).
2.производить поиск назад.(там написаны плюсы и минусы).
3.встроен цикл обработки по exec - своего рода итератор.
Кстати, если нужны только эти три возможности, то код можно урезать больше чем на половину.
Тут больше теоретической пользы (как фундаментальная наука),
1.гвоздь библиотеки - вычисление позиций карманов, нативный код в javascript его не выдаёт, а пхп зато может.
2.Еще есть принципиальный метод setReadOnly он устанавливает почему то нативно не устанавливаемые динамически свойства объекта RegExp, точнее создает новый RegExp сохраняя все старые свойства что в прежнем и меняя ли явно указанные.
3.Кроме того намечены определенные идеологии(например группировка аргументов) как плод моего творческого мышления.
4.Библиотека возможно послужит фундаментом для дальнейшего своего развития - а именно для полноценной реализации поиска назад.
По большей части библиотека - как некое выполненное упражнение, или литературное программисткское произведение если можно так выразиться, только вот кроме меня самого читатель врядли другой найдется.
Комментарии - это, конечно, хорошо, но
Код страшен. Мало того, что автор поскупился на пробелы (например, расставить их вокруг бинарных операторов), так еще и имена переменных представляют собой малопонятные сокращения, а некоторые напоминают транслит.
Благодарю за отзыв.
Мне на прошлой работе тоже делали замечания по поводу переменных,
Вот я только не пойму, как правильно называть переменные?
Я лично называю на свой вкус и лад, стараюсь давать названия по английски,
а если не знаю - то на русском (транслит). Приходится сокращать имена, а
как сокращать чтобы было понятно не только мне - я не знаю. Например в ассемблере тоже малопонятные сокращения регистров, например ах - кто бы догадался что первая буква a означает аккумулятор, а в сх означает
counter- счетчик, поэтому и решил что сокращения в программировании - приемлемы.
Насчёт пробелов между операторами - я сам не понимаю - зачем они нужны,
мне и так прекрасно читается. Наверное потому что так принято многими - и стоит так делать.
А для вас код страшен только из за этих двух особенностей: мало пробелов и малопонятные сокращения?.. или скажете еще почему?
Не думаю что стоит сравнивать низкоуровневый язык программирования ( тоесть Assembler ) со скриптовым языком. Переменные должны иметь смысл, что бы можно было легко в коде разобраться, понятно дело что для себя можно писать как угодно. Если же не в курсе как оно будет по английски, юзай переводчик, например у гугла. Если переменную сложно описать коротко, пиши длинно отделяя слова заглавной буквой. Хотя тут речь не об этом.
Ещё меня смущает то, что весь код в приложенном файле сдвинут на 5 табов.
Из-за отсутствия пробелов и пустых линий между блоками кода создается впечатление монолитного куска кода, у которого непонятно, где начало, а где конец, и какая часть за что отвечает (хотя комменты спасают, но визуально они не помогают).
Касательно именования переменных - называйте английскими словами. Т.е., например в
var sk=ar[i];//массив скобки
sk заменить на brackets, а pos, скажем, на bracketPositions. Называть переменные по русски транслитом не надо. Лучше посмотрите в словаре, как пишется нужное слово, или используйте синоним к нему.var pos=sk[0];//позиция скобки.
Можете также посмотреть на код крупных опенсорсных продуктов (библиотек, например) и их схемы именования.
Roksa szopienice
Roksa szczecin centrum
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.