niedziela, 4 września 2011

Extra large modular robotlegs application code organize ?

Well when doing some extra large project I was always concerned how to force myself to code right. Not share some dependences across modules not reference to the application, how to manage large codebase and what framework I need to use. Well I chose Robotlegs cause it's simple and will be the best way to success and Joel Hooks wrote nice modular extension to it so we can make everything modular.  It's amazing that that technology works smoothly without any problems. But let's get back to the point.

Well if you have something like 1-10 modules you can keep everything in the same project I think. But what if your plan is to have 20-30 modules ? And by the way you have external people working on your project you not really want to share all your code. How to keep things consistent.  I'll share my concept with you cause it's simple. LIBRARIES, yes each module should have separate project library so you won't use one module  codebase in another module codebase what's modular application essential.  Next you need at least one common module for your framework classes that are shared across all modules. Let's say it will be the Components, validators, renderers and some other visual related stuff I will name it CORE. I also managed to separate communication module that sends and receives the data from the services. And for this point I wanted to have all my communication classes in another module - let's say the API. So you can use the API and give the api and the CORE to the external developer and he will do some shit for you. And you give him only SWC with some documentation not the all codebase.

Some conclusions:

- Unless you are moving something to the  CORE library or API library your project build time will be something like 1-2 seconds. That's something. You are not frustrating while flashbuilder is building your project or freezes sometimes without memory.

- You don't have to worry that you used some classes across modules and you don't know what dependences are - you have it all in CORE. Your modules should be equal in size, and the size won't be 10-40kB it will be all the classes you have in the library so 100-200kB so you will save some time while loading big application and showing it to client.

- If you managed to separate your SERVICE to the external module and that's with all flash domain policy really hard shit, if you use some remote classes that you send or receive it's really messy but then you can use it in some third party related project's.

-You can then give the API and CORE  and see what other people will build with it.