Skip to content

[WIP/QRCoder2] Consider Updated Abstractions #557

Open
@csturm83

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);

Metadata

Metadata

Assignees

No one assigned

    Labels

    qrcoder2Everything related to QRCoder v2

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions