The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Class::MakeMethods::ToDo - Ideas, problems, and suggestions

SYNOPSIS

There are lots of things that could be done to improve this module.

DISTRIBUTION ISSUES

Issues about the distribution and supporting files, rather than the code:

Documentation

  • Make sure that the documentation is broken up into appropriately-sized chunks, and that people will know which section to look at.

  • As user questions arrive, add the answers as documentation points or examples.

  • Assemble annotated examples and tutorials, and either link to or distribute them.

Tests

  • Expunge old custom Test module in favor of standard version (except for emulation compatibility tests, which should remain untouched).

  • Use Devel::Coverage to measure test coverage, and fill in missing cases.

GENERAL ISSUES

  • For scalar methods (and others) it would be nice to have a simple bounds-checking interface to approve or reject (with an exception) new values that were passed in.

    As pointed out by Terrence Brannon, the right interface to adopt is probably that of Attribute::Types:

      use Class::MakeMethods::Standard::Hash (
        'scalar' => [ 'count' => { TYPE => 'INTEGER' } ],
        'scalar' => [ 'name' => { TYPE => qr/^[A-Z]\w*$/ } ],
        'scalar' => [ 'account' => { TYPE => &checksum_account_number } ]
      );
  • Add AUTOLOAD support for clients who wish to have accessors lazily built for them when they use them.

      sub AUTOLOAD {
        (my $func = $AUTOLOAD) =~ s/^.*::(_?)//;
        Class::MakeMethods->make( ... => [ $func,... ] );
        if ( my $sub = $1->can( $func ) {
          goto $sub( @_ );
        } else {
          croak sprintf q{Can't locate object method "%s" via package "%s"}, $func, ref( $_[0]);
        }
      }
  • Improve use of _diagnostic hooks for debugging. Add various "(Q)" warning diagnostics.

STANDARD AND COMPOSITE CLASSES

  • Finish tests for Standard modules.

  • Finish building Inheritable array and object accessors.

  • Finish building and testing of Composite::* packages.

  • Resolve DESTROY-time issues with Standard::Inheritable, Composite::Inheritable, and Template::Flyweight.

  • Add slice and splice functionality to Standard::*:hash and Composite::*:hash.

SEE ALSO

See Class::MakeMethods for an overview of the method-generation framework.

See Class::MakeMethods::ReadMe for distribution, installation, version and support information.