cstd

0.0.1 • Public • Published

Библиотека стандартных классов для кофескрипта/яваскрипта

Build Status Coverage Status

Оглавление

  1. Оглавление
  2. Введение
  3. Общее описание классов 2. Легенда 2. Атомы 2. Контейнеры 2. Даты 2. События 2. Кэш 2. Ошибки

Введение

Библиотека реализует набор примитивов, которые могут быть полезны. Примитивы создаются аналогично библиотеке STL для C++, но аналогичность не означает идиентичность.

Некоторые контейнеры могут уступать по скорости нативному массиву (например Stack), но гарантируют отсутствие утечек и странных скачков потребления памяти (в отличии от Array). Так же следует понимать зачем какой тип вы используете т.к. в противном случае получить просадку по скорости и памяти проще простого. Методы, использование которых не желательно, зачастую имеют простор для оптимизации, но она отложена. О нежелательном использовании можно узнать из документации.

В библиотеке предусматриватся обратная совместимость поведения, без обратной совместимости отбрасывания ошибок. Это значит, что если метод в одной версии может обрабатывать 2 аргумента, а в следущей 3, то в первой версии он бросит исключение при работе с 3 аргументами, а во второй версии -- нет.

Библиотека полностью покрывается тестами, которые так же будут учавствовать в тестах на обратную совместимость. Естественно тесты исключений в обратной совместимости будут пропущены.

Общее описание классов:

Легенда:

  • '<-' = extends (означает что класс слева унаследован от класса справа)
  • '(abstract)' = класс абстрактный, если создавать объект на его основе, то будет брошено исключение
  • '(inner)' = класс не доступен через мостик cstd, для доступа надо подключать самостоятельно
  • '(native)' = уточнение, что речь идёт от встроенном классе, чтобы не путать

Атомы

Атомами являются классы, котрые не наследуют никакой другой класс и не имплементируют в себе никакой класс вовсе. Типичными атомами являются:

  • CSObject (abstract) <- Object
  • Node <- CSObject

Контейнеры

Контейнерами являются классы, объекты которых хранят, обрабатывают, представляют и удаляют другие сущности (примитивы и объекты) по определённым для данного класса правилам. Контейнеры оперируют с узлами (Node) и обычно класс контейнера имеет метод (fromArray) создания кобъекта на основе представления массива. Реализованны:

  • Container (abstract) <- CSObject
  • Stack <- Container
  • Queue <- Container
  • Deque <- Container
  • List <- CSObject
  • CircularList <- CSObject
  • NodeQueue (inner) <- CSObject

Даты

Для возможности наследовать класс Date был создан промежуточный класс CSDate. В нём все методы дублируют оригинальный Date и есть гарантия наличия некоторых методов (напрмер now).

  • CSDate <- Date (native)

События

Для событий существует абстрактный класс CSEmitter объекта, создающего события и сам класс события CSEvent.

  • CSEmitter <- CSObject
  • CSEvent <- CSObject

Кэш

Для кеширования по количеству объектов существует абстрактный класс BaseCache, работающий на NodeQueue представлениях с примитивнейшим механизмом вытеснения. Реализован полноценный LRU кэш (LRUCache) с алгоритмической сложностью доступа, посика, вставки О(1). Для всех кэшей публичны методы get, set, clear, а так же read-only свойства length и maxSize

  • BaseCache (abstract) <- CSObject
  • LRUCache <- BaseCache

Ошибки

Для создания "своих" классов ошибок есть CSError, который сам так же может быть использован для бросания исключения.

  • CSError <- Error (native)

Package Sidebar

Install

npm i cstd

Weekly Downloads

12

Version

0.0.1

License

GPL-3.0

Last publish

Collaborators

  • egik