Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8545[/thread]

Lesbarkeit von Code

Leser: 1


<< |< 1 2 3 4 >| >> 36 Einträge, 4 Seiten
bloonix
 2006-12-01 18:05
#72156 #72156
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Community,

hin und wieder mache ich mir nicht nur Gedanken um guten Code,
sondern auch um schönen. Was haltet ihr von

Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub struct {
  return
     ref($_[0])
        ? ref($_[0]) eq 'HASH'
           ? $_[0]
           : croak "not a hash ref"
        : @_ & 1
           ? croak "odd number of elements in hash"
           : {@_};
}


oder ist dieses Beispiel viel lesbarer?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub struct {
  if (ref($_[0])) {
     if (ref($_[0]) eq 'HASH') {
        return $_[0];
     } else {
        croak "not a hash ref";
     }
  } elsif (@_ & 1) {
     croak "odd number of elements in hash";
  } else {
     return {@_};
  }
}


Was würdet ihr bevorzugen? :)

Gruss,
opi\n\n

<!--EDIT|opi|1164989242-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
PerlProfi
 2006-12-01 19:58
#72157 #72157
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Also ich finde dein 2. Beispiel lesbarer.
Einfach weil ich bei IF immer sofort sehe was geprüft wird, bei dem ersten Beispiel muss man sich das erstmal überlegen.
Wenn ich trotzdem ?: verwende schreibe ich es meistens so:
Code: (dl )
1
2
3
4
5
6
$z = ($x == 4) ? ($y == 3) ? 7 :
($y == 4) ? 8 : 0
:
($x == 3) ? ($y == 4) ? 7 :
($y == 3) ? 6 : 0
: 0;


MfG PerlProfi\n\n

<!--EDIT|PerlProfi|1164996047-->
GwenDragon
 2006-12-01 20:43
#72158 #72158
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Ich verfahre so:
Code: (dl )
1
2
while $dragon->isa(SCHREIBFAULE) do { use('?') };
while $dragon->wants(BETTERREADING, 4, Others) do { use(IF) };



:cool:\n\n

<!--EDIT|GwenDragon|1164998647-->
nepos
 2006-12-03 18:59
#72159 #72159
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich machs mir einfach und lasse perltidy über den Code laufen. Mit ein paar Anpassungen sieht das dann auch sehr gut aus. An ein paar Stellen muss man trotzdem nochmal manuell nachbessern.
frodus
 2006-12-04 10:28
#72160 #72160
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Da mein Emacs aus dem Ersten Beispiel folgendes macht:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
# Meta-x indent-region
sub struct {
return
ref($_[0])
? ref($_[0]) eq 'HASH'
? $_[0]
: croak "not a hash ref"
: @_ & 1
? croak "odd number of elements in hash"
: {@_};
}


bevorzuge ich Nummer 2.

/Frodus
GwenDragon
 2006-12-04 11:21
#72161 #72161
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Perltidy ist auch eine gute Sache. Verwende ich auch manchmal.
pq
 2006-12-04 12:26
#72162 #72162
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich benutze perltidy ganz oft. selektieren eines blocks und ein tastendruck - fertig.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
GwenDragon
 2006-12-04 12:28
#72163 #72163
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Das aktuelle Perltidy ist noch besser.
nepos
 2006-12-04 13:46
#72164 #72164
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Welche Version ist das aktuelle?
Ich hab im Moment v20060719.
docsnyder
 2006-12-04 14:19
#72165 #72165
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Mal ein Aspekt, der sich nicht um die Lesbarkeit des Codes dreht, sondern um die Portabilität: ist der Code

Code: (dl )
@_ & 1


zur Abfrage auf eine ungerade Zahl portabel?

Ich weiss zwar nicht, ob es Integer-Repräsentationen gibt, bei denen dies nicht funktioniert, aber sollte man davon ausgehen?

Was meint Ihr?

Gruß, Doc
<< |< 1 2 3 4 >| >> 36 Einträge, 4 Seiten



View all threads created 2006-12-01 18:05.