Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
app
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Fragnums

An enum based library to replace fragments, because #perfmatters.

“Frag your app complexity today!” - Zach K.

We all know that Fragments suck, and that #enumsmatter. What if we could replace Fragments with Enums?

What's Fragnums?

Fragnums is the smallest, simplest and most performant Android backstack library:

  • No reflection, unlike Fragments which are recreated through reflection.
  • Each enum value is both a screen and a presenter. This means only one instance of each value is created, ever. No useless garbage collection!
  • Synchronous transitions coz ain't nobody got time for Async Fragment Transactions.
  • Handles configuration changes, for all the landscape nut lovers out there.

Show me the code

Creating a new screen is as simple as adding an enum value:

  MY_SCREEN(R.layout.my_screen_layout, R.string.my_screen_title) {
    @Override protected void onBind() {
      View button = findViewById(R.id.button);
      button.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View view) {
          // Do something.
        }
      });
    }
  },

Then you can just do goTo(MY_SCREEN).

Getting started

  • Copy the three classes from the example.
  • You're good to go! You can now focus on writing new screens and features, just by adding new enum values.

Why should I use Fragnums?

  • Ultra small footprint: no dependency. In fact, it's not even a library, just three classes to copy.
  • It's really hard to test, so test zealots can't force you to write tests. You can therefore focus on writing more features.
  • All your business logic is in one place, so it's really easy to have a 30,000 feet picture of your code. We suggest you start using a smaller font size in your IDE.

How does it work?

Is this serious?

No. The core principles are good, but this is a satire library. Read the code and see for yourself.

More details

  • The suggestion that we should stop using enums because #perfmatters is a fallacy. An enum is essentially a class. Every new class makes our binary a bit bigger and our runtime a bit slower. Should we stop using classes? Or should we instead focus on the perf problems that actually matter?
  • This library shows how to implement a very basic backstack. You don't need enums for that, you could have a Screen class instead.
  • It's cool to know that one could make an enum centric app. However just because you can, doesn't mean you should.
  • If you're into trolling at conferences, you can get the #enumsmatter T-Shirt here. I am not affiliated with this T-Shirt campaign.

screenshot1.png

screenshot2.png

screenshot3.png

About

An enum based library to replace fragments.

Resources

License

Releases

No releases published

Languages

You can’t perform that action at this time.