Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Regrettable module names

by theorbtwo (Prior)
on Jul 03, 2004 at 23:32 UTC ( [id://371636]=note: print w/replies, xml ) Need Help??


in reply to Regrettable module names

Here's one that I'm not sure of -- Sort::Merge. It implements the algorithim commonly called merge sorting. Unfornatly, it doesn't sort -- it takes multiple files, which are already sorted, and merges them info one file, that is sorted. But I'm stuck with the name, because it's what everybody calls the algo.

Another that I'm not sure of, that indicates a general problem, I think. I'm working on a interface to my bank's web-banking. It's called Finance::Bank::Norisbank (yeah, compony names don't make good namespaces, but there's really nothing better to call it, other then, perhaps, Finance::Bank::DE::Norisbank, or Finance::Bank::DE::<their bank routing number here>. The first is getting too long, the second is unreadable.

The real problem, though, is the class that is to be used to represent a transaction. By design, it's supposed to be general enough to represent any transaction, or at least any transaction against a german bank. Should I name it Finance::Bank::Transaction, Finance::Bank::DE::Transaction, or are those taking up valuable namespace for something that will probably only be used by me, and it should be Finance::Bank::Norisbank::Transaction?

(BTW, Finance::Bank::Norisbank is not ready for CPAN yet.)

Replies are listed 'Best First'.
Re^2: Regrettable module names
by brian_d_foy (Abbot) on Jul 04, 2004 at 04:37 UTC
    That Finance::* namespace is a wierd one. It has general things like interfaces to various accounting programs data formats as well as protocol sorts of things. Lingua::* has a similar complexity.

    To make things really work there, someone needs to take charge and unify everyone, sort of like DBI did for databases and LWP did for many of the net interfaces. What you really care about is the transaction, not the institution, really. If I wanted to interact with four banks (and I do), I want to use the same script.

    That stuff aside, I think in your case you can't escape having the bank name in the module name, because that's how people think about it. If Citibank disappears, for instance, Finance::...::Citibank probably won't be useful anymore anyway, whereas in my example Netscape lived on in other things.

    As a PAUSE admin, in these cases I just follow the precedent.

    --
    brian d foy <bdfoy@cpan.org>

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://371636]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2024-04-23 07:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found