http://www.perlmonks.org?node_id=371939


in reply to Regrettable module names

Naming things intelligently is hard. It requires a certain genius that frankly I think most people, like myself, lack. I spent a long time agonizing over what to call Data::Dump::Streamer. I eventually went with that name over some strong internal reservations (its too damn long for a utility modules) because a number of folks who i respect quite a bit seemed to favour it. Although a few releases later I added a "psuedo-namespace" to it called DDS, its not listed or registed but can be optionally installed when building DDS. The problem was that most of the Data:: namespace'es useful names are already taken, with a bunch of them taken by fairly poor quality modules. In fact I need to remove Data::BFDump as being obsoleted by Data::Dump::Streamer.

Also I've never understood why that name wasnt registered. Actually, while im not certain of this I have heard that of late very little registration is actually occuring. Perhaps because as you say you represent a SPOF and when you dont have the time the whole process comes to a halt.

The other one that _really_ annoys me is that the vast majority of Tie:: modules are horribly named. They should ALL be named Tie::Type(::Name)+. It seems so silly that there is no easy way to find out what types of tied array you can download for instance. I personally think Tie::Array::PackedC is a much better name than most of the Tie:: namespace. Consider:

# Well named Tie::Array Tie::Array::BoundedIndex Tie::Array::FileWriter Tie::Array::Iterable Tie::Array::Iterable::BackwardIterator Tie::Array::Iterable::ForwardIterator Tie::Array::PackedC Tie::Array::RestrictUpdates Tie::Array::Sorted Tie::Array::Test Tie::Array::Unique Tie::File Tie::Hash Tie::Hash::Abbrev Tie::Hash::Abbrev::BibRefs Tie::Hash::Abbrev::Smart Tie::Hash::Approx Tie::Hash::Array Tie::Hash::Cannabinol Tie::Hash::Constant Tie::Hash::Expire Tie::Hash::FixedKeys Tie::Hash::Indexed Tie::Hash::Interpolate Tie::Hash::Layered Tie::Hash::Longest Tie::Hash::MultiValue Tie::Hash::Rank Tie::Hash::Regex Tie::Hash::Sorted Tie::Hash::Stack Tie::Hash::Test Tie::Hash::Transactional Tie::Hash::TwoWay Tie::Scalar Tie::Scalar::Decay Tie::Scalar::Escaped Tie::Scalar::MarginOfError Tie::Scalar::OK Tie::Scalar::RestrictUpdates Tie::Scalar::RingBuffer Tie::Scalar::Sticky Tie::Scalar::Test Tie::Scalar::Timeout Tie::Scalar::Transactional # not so badly named Tie::FileHandle::Base Tie::FileHandle::Buffer Tie::FileHandle::MultiPlex Tie::Handle Tie::Handle::CSV Tie::Handle::Scalar # outright badly named. Tie::Alias Tie::Alias::Array Tie::Alias::Handle Tie::Alias::Hash Tie::AliasHash Tie::AppendHash Tie::Autotie Tie::CArray Tie::CPHash Tie::CSV_File Tie::Cache Tie::Cache::LRU Tie::Cache::LRU::Array Tie::Cache::LRU::Expires Tie::Cache::LRU::LinkedList Tie::Cache::LRU::Virtual Tie::CacheHash Tie::Cacher Tie::Cfg Tie::CharArray Tie::ClockTimer Tie::Collection Tie::Concurrent Tie::Config Tie::Counter Tie::Coupler Tie::Cvs Tie::Cycle Tie::DBI Tie::DBI::ER Tie::DB_File::SplitHash Tie::DB_FileLock Tie::DB_Lock Tie::DNS Tie::DataUUID Tie::DeepTied Tie::Depth Tie::Dict Tie::DictFile Tie::Dir Tie::DirHandle Tie::Discovery Tie::DiskUsage Tie::DxHash Tie::EncryptedHash Tie::Eudora Tie::FTP Tie::FileLRUCache Tie::Filter Tie::Filter::Array Tie::Filter::Hash Tie::Filter::Scalar Tie::FlipFlop Tie::Folded Tie::Form Tie::FormA Tie::Func Tie::Function Tie::GHash Tie::Google Tie::Gzip Tie::HTML::Entities Tie::HashDefaults Tie::HashHistory Tie::History Tie::InsertOrderHash Tie::IntegerArray Tie::IxHash Tie::IxHash::Easy Tie::LDAP Tie::LDAP::Entry Tie::LLHash Tie::Layers Tie::LazyList Tie::ListKeyedHash Tie::LogFile Tie::MAB2::Dualdb Tie::MAB2::Dualdb::Id Tie::MAB2::Dualdb::Recno Tie::MAB2::Id Tie::MAB2::Recno Tie::MAB2::RecnoViaId Tie::MLDBM Tie::MLDBM::Lock::File Tie::MLDBM::Lock::Null Tie::MLDBM::Serialise::Storable Tie::MLDBM::Store::DBI Tie::MLDBM::Store::DB_File Tie::Math Tie::Mem Tie::Memoize Tie::MmapArray Tie::Mounted Tie::Multidim Tie::NetAddr::IP Tie::NormalArray Tie::NumRange Tie::OffsetArray Tie::OneOff Tie::Parent Tie::PerFH Tie::PerfectHash Tie::Persistent Tie::Pick Tie::Proxy::Hash Tie::PureDB Tie::Quick Tie::RDBM Tie::RDBM::Cached Tie::RangeHash Tie::RefHash Tie::RegexpHash Tie::Registry Tie::RemoteVar Tie::RemoteVar::Callback Tie::RemoteVar::Constant Tie::RemoteVar::Tie Tie::Restore Tie::RevHash Tie::RevRefHash Tie::RndHash Tie::STDERR Tie::SecureHash Tie::SentientHash Tie::ShadowHash Tie::ShiftSplice Tie::Simple Tie::Simple::Array Tie::Simple::Handle Tie::Simple::Hash Tie::Simple::Scalar Tie::Simple::Util Tie::Slurp Tie::SortHash Tie::Static Tie::StrictHash Tie::SubstrHash Tie::Sysctl Tie::Syslog Tie::Table Tie::TextDir Tie::TieConstant Tie::TieDict Tie::Tk::Listbox Tie::Toggle Tie::Tools Tie::TransactHash Tie::TwoLevelHash Tie::URI::Escape Tie::UrlEncoder Tie::VecArray Tie::WarnGlobal Tie::Watch

Pretty much none of that last part of the list should have been registered IMO. I suppose its arguable that the ones _ending_ in 'Type' should be in the "not so badly named", but IMO they are just as bad. And there are probably a few in there that cant be better named because they have some special extra property, but even still I think the namespace is a just a big mess.


---
demerphq

    First they ignore you, then they laugh at you, then they fight you, then you win.
    -- Gandhi


Replies are listed 'Best First'.
Re^2: Regrettable module names
by tilly (Archbishop) on Jul 05, 2004 at 22:45 UTC
    And here we see why broadly-offered criticism is risky.

    Take a look at Tie::Static which is one of your "outright badly named" modules. But take a closer look at it and tell me the better name that it should have, noting carefully that it handles scalars, arrays and hashes.

      And here we see why broadly-offered criticism is risky.

      On the contrary I specifically mentioned that there would be a few such modules included in the "bad list":

        And there are probably a few in there that cant be better named because they have some special extra property, but even still I think the namespace is a just a big mess.

      So I think I preemptively resolved this point. Anyway, IMO that module should be named Tie::Any::Static or something along those lines. In fact, in my eyes the fact you cant tell that module can handle any type of tie just by looking at the name says to me its badly named.


      ---
      demerphq

        First they ignore you, then they laugh at you, then they fight you, then you win.
        -- Gandhi