Skip to content

[WIP/QRCoder2] Consider Updated Abstractions #557

Description

@csturm83

QRCoder v2 provides a unique opportunity to streamline and clean up some of the rough edges of public API that has evolved and accumulated over the years.

Potential Goals of an Updated API

  • Intuitive
  • Discoverable
  • Consistent
  • Clear (succinct) semantics
  • Extensibility
  • Maximize code reuse
  • 'Pit of success'

Some suggested semantic changes:

  • AbstractQrCode --> Renderer
  • ***QrCode --> ***Renderer
  • QRCodeGenerator.CreateQrCode --> QRCode.Create
  • GetGraphic --> Render

Example Renderer Abstraction

Sample Usage

// 'traditional' three-step rendering
QRCodeData qrData = QRCode.Create(payload, qrSettings);
TestRenderer renderer = new TestRenderer(qrData);
byte[] renderedt3 = renderer.Render(renderSettings);

// fluent three-step rendering
byte[] rendered3 = QRCode.Create(payload, qrSettings)
    .RenderAs<TestRenderer>()
    .Render(renderSettings);

// fluent two-step rendering
byte[] rendered2 = TestRenderer.Create(payload, qrSettings)
    .Render(renderSettings);

// one-shot rendering
byte[] rendered1 = TestRenderer.Render(payload, qrSettings, renderSettings);

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    qrcoder2Everything related to QRCoder v2

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions