I have always been making my cw apps as a single executables. Does any of you break it down and create bunch of dlls with main exe?
If so, why?
I don’t mean in special cases where some other app needs to use one of your dlls or something.
I mean that you have a habit or strategy of making it with dlls.
Just want to know if perhaps I should consider it too…
I’ll never go back to single executables for large apps again. Small apps are fine as long as you’re sure they’ll never become “big.” What’s “big” I guess depends on your perspective.
With multi-DLL apps, you can break the app down into categories. Need to make a change? Change the app for that DLL, compile, and you’re done. You don’t have to compile every app in the solution. (I’m simplifying it of course.)
In short, many pro’s and not a lot of con’s.
We should try to make applications as small as possible, there are many disadvantages of having single application. For example for a single change you need to deploy the whole application.
If you divide the app into different dll’s, you can just deploy the dll which is changed.
Ok, so far we got:
- smaller files (especially regarding distribution)
- smaller files to compile (although there’s conditional compile available)
Anything else? Since we’re saying “a lot of pros”…
Regarding what a big app is, I would appreciate some definition.
I think there are two issues:
- compile speed
- hitting internal limits/errors
These days machines are much faster than say 20 years ago so whereas someone may have said “more than 50 procedures then split it up” now days that might be 100 or 200 procs. Everyone will have a different idea of that “magic number” - but if you start hitting some internal errors (sorry I haven’t had one in ages so can’t give examples off the top of my head) then it could well be time to split things up. Mind you it would depend on the error so I realise that is all a bit vague.
To be honest, despite what everyone says, I wouldn’t split it up unless you have a good reason. Perhaps if you have lots of procedures that are shared by different apps that use the same dct, then that would be a good reason as you would put them in a dll that both apps can use. Or if compiles are taking too long…
Organisation!! If your app is complex then breaking it into smaller, more manageable blocks is a big plus. Can also help with isolating issues, grouping like operations etc