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

kleiner Terminplaner (Seite 2)

Leser: 2


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
Taulmarill
 2005-08-10 13:49
#40419 #40419
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
folgend ein paar anmerkungen zum stil, nichts davon ist zwingend. es ist lediglich der stil, den ich am häufigsten beobachte:

wenn man seinen code verbreiten will, macht es imho sinn, die zeilen auf 80 zeichen breite zu beschränken, da das die standartbreite bei terminals ist und von vielen geren verwendet wird.

der schliessenden geschweiften klammer, die einen block abschliesst, würde ich eine eigene zeile spendieren, die so weit eingerückt ist, wie die zeile in der der block geöffnet wird.

die sub countown ist irgendwie eigentümlich eingerückt. ist das die schuld des forums?
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Taulmarill
 2005-08-10 14:54
#40420 #40420
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
was mich noch auf einen weiteren tip bringt. niemals tabulatoren und leerzeichen beim einrücken mischen. du kannst nie wissen, wie weit tabulatoren bei anderen viewern eingerückt werden.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
ptk
 2005-08-10 15:12
#40421 #40421
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Taulmarill,10.08.2005, 12:54]was mich noch auf einen weiteren tip bringt. niemals tabulatoren und leerzeichen beim einrücken mischen. du kannst nie wissen, wie weit tabulatoren bei anderen viewern eingerückt werden.[/quote]
Tab = 8 Zeichen. Wenn Editoren oder Viewer das anders machen (by default), dann sind sie buggy.
Taulmarill
 2005-08-10 15:34
#40422 #40422
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
[quote=ptk,10.08.2005, 13:12]Tab = 8 Zeichen. Wenn Editoren oder Viewer das anders machen (by default), dann sind sie buggy.[/quote]
achso, und jeder, der tabulatoren auf != 8 zeichen einstellt ist ein ketzer und gehört auf den scheiterhaufen? du bist ja lustig.
ich habe ja im prinzip nichts gegen tabs, aber man sollte sie nicht mit leerzeichen mischen, das fürt bei den meisten zu problemen in der anzeige.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Strat
 2005-08-10 16:04
#40423 #40423
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
x) use strict und use warnings sollten eigentlich bei jedem programm pflicht sein; -w war frueher mal gut, aber heutzutage sollte man besser warnings verwenden, weil -w immer global ist (d.h. auch fuer module wirkt, die man selbst gar nicht geschrieben hat), waehrend warnings nur immer im lokalen kontext (z.b. der aktuellen datei) gueltig ist.

x) nochmal zurueck zur datei ".termine": (btw: in strings hat der punkt keine sonderbedeutung; dort brauchst du ihn also nicht zu escapen)

du verwendest sie in fast jeder sub; will die nicht in eine eigene Variable? Wenn sich der Namen der Datei aendern sollte, wie viele vorkommen musst du denn jetzt aendern?

x) Die Datei liegt immer im aktuellen verzeichnis; was passiert, wenn das script von einem anderen verzeichnis ausgefuehrt wird? (z.B. ../my/script.pl) wohin wird die dann geschrieben? entweder einen fixen pfad vorgeben (z.B. das empfohlene HOME), oder den relativ-absolut zum scriptverzeichnis machen.
Code: (dl )
1
2
use FindBin;
my $file = "$FindBin::Bin/.termine";


x) Uebergibst Du nicht gerne Variablen an subroutinen? Bei countdown (my $line=$_;) greifst du einfach auf das globale $_ zu, und hast somit eine verdeckte parameteruebergabe, die unnoetige komplexitaet reinbringt. Am besten finde ich, wenn Subroutinen nur ueber eine klare Schnittstelle mit aussen kommunizieren, und diese schnittstellen sind ein- und ausgabeparameter...

x) du oeffnest die datei recht haeufig zum lesen (warum machst du da eigentlich nie eine fehlerabfrage? was passiert, wenn die datei mal nicht vorhanden ist, weil sie im falschen verzeichnis gesucht wird?) und machst danach mehr oder weniger immer dasselbe. koennte man das parsen der datei nicht in eine gemeinsame subroutine auslagern, sodass der code schlanker und klarer wird?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
ptk
 2005-08-10 16:19
#40424 #40424
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Strat,10.08.2005, 14:06][quote=ptk,10.08.2005, 13:57]Wenn derjenige seinen Code nicht veroeffentlicht, dann ist es mir egal. Wenn er
Code: (dl )
1
2
3
# Local variables:
# tab-width: 4
# End.
in seine Datei schreibt, dann kann ich wenigstens die Datei im Emacs richtig lesen, aber man muesste das gleiche fuer den vi und alle anderen Editoren machen.

Sich vorzunehmen, Leerzeichen und Tabs nicht zu mischen, ist schoen gedacht, aber was ist, wenn die Datei von jemand anders editiert wird, der diese (private!) Konvention nicht kennt?[/quote]
da faende ich es genial, wenn der editor beim speichern alle fuehrenden tabs durch leerzeichen ersetzen wuerde, und zwar durch so viele, wie man eingestellt hat (oder alternativ: nur tabs zum einruecken verwenden, dann ist es egal)[/quote]
Lieber nicht. Es koennten falsche Tabs ersetzt werden, z.B. wenn man ein literales Tab statt eines \t in einem String hat. Ausserdem mag ich es nicht, wenn ein Editor selbstaendig Whitespace aendert. Erst gestern habe ich auf unseren Trainee geschimpft, weil sein Editor die Unix-Newlines in Dos-Newlines geaendert hat und die Dateien ins CVS eingecheckt hat. Ein "cvs diff" wird dann nutzlos (OK, es gibt zur Not die Optionen -bB).

Wenn schon umwandeln, dann muesste der Editor schon beim Betaetigen des TAB nur Spaces einfuegen.
ptk
 2005-08-10 17:24
#40425 #40425
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Dort steht nur: "4 column indent". Dort steht nicht, dass man Spaces dafuer verwenden muss. Mein Emacs, macht bei einem Tab eine korrekte Einrueckung in 4er-Schritten und erzeugt dabei Spaces und/oder Tabulatoren, je nachdem, was weniger Platz einnimmt.\n\n

<!--EDIT|ptk|1123680295-->
ptk
 2005-08-11 21:37
#40426 #40426
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Mit 8 Spalten meine ich die Auswirkung eines physikalischen Tab (aka "\t"), das sich in einer Datei befindet. Was bei einem Druck auf die Tab-Taste passiert, ist eine andere Geschichte. Wie gesagt, ich bevorzuge ebenfalls eine Einruecktiefe von 4.
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2005-08-09 20:38.