Herrschn @ Hekkas.Com

Beispiele aus der Praxis

Die praxis des hekkns - musterlösungen aus dem leben

Wie auch beim biertrinken gibt es hier zahlreiche grundregeln die beachtet und gelernt werden müssen, um wirklich erfolgreich beim hekkn zu sein zu können. denn ein echter geniesser weiss, was wirklich alles herauszuholen ist...


Thema 1: sprechende variablenbenennungen

"panic" und "forgive_me" ... also das sind variablenbenennungen die hekka-qualitäten haben. hier auszüge aus dem code...

Beispiel 1.1 - das panic example
by hekka no. 1
...
my($panic) = 0;
while ($panic < 2) {
  $self->DebugPrint("MEMBER '$name', $panic\n");
  foreach $domain (@{$self->property_sets()}) {
    if (exists $self->{$domain}->{$name}) {
      
if (@_) {
        $self->DebugPrint("SET $name = $_[0]\n");
        return $self->{$domain}->{$name} = shift;
      }
      else {
        $self->_fetch_data()
        if $self->is_expired() && ($domain eq PROP);
        return $self->{$domain}->{$name};
      }
    }
  }
  $panic++;
  $self->{forgive_me} = 1;
  unless ($self->{initializing}) {
  $self->{initializing} = 1;
  $self->initialize();
}
...

Beispiel 1.2 - die forgive_me variante
by hekka no. 1
...
$self->{forgive_me}++;
$self->initialize();
$self->{forgive_me}--;
$self->load_cache();
...
foreach (keys %data) {
  foreach $domain ( @sets) {
    croak "property '$what::$_' already exists in $domain"
    if exists $self->{$domain}->{$_} && !$self->{forgive_me};
  }
  #DebugPrint("define $what.$_ = ", $data{$_}, "\n");
  $self->{$what}->{$_} = $data{$_};
}
...

 

Thema 2: perfekt strukturierter quellcode

Diese liste der auserwählten wundercodes könnte man natürlich endlos weiterführen. aufgrund unserer immensen tätigkeiten sind an dieser stelle jedoch nur einige wenige highlights verzeichnet... aber auch diese codefragmente lassen das herz eines wahren hekkas schon deutlich höher schlagen!

Beispiel 2.1
by hekkagott
echo '16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D3F204445524F42snlbxq'|dc

Beispiel 2.2
by hekkagott & hekkameista
for i in *; do
  for j in *; do
    [ -f "$i" -a -f "$j" -a "$i" != "$j" ] &&
      ( diff "$i" "$j" > /dev/null; \
      [ $? -eq 0 ] && echo "$i and $j are equal")
  done
done

Beispiel 2.3
by hekka no. 1
sub gen_header() {
  
my ($fileinfo, $printinfo, $host) = @_;
  my @header;
  my @all;
  foreach ( keys %{$fileinfo->{$host}} ) {
    push(@all, $_);
    next if (! exists($printinfo->{$_}) || ! $printinfo->{$_});
    push(@header, $_);
  }
return [ map { $_->[0] }
  sort { $printinfo->{$a->[0]} <=> $printinfo->{$b->[0]} }
  map { [ $_, keys %$printinfo ] }
  @header ];
}

Beispiel 2.4
by hekkagott
grep -v '+----------' newfile1.txt | perl -ne 's/\ *\|\ */\t/g; print "$_\n"'

Beispiel 2.5
by lettahekka
#include #include <sys/time.h> #include <X11/Xlib.h> #include <X11/keysym.h> double L ,o ,P ,_=dt,T,Z,D=1,d, s[999],E,h= 8,I, J,K,w[999],M,m,O ,n[999],j=33e-3,i= 1E3,r,t, u,v ,W,S= 74.5,l=221,X=7.26, a,B,A=32.2,c, F,H; int N,q, C, y,p,U; Window z; char f[52] ; GC k; main(){ Display*e= XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0)) ; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400, 0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6} ; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B= sin(j); a=B*T*D-E*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E *T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s ]== 0|K >fabs(W=T*r-I*E +D*P) |fabs(D=t *D+Z *T-a *E)> K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K *D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M; XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){ XEvent z; XNextEvent(e ,&z); ++*((N=XLookupKeysym (&z.xkey,0))-IT? N-LT? UP-N?& E:& J:& u: &h); --*( DN -N? N-DT ?N== RT?&u: & W:&h:&J ); } m=15*F/l; c+=(I=M/ l,l*H +I*M+a*X)*_; H =A*r+v*X-F*l+( E=.1+X*4.9/l,t =T*m/32-I*T/24 )/S; K=F*M+( h* 1e4/l-(T+ E*5*T*E)/3e2 )/S-X*d-B*A; a=2.63 /l*d; X+=( d*l-T/S *(.19*E +a *.64+J/1e3 )-M* v +A* Z)*_; l += K *_; W=d; sprintf(f, "%5d %3d" "%7d",p =l /1.7,(C=9E3+ O*57.3)%0550,(int)i); d+=T*(.45-14/l* X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47 *I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W* 179*v)/2312; select(p=0,0,0,0,&G); v-=( W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u )/107e2)*_; D=cos(o); E=sin(o); } }

Beispiel 2.6
by unknown
who | grep -i blonde | date; cd ~; unzip; touch; finger; mount; gasp; yes; uptime; umount; sleep

Beispiel 2.7 - Selbsterklärendes LaTeX Exzerpt einer Dissertation ... einer Guten!
by pirscher
\begin{equation}
\sum_{i=2}^{n}\left(f_i\cdot{}\prod_{j=1}^{i- 1}s_j\right)=\underbrace{
\left(\sum_{i=2}^{k}\prod_{j=1}^{i-1}s_j\right)}_{(a)}+\underbrace{
\left(\sum_{i=k+1}^{k+l}\prod_{j=1}^{i-1}s_j\right)}_{(b)}+\underbrace{
\left(\sum_{i=k+l+1}^{n}\left(f_i\cdot{}\prod_{j=1}^{i-1}s_j\right)
\right)}_{(c)}%
\end{equation}

 

Thema 3: aussagekräftige fehlermeldungen

Nicht nur sprechende variablenbenennungen sind wichtig - nein - auch (wenn sie nicht verwendet werden) fehlermeldungen sollen klar und deutlich auskunft darüber erteilen, wo was warum wie wann denn nun mehr oder weniger schiefgegangen ist...

Beispiel 3.1
gastbeitrag by ladyhekka, Source:offizielles release des hyperwave software develpoment kits ;-)
public static void main (String[] args) {
  if (args.length != 2)
  
{
    System.out.println("nix host or nix class" );
    System.exit(1);
  }
  Examples examples = new Examples();
  examples.execute(args);
}


Thema 4: hilfreiche kommentierung

Versteckte hinweise in den quellcode mit einzubeziehen gehört förmlich zum guten ton des software engineerings... am besten so versteckt, dass keiner sie findent, und nur der, der sowieso weiss um was es geht... unter umständen...

Beispiel 4.1
gastbeitrag by pirscher, Source: produkt-source von winterheller software
//////////////////////////////////////////////////////////
// !!!!!!!!!!!!!!!!! Hekk, Hekk, Hekk !!!!!!!!!!!!!!!!! //
//////////////////////////////////////////////////////////
// nachdem es (zur Zeit) noch keine Möglichkeit gibt, //
// beim Export die zusätzlich notwendigen FRs über //
// addFR anzugeben, muss hier der XML-String im //
// nachhinein geändert werden und die addFR manuell //
// eingefügt werden. //
//////////////////////////////////////////////////////////