Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Exporting functions into main namespace for the benefit of other use'd modules

by tunaboy (Curate)
on Jul 10, 2003 at 21:09 UTC ( #273138=note: print w/ replies, xml ) Need Help??


in reply to Exporting functions into main namespace for the benefit of other use'd modules

Judging from the responses so far, the consensus is this is a bad idea but I think I did not give enough background on what I am doing. The modules that are using these functions are not 'standalone' modules, they are part of the whole that is the application.

The application starts with a .pl script consisting of:
use strict; use warnings; use Foo; my $app = Foo::App->new(); $app->MainLoop();
That is all there is in the main namespace. The Foo package is responsible for loading Foo::App which in turn loads other modules necessary (which in turn load other modules necessary etc. etc.). Foo is also the package that exports the utility functions into the main namespace.

None of the modules that require the utility functions will ever be used outside of the application as they are all specific to the application. As an example, each different window in the application is a seperate module (at around 50+ right now).

The modules are meaningless without looking at the application as a whole, which is why I felt it ok to shortcut the importing of these functions. I can guarantee that the functions will be in the main namespace and they will not be messing with any other functions there (as there are none). But the problem comes when someone else comes along to maintain/extend the application. Perhaps I am being too 'clever' for my own good.

I think I may reconsider as it does only mean one extra line in each module and it will eliminate a possible source of confusion for a maintainer.

Thanks for the posts.


Comment on Re: Exporting functions into main namespace for the benefit of other use'd modules
Download Code
•Re: Re: Exporting functions into main namespace for the benefit of other use'd modules
by merlyn (Sage) on Jul 10, 2003 at 21:56 UTC
    use strict; use warnings; use Foo; my $app = Foo::App->new(); $app->MainLoop();
    Looking at that, I'm already wondering
    • Why "use Foo" and not "use Foo::App"?
    • Why would there be anything else in main?
    I'm still not seeing anything in your proposed design that offers anything that's not implementable in a proper design as suggested by others in this thread.

    Maybe what you really have is an example of a specific derived class that inherits these common functions from a base class.

    Or maybe something else entirely.

    But I'd be very confused if I had "package My::Package" and then found that there were other subroutines that poofed into my namespace when I hadn't specifically imported them. Argh!

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (9)
As of 2014-07-31 23:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (255 votes), past polls