[Perl] Beautifier

Pagina: 1
Acties:

  • Juup
  • Registratie: Februari 2000
  • Niet online
Mag ik hier even reclame maken voor mijn nieuwe CPAN module? Hij heet Beautifier en je kunt er code mee mooi maken. Soort van Pretty Printer / Tidy dingetje.

Hij staat hier: http://search.cpan.org/search?dist=Beautifier

Als je met lelijke code (van een collega ofzo) moet werken, haal je hem eerst even door de Beautifier en de code ziet eruit zoals God het bedoeld heeft. Hij houdt deze conventies aan:

PHP:
1
2
3
4
if (($0 =~ 'asd') && (true))
{
  my $var = "blah";
}

Staat binnen php tags omdat dit nieuwe forum code tags niet goed doet

Ik ben eigenlijk ook benieuwd wat jullie style conventies zijn en vooral:
accolade op nieuwe regel? (ja)
spaties rond = teken? (Ja)
indenting? (twee spaties)
spatie na ronde haak openen? (Nee)

[ Voor 0% gewijzigd door Juup op 02-08-2002 01:17 . Reden: Typo ]

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 23-08 13:31

Tjark

DON'T PANIC

nee,meestal*,ja,nee

*behalve als: $i=1;

[ Voor 0% gewijzigd door Tjark op 02-08-2002 01:24 . Reden: 1e antwoord moest nee zijn |:( ]

*insert signature here


  • tomato
  • Registratie: November 1999
  • Niet online
Juup schreef op 02 augustus 2002 @ 01:09:
accolade op nieuwe regel? (ja)
Nee :P
spaties rond = teken? (Ja)
Ja
indenting? (twee spaties)
Tab (3 spaties)
spatie na ronde haak openen? (Nee)
Nee


Je module ga ik later nog even bekijken :)

Maar wat zijn precies de features, welke dingen worden er in de code aangepast en waar heeft hij eventueel nog problemen mee?

  • Juup
  • Registratie: Februari 2000
  • Niet online
Maar wat zijn precies de features, welke dingen worden er in de code aangepast en waar heeft hij eventueel nog problemen mee?
Hij heeft maar 3 features:

1 Accolade op de goede plek
2 Indenting goed
3 spaties rond = =~ !~ .= etc goed


Dus echt zuiver beautifien. Hij had meer functies maar die vielen niet echt onder de noemer beautify dus die heb ik eruit gehaald (bv strictifien, alle variabelen declareren met my)

1 probleem: Het haakje gaat naar de nieuwe regel. Ik twijfel sterk of ik dat configureerbaar moet maken.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Verwijderd

accolade op nieuwe regel? (ja)

nee

spaties rond = teken? (Ja)

ja, altijd (dus ook bij my $i = 1;)

indenting? (twee spaties)

tab

spatie na ronde haak openen? (Nee)

nee

  • tomato
  • Registratie: November 1999
  • Niet online
Juup schreef op 02 augustus 2002 @ 01:23:
1 Accolade op de goede plek
2 Indenting goed
3 spaties rond = =~ !~ .= etc goed
Misschien kun je nog iets doen met witregels. Voor en na een block zou ik bijvoorbeeld altijd een regel wit willen zien:
PHP:
1
2
3
4
5
$_ = 'hooi';
if (/ooi/) {
   print;
}
# ja leuk :?

Wordt:
PHP:
1
2
3
4
5
6
7
$_ = 'hooi';

if (/ooi/) {
   print;
}

# ja leuk :?


En direct na en voor de accolades vaak ook, maar da's wat lastiger te bepalen. Als het om 1 statement gaat binnen het if-block is dat weer wat overdreven.

Misschien eens zoeken of je ergens wat coding conventions kunt vinden voor Perl?
1 probleem: Het haakje gaat naar de nieuwe regel. Ik twijfel sterk of ik dat configureerbaar moet maken.
Ik vind van wel (tenzij je oorlogen wilt :P).

  • Juup
  • Registratie: Februari 2000
  • Niet online
Voor en na een block zou ik bijvoorbeeld altijd een regel wit willen zien:
Ik denk dat maar weinig mensen daar op zitten te wachten.

Over dat haakje op dezelfde regel: ik denk dat het haast onontkoombaar is dat het kiesbaar wordt. Toch jammer.

Oh en over de coding conventions voor Perl, die staan op perldoc.com maar ze zijn erg slap en hebben weinig met beautifien te maken.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • De-Fault
  • Registratie: Februari 2001
  • Laatst online: 23-10-2025
accolade op nieuwe regel? (nee)
spaties rond = teken? soms:
PHP:
1
if ($i==5){...


PHP:
1
$i= 5;


indenting? (tab)
spatie na ronde haak openen? (Nee)


bestaat zo'n dergelijk tooltje voor php? of ga je dit nog compatible maken >:)

  • Juup
  • Registratie: Februari 2000
  • Niet online
bestaat zo'n dergelijk tooltje voor php? of ga je dit nog compatible maken
Ik neem aan dat ze voor php bestaan. Zo niet, dan kan ik hem ook wel werkend krijgen voor php maar welke php'er gaat nu een Perl prog gebruiken om z'n code te pretty printen?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Juup
  • Registratie: Februari 2000
  • Niet online
.

[ Voor 0% gewijzigd door Juup op 02-08-2002 01:57 . Reden: dubbelpost ]

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class MyClass {

      /**
       * Blah, belangrijk commentaar en dan een witregel
       */

      private int blaat                  = 10;
      public static final int blaat2     = 10;

      /**
       * Super belangrijk commentaar!
       * met witregel erna
       * Ook prop ik de accolade op de zelfde regel, maar dat is omdat het me anders
       * te veel ruimte gaat kosten :) en omdat in de convention van Sun staat, dus Perlers moeten
       * zich er niets van aantrekken
       */

      public MyClass( int blaat ) {  // spatie tussen de haken om zo een 'onafhankelijke' view te maken

             //Commentaar met extra regel erna
             //
             setBlaat( blaat );

      }

}

Is java, maar mocht ik perl gaan proggen, dan zou ik het ook zo aanpakken qua beauty van de code :)

Tevens dit voor de spatie tussen de haken:
PHP:
1
 Blaat myBlaat = new Blaat(new Persoon(Persoon.MAN, new Name( Voornaam, tussenvoegsel, Achternaam));


Dit wordt echt een gedrocht als je het nog langer maakt. Ik heb daar gisteren nog een uur of 2 op zitten debuggen omdat ik niet in een oogopslag zag dat bijv bij Achternaam opeens new Achternaam stond, omdat alles zo op elkaar stond

PHP:
1
Blaat myBlaat = new Blaat( new Persoon( Persoon.Man, new Name( Voornaam, tussenvoegsel, Achternaam ) ) );
Dit oogt imho veel rustiger en geeft de 'losse delen' beter aan

  • Grum
  • Registratie: Juni 2001
  • Niet online
Voor perl ?

indenting: 1 tab (3 spaties, # vim: set ts=3: )
{} bij blocks op een nieuwe regel (en alleen op de regel)
PHP:
1
2
3
4
5
6
sub xxxYyyy
{
   if( ..... )
   {
   }
}


my met 1 var zonder ()'s (meer met ()'s)
de ()'s zitten ALTIJD vast
PHP:
1
2
my $self = shift;
my( $self, $varX ) = @_;

spaties binnen de (),[],{} (bij functie, array, hash icm met variabelen, functies)
PHP:
1
2
3
4
5
6
7
8
9
$self->{'xxxx'}; # hier niet
$self->{ $inVar }; 
$self->{ $self->{'list'}->[ $inVar ] }; 
$self->{ $self->getList( $inVar) };
$self->{ $self->getList( $self->{'list'}->[ $inVar ] ) }; 
@{ $self->{'storage'}->[0] };

$self->{ $hash{ $hash2{ $hash3{'key'} } } }; # <-- deze is dubieus en wordt meestal
$self->{ $hash{ $hash2{ $hash3{'key'} }}};

ALTIJD spaties om assignment, comparison operators (=,=~,&,eq,ne,etc)
, en ; altijd direct tegen et laatste non-spatie teken aan
PHP:
1
2
3
4
for( $i = 0; $i < 10; $i++ )
{
    #....
}


Hebben we nog meer ? :)

ow .. strings in hashes ALTIJD met single quotes
bij de assignment NIET de quotes weglaten
PHP:
1
2
3
$hash{'string'}; # ipv $hash{"string"};

%hash = ( 'string' => 'value' ); # ipv %hash = ( string => 'value' );


WEL 'return' gebruiken in functies (dit is niet nodig)
PHP:
1
2
3
4
5
6
7
8
9
sub new
{
    my $self = {};
    bless( $self, shift );

    return $self; 
    # niet
    $self;
}

Vind et trouwens zelf niet mooier/handiger .. gewoon een code style die ik nu gebruik voor m'n werk :)

Zo min mogelijk haakjes gebruiken bij functies zo lang het de leesbaarheid niet vernaggelt.
PHP:
1
2
3
return reverse split //, $theString;
#ipv
return( reverse( split( //, $theString ) ) );


Was het wel zo'n beetje
[edit]
OW!
en witregels tussen de blocks :P

  • Juup
  • Registratie: Februari 2000
  • Niet online
Hmmm... zoveel mensen zoveel styles. Ik kan niet EEN overeenkomst in alle posts vinden. Zou het niet mooi zijn als de hele wereld dezelfde style gebruikte (wishfull thinking)? Dank voor jullie commentaar.

Als jullie nu ook nog even naar de module kijken en zeggen wat je daar van vindt!

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Steije
  • Registratie: Juni 2000
  • Laatst online: 29-08 10:48
Accolade op nieuwe regel: Nee
Spaties rond = teken: Alleen aan de achterkant
Indenting: Tab
Spatie na ronde haak openen: Nee
Objecten met hoofdletter: Ja

PHP:
1
2
3
4
5
6
7
8
$foo= "Bar";

if($foo== "bar") {
    print "Foo is bar";
}

$Sql= new SqlDB;
$Sql->query();

[ Voor 0% gewijzigd door Steije op 02-08-2002 13:24 . Reden: Correctie ]

Some people manage by the book, even though they don't know who wrote the book or even what book.


  • Grum
  • Registratie: Juni 2001
  • Niet online
sommige mensen houden er echt een bizarre non-logische stijl aan over ... brrr :P
PHP:
1
2
3
4
5
6
7
8
9
<?
$foo= "Bar"; 
if($foo== "bar") { 
    print "Foo is bar"; 
} 

$Sql= new SqlDB; 
$Sql->query();
?> 


vind ik zelf dus ook niet leesbaar
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
$foo = "Bar"; 

if( $foo == "bar" )
{ 
   print "Foo is bar"; 
} 

$Sql = new SqlDB; 
$Sql->query();
?> 


is voor mij 'the way' ;)

Het oog ruimtelijker zonder meteen verspilling van whitespace te zijn

Het is ZEKER duidelijker .. naja .. vind ik :P

Andere 'bekende' perl codestyle
PHP:
1
2
3
for($i=0;$i<10;$i++)
{ $ret=doRuigeStuff->moreStuff->evenMoreStuff($inValue,$i);
}


Wat ECHT zwaar onleesbaar is :)

ow! btw ...

ipv
PHP:
1
2
3
$self->callFunctie()->callFunctie()->callFunctie();
# natuurlijk
$self->callFunctie->callFunctie->callFunctie;

  • Steije
  • Registratie: Juni 2000
  • Laatst online: 29-08 10:48
Zo al beter Grum? ;)

Some people manage by the book, even though they don't know who wrote the book or even what book.


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
zou'k ook nog even deze willen adden

PHP:
1
2
 if ( $blaat == "pipo" ) { // fout, nouja, foutgevoeliger
if ( "pipo" == $blaat ) { // beter


Waarom is de tweede nou minder fout gevoelig :? Laat maar eens een is teken weg bij de vergelijking en je weet het wel ;)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Das meer een tip voor newbies en het is totaal niet handig met de flow in je kop .. je moet steeds dingen gaan reversen als je het leest.

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Wat ergelijk is zijn collega's die inspringen met spaties :(

  • Steije
  • Registratie: Juni 2000
  • Laatst online: 29-08 10:48
't is pas erg als je dit moet gaan verbeteren:

PHP:
1
2
3
4
5
6
7
8
$i=0;
while ($i < sizeof($kijk))
{
if(strlen($kijk[$i]) > 1) {
echo "[img]$kijk[$i][/img]";
}
$i++;
}


;( :P

Some people manage by the book, even though they don't know who wrote the book or even what book.


Verwijderd

Glimi schreef op 02 augustus 2002 @ 13:38:
zou'k ook nog even deze willen adden

PHP:
1
2
 if ( $blaat == "pipo" ) { // fout, nouja, foutgevoeliger
if ( "pipo" == $blaat ) { // beter


Waarom is de tweede nou minder fout gevoelig :? Laat maar eens een is teken weg bij de vergelijking en je weet het wel ;)
Werkt ook zo lekker he, strings testen met "==", zou "eq" en "ne" niet beter werken?

Anyway, zoals Jaaap het doet, doe ik het ook ;), behalve dan ident, dat doe ik met maar een spatie. Ik zou die style conventie dus houden zoals ie nu is.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 02 augustus 2002 @ 17:30:
[...]
Werkt ook zo lekker he, strings testen met "==", zou "eq" en "ne" niet beter werken?

Anyway, zoals Jaaap het doet, doe ik het ook ;), behalve dan ident, dat doe ik met maar een spatie. Ik zou die style conventie dus houden zoals ie nu is.
Nee ik hou ervan om Perl topics te verzieken met PHP code :P

Grum: Maar je hebt gelijk dat het niet goed eruit ziet voor jezelf, maar werken doet het vaak wel. Daarom is het misschien ook niet beter om in een beautifier te stoppen.

Trouwens de compiler vangt dit toch wel af hoop ik dan maar :+

Verwijderd

Nee ik hou ervan om Perl topics te verzieken met PHP code
Dan heb ik niets gezegd... ;)

  • vargo
  • Registratie: Januari 2001
  • Laatst online: 01-09 14:44
Van Perl heb ik nog weinig kaas gegeten, maar:
* accolade op nieuwe regel? nee
* spaties rond = teken? ja
* indenting? twee spaties
* spatie na ronde haak openen? nee
raptorix schreef op 02 augustus 2002 @ 14:08:
Wat ergelijk is zijn collega's die inspringen met spaties :(
Ik gebruik UltraEdit als editor en hierbij kan je configureren hoe er met indenting moet worden omgegaan:
- er is een optie 'use spaces in place of tabs'
- de breedte is instelbaar van een TAB
- het aantal 'indent spaces' is in te stellen
En verder kan je:
- tabs naar spaties converteren
- (alle) spaties naar tabs converteren
- leading spaties naar tabs converteren.

EDIT: als iemand nog een beautifier code weet voor php zou ik die graag hebben...

  • Juup
  • Registratie: Februari 2000
  • Niet online
Versie 0.03 van de Beautifier is uit en naast de standaard bugfixes enzo kun je nu configureren waar je de accolade (CurlyBrace) wilt. Kijk in de bijgeleverde example.pl voor meer info.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.

Pagina: 1