Hi
I'm having a project which is growing more complex by the day, and I'm thinking of refactoring it into smaller distributions, but I'm puzzled about the best strategy to do so.
This architectural worries are stopping me now˛...
(Update: to make things worse I'm also thinking into refactoring into a super module, because the name doesn't fit anymore to the functionality)
Motivation
-pro
- some techniques* are experimental/very magic and should be isolated
- future replacements of failed approaches become easier
- there doesn't seem to be much support for those special techniques on CPAN so modules could be reused elsewhere
- it's easier to test those features in isolation
-contra
- more dependencies lower attractiveness
- testing the whole project becomes more complex
- a branch on GitHub would need to branch all sub projects
- I need to publish all partial products at the same time to CPAN
- finding good names for distributions is not easy
Strategy
I think now it's better to go step by step, and to first refactor it into separate modules inside the same distribution, before transfering them into separate distribution.
Is there a best practice to do so?
For instance shall I create a dedicated top-level directory for this or put it directly into /lib
?
Comments?
PS: in hindsight this should rather be a meditation not a SOPW, gonna move it right away after posting.
*) which are
source filter
attributes
INC-hooks
debugger adjustments
...
˛) i.e. getting it right instead of getting it done...
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.