Thread OOP Programmierstil (20 answers)
Opened by rosti at 2011-03-24 09:52

renee
 2011-03-28 14:41
#146975 #146975
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, wenn Du - aus welchen Gründen auch immer - etwas an den Objektinterna änderst, weißt Du nicht, wo Du überall Code anpassen musst. Selbst wenn Du es weißt, musst Du es an unnötig vielen Stellen anpassen.

Wenn Du Methoden hast, die die Interna verstecken, dann musst Du nur die Methoden an sich anpassen, aber nicht die Aufrufe etc.

Direkt mit Interna:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
package InternaTest;

# boilerplate

sub new {
    my $self = bless {}, shift;
    $self->{flasch} = 0;
    return $self;
}

1;


Code (perl): (dl )
1
2
3
4
5
6
use InternaTest;
my $obj = InternaTest->new;

if ( $self->{flasch} ) {
    print "test\n";
}


Jetzt fällt Dir auf, dass Du ja "flasch" statt "falsch" geschrieben hast. Jetzt musst Du im Paket und im Skript was anpassen. Oder Du ziehst das bis in alle Ewigkeiten durch. Es gibt aber nichts schlimmeres als Code, der den gleichen Schreibfehler an 1000 Stellen verwendet. Das ist auch nicht einprägsam...

Wenn man mit Methoden arbeitet, dann kannst Du das einfach umbenennen und musst nur Code innerhalb des Pakets anpassen.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package InternaTest;

# boilerplate

sub new {
    my $self = bless {}, shift;
    $self->is_false( 0 );
    return $self;
}

sub is_false {
    my ($self,$value) = @_;
    $self->{flasch} = $value if @_ == 2;
    return $self->{flasch};
}

1;


Code (perl): (dl )
1
2
3
4
5
6
use InternaTest;
my $obj = InternaTest->new;

if ( $self->is_false ) {
    print "test\n";
}


Wenn Du Schreibfehler im Methodennamen hast, musst Du zwar auch in Skripten das anpassen, aber Du wirst nach der Änderung zur Laufzeit auf die Stellen aufmerksam, die Du noch anpassen musst. Beim direkten Zugriff auf die Interna hast Du diesen Service nicht.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread OOP Programmierstil