Forum: Mikrocontroller und Digitale Elektronik while Schleife


von jonas (Gast)


Lesenswert?

Hallo,

Gibt es einen besseren Weg die While schleife zu verlassen , denn hin 
und wieder bleibt der Controller hängen.
1
  for(h=1; h<29; h++)         
2
   {
3
  
4
     
5
     txbuf[0]= h;
6
     txbuf[1]= dht_Komand_read;     // Starte die messung
7
     txbuf[2]= DATA_READ; //read data
8
9
     rf12_txdata(txbuf, 3);
10
      
11
      while(2)
12
       { 
13
         if (rf12_data() == 0)  // Daten im RF12 RX Puffer ?
14
    {         
15
       rf12_rxdata(rxbuf, 12);
16
              
17
                     if (rxbuf[0] == '0')  //Daten korrekt
18
          {
19
      for(i=0; i<3; i++)  
20
                         {                                         
21
              buf_h[i] = rxbuf[1+i]; 
22
       }                                                      
23
24
                       buf_h[4] = '\0';
25
           a = atoi(buf_h);
26
           HumWert[h] = a;
27
           error = 0;
28
           break;
29
          }          
30
         else  
31
          {
32
           error = 1; 
33
           break;
34
          }          
35
    } 
36
          
37
        
38
      }

von Dirk B. (dirkb2)


Lesenswert?

error in der Bedingung der Schleife auswerten.

Warum eigentlich 2 in der Schleifenbedingung?

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

wenn du deinen Code als Datei anhängst, dann währe er noch so lesbar wie 
du ihn erstellt hast. So wie er jetzt im Browser sichtbar ist bekomme 
ich Augenkrebs und kann die Codeblöcke nicht zuordnen und das macht sich 
bei der Verschachtelung schlecht.

Sascha

von Dirk B. (dirkb2)


Lesenswert?

Wenn nach dem Feuchtewert keine Ziffer mehr kommt, reicht ein
a = atoi(rxbuf+1);
aus.
Wenn da doch eine Ziffer ist, kann man rxbuf[5] auf '\0' setzen.
rxbuf wird eh nicht mehr verwendet.

Da rxbuf[0] '0' ist sollte dann a = atoi(rxbuf); auch gehen.

von jonas (Gast)


Angehängte Dateien:

Lesenswert?

Sascha W. schrieb:
> Hallo,
>
> wenn du deinen Code als Datei anhängst, dann währe er noch so lesbar wie
> du ihn erstellt hast. So wie er jetzt im Browser sichtbar ist bekomme
> ich Augenkrebs und kann die Codeblöcke nicht zuordnen und das macht sich
> bei der Verschachtelung schlecht.
>
> Sascha

siehe Anhang

von Rolf M. (rmagnus)


Lesenswert?

jonas schrieb:
> for(i=0; i<3; i++)
>                          {
>               buf_h[i] = rxbuf[1+i];
>        }
>
>                        buf_h[4] = '\0';

Hier wird buf_h[3] nie beschrieben.

Sascha W. schrieb:
> wenn du deinen Code als Datei anhängst, dann währe er noch so lesbar wie
> du ihn erstellt hast.

Das ist so, wie er es erstellt hat. Er hat ja Code-Tags verwendet. Die 
Einrückung ist einfach kaputt.

von TABs Hater (Gast)


Lesenswert?

Rolf M. schrieb:
> Die Einrückung ist einfach kaputt.

Nein, das Hirn ist kaputt. "Man" müsste sich einfach mal drauf
einigen keine Tabs in Sourcen zu verwenden.

Denn Tabs passen genau nur dann wenn sie der Ersteller der
Source auf seine Bedürfnisse bzw Einstellungen angewandt hat.

von Rolf M. (rmagnus)


Lesenswert?

TABs Hater schrieb:
> Nein, das Hirn ist kaputt. "Man" müsste sich einfach mal drauf
> einigen keine Tabs in Sourcen zu verwenden.

Ich mag auch keine Tabs.

> Denn Tabs passen genau nur dann wenn sie der Ersteller der
> Source auf seine Bedürfnisse bzw Einstellungen angewandt hat.

Eigentlich nicht. Gerade das ist ja der Sinn (und einzige Vorteil) von 
Tabs. Die Einrückung passt sich automatisch an die Vorlieben des 
Benutzers an.
Das Problem entsteht dann, wenn die Tab-Einrückung nicht konsequent 
durchgezogen wird. Meiner Erfahrung nach ist sie das aber leider 
praktisch nie. Sobald Tabs und Spaces zur Einrückung gemischt werden, 
ist alles durcheinander.

von TABs Hater (Gast)


Lesenswert?

Rolf M. schrieb:
> Das Problem entsteht dann, wenn die Tab-Einrückung nicht konsequent
> durchgezogen wird.

Käse. Denn selbst wenn man Tabs konsequent einsetzt sind sie
nutzlos sobald die Source in einem anderen Medium
veröffentlicht wird. Dieses Medium hat nämlich garantiert eine
andere Defnition "wieviel" ein Tab ist. Und schon geht's los
mit dem Chaos.

Ich finde an der Verwendung von Tabs erkennt man Leute die keine
Übersicht darüber haben was sie tun und wie sie konfigurieren.

Einfach drauf los, wird schon irgendwie gehen ....

von TABs Hater (Gast)


Lesenswert?

TABs Hater schrieb:
> Dieses Medium hat nämlich garantiert eine
> andere Defnition "wieviel" ein Tab ist.

Dieses Setting ist nicht genormt. Daher:

TABs Hater schrieb:
> Denn Tabs passen genau nur dann wenn sie der Ersteller der
> Source auf seine Bedürfnisse bzw Einstellungen angewandt hat.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

vielleicht hilft das euch falls ihr es noch nicht wußtest.
Man kann in vielen Editoren Tabs durch Leerzeichen ersetzen.

Bsp. Notepad++
Einstellungen > Optionen
links "Sprache" wählen
rechts Haken setzen bei "durch Leerzeichen ersetzen" und Tabbreite 
einstellen

Bsp. Atmel Studio 7
Tools > Option > Text Editor > All Languages > Tabs > "Insert spaces"

wünsche fröhliches coden ...   :-)

von Gerald K. (geku)


Lesenswert?

jonas schrieb:
> denn hin und wieder bleibt der Controller hängen

Wenn der MC hängt, dann hilft nur mehr der Watchdog.

In der Watchdog-Routine könnte dann die richtig Maßnahmen zur 
Fehlerbehandlung unternommen werden.

Beitrag #6087382 wurde vom Autor gelöscht.
von Rolf M. (rmagnus)


Lesenswert?

TABs Hater schrieb:
> Rolf M. schrieb:
>> Das Problem entsteht dann, wenn die Tab-Einrückung nicht konsequent
>> durchgezogen wird.
>
> Käse. Denn selbst wenn man Tabs konsequent einsetzt sind sie
> nutzlos sobald die Source in einem anderen Medium
> veröffentlicht wird. Dieses Medium hat nämlich garantiert eine
> andere Defnition "wieviel" ein Tab ist. Und schon geht's los
> mit dem Chaos.

Warum sollte es dann Chaos geben? Wie gesagt: Das gibt es nur dann, wenn 
man mit Tabs uns Spaces gemischt einrückt, weil dann die Weiten 
natürlich nicht mehr zusammenpassen.

Gerald K. schrieb:
> Wenn der MC hängt, dann hilft nur mehr der Watchdog.
>
> In der Watchdog-Routine könnte dann die richtig Maßnahmen zur
> Fehlerbehandlung unternommen werden.

Nein. Es hilft rauszubekommen, warum er hängen bleibt und diesen Fehler 
zu beheben.

von Sascha W. (sascha-w)


Lesenswert?

jonas schrieb:
> siehe Anhang

schon besser.
1
rf12_rxdata(rxbuf, 12);
soll 12 Byte lesen (empfangen?) was passiert wenn keine 12 Byte zur 
Verfügung stehen? Wartet die Funktion dann vielleicht ewig?

Sascha

von jonas (Gast)


Lesenswert?

Sascha W. schrieb:
> jonas schrieb:
>> siehe Anhang
>
> schon besser.rf12_rxdata(rxbuf, 12);
> soll 12 Byte lesen (empfangen?) was passiert wenn keine 12 Byte zur
> Verfügung stehen? Wartet die Funktion dann vielleicht ewig?
>
> Sascha

Es stehen immer 12 Byte Gesendet

von Gerald K. (geku)


Lesenswert?

Rolf M. schrieb:
> Es hilft rauszubekommen, warum er hängen bleibt und diesen Fehler zu
> beheben

So ist es! Man kann den PC und andere Register ausgeben.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

mit dem Codeschnipsel kann man nicht wirklich viel anfangen, weil man 
nicht weiß was die anderen Funktionen machen. Nur sehe ich das der TO 
ohne jede Kontrolle irgendwelche Bytes einliest und scheinbar hofft das 
alles an der gewünschten Position landet. Eine Abfrage der aktuellen 
Indexposition erkenne ich auch nicht. Ich könnte mir vorstellen das über 
die Buffergrenze geschrieben/gelesen wird.
Ohne Protokoll wird das nichts laut meiner Meinung. Mit Start und 
Endekennung kann auch eine fehlerhafte Übertragung erkannt und verworfen 
werden. Man kann damit die Einlesefunktion selbstständig wieder auf 
Anfang setzen, sodass sie auf die nächste Übertragung wieder sauber 
reagieren kann. Jeder erfolgreiche Empfgang sollte mit 'OK' beantwortet 
werden. Dann erst sollte die Quelle ein neues Datenpaket schicken. Bei 
Fehler muss man dann entscheiden ob das alte nochmal geschickt werden 
soll und wie oft oder anders reagiert werden sollte.

von Sascha W. (sascha-w)


Lesenswert?

jonas schrieb:
> Sascha W. schrieb:
>> jonas schrieb:
>>> siehe Anhang
>>
>> schon besser.rf12_rxdata(rxbuf, 12);
>> soll 12 Byte lesen (empfangen?) was passiert wenn keine 12 Byte zur
>> Verfügung stehen? Wartet die Funktion dann vielleicht ewig?
>>
>> Sascha
>
> Es stehen immer 12 Byte Gesendet
??
Wenn wir hier von Funk reden (was rf12 vermuten lässt) dann heist 12 
Byte senden nicht zwangsläufig das auch 12 Byte ankommen. Es sei denn 
das Funkmodul würde schon selbständig eine Fehlerkorrektur machen.

Sascha

von sid (Gast)


Lesenswert?

jonas schrieb:
> Gibt es einen besseren Weg die While schleife zu verlassen , denn hin
> und wieder bleibt der Controller hängen.

Du benutzt die while-schleife ja quasi als "Pause" funktion
die darauf wartet, daß rf12_data() Null zurückliefert;
daher würde ich sie auch leerlassen
das spart Dir die darauffolgende if-kondition
(sie wird ja in der while ausreichend abgefragt)
Über die Pufferlänge indes solltest Du Dir tatsächlich im Klaren sein!

Und wie Rolf korrekt bemerkt hat
Rolf M. schrieb:
> Hier wird buf_h[3] nie beschrieben.
buf_h[3] sollte also den Terminator bekommen mMn.
1
void read_meas(void)
2
{
3
  u8 n = 0;
4
  u8 i = 0;
5
  u8 h = 0;
6
  u8 error = 0;
7
  u16 y = Y_start;
8
  int a = 0;
9
  char buf_h[10];
10
  char buf_t[10];
11
12
13
  for(h=1; h<29; h++)
14
  {
15
    txbuf[0]= h;            //Adresse
16
    txbuf[1]= dht_Komand_read;      // Starte die messung
17
    txbuf[2]= DATA_READ;        //read data
18
19
    rf12_txdata(txbuf, 3);
20
21
    while(rf12_data() != 0)        //Noch keine Daten im RF12 RX Puffer ?
22
    {
23
    }
24
    
25
    rf12_rxdata(rxbuf, 12);
26
    
27
    if (rxbuf[0] == '0')    //Daten korrekt
28
    {
29
      for(i=0; i<3; i++)
30
      {
31
        buf_h[i] = rxbuf[1+i];
32
      }
33
      buf_h[4] = '\0';    //sollte buf_h[3] heissen mMn
34
      a = atoi(buf_h);
35
      HumWert[h] = a;
36
      error = 0;
37
    }
38
    else
39
    {
40
      error = 1;
41
    }
42
  }
43
}

von Axel S. (a-za-z0-9)


Lesenswert?

jonas schrieb:
> Gibt es einen besseren Weg die While schleife zu verlassen,
> denn hin und wieder bleibt der Controller hängen

Diese Frage ergibt keinen Sinn. Oder glaubst du dein Controller "bleibt 
hängen", weil du einen "schlechten" Weg zum Verlassen der Schleife 
gewählt hast?

Was meinst du eigentlich mit "bleibt hängen"? Bleibt wo hängen?

Deine Diagnose ist mangelhaft. Das einzige was einigermaßen sicher zu 
sein scheint, ist daß dein µC nicht das machst, was er deiner Meinung 
nach machen sollte. Aber bevor du nach dem "warum" fragst, solltest du 
erstmal klären, was er überhaupt macht.

von A. S. (Gast)


Lesenswert?

Axel S. schrieb:
> . Aber bevor du nach dem "warum" fragst, solltest du erstmal klären, was
> er überhaupt macht.

Und auch, was er machen sollte.

von sid (Gast)


Lesenswert?

TABs Hater schrieb:
> Nein, das Hirn ist kaputt. "Man" müsste sich einfach mal drauf
> einigen keine Tabs in Sourcen zu verwenden.

Schwachköpfe verstehen nicht, dass der TAB ansich exakt genau das 
Steuerzeichen ist,
welches zur Einrückung von Text/Code gedacht ist...
und kommen auf die dämliche Idee,
dass ihre aneinanderreihung von Leerzeichen in irgendeiner Form 
überlegen sei.

Aber das sind in der Tat ausschliesslich Schwachköpfe ;)
Mit einer Schnittmenge derer Ungeübten deren kleiner Finger aus Versehen 
die verteufelte CAPSLock Taste trifft, das sind aber Ausnahmen ;)

Ich kann meine Einrückung im Editor steuern (mehr weniger, kaum merklich 
bis wahnwitzig) mit zwei Klicks.. und der Quellcode hat merklich weniger 
"bytes"

Klar sind manche internetseiten nicht in der Lage tabs ordentlich zu 
rendern,
(github kann das super übrigens)
aber Quellcode ist in erster Linie eben nicht für's Internet gedacht, 
sondern für den QuellcodeEditor ;)

...sidenote:...
https://www.youtube.com/watch?v=8ryt45ShyYI

von A. S. (Gast)


Lesenswert?

sid schrieb:
> Aber das sind in der Tat ausschliesslich Schwachköpfe ;)

Es ist eher Style. Tabs nur am Anfang der Zeile sind OK, wenn
- sie nur genau da verwendet werden
- UND niemals Blocksatz innerhalb verschiedener Einrückungen verwendet 
wird.

Wenn man das in einem Projekt durchalten kann, OK. Doch irgendwann will 
der erste zwei Token in 2 Zeilen aufeinander ausrichten.

Nur Leerzeichen ist quasi der Fallback, der dann aber einen festen 
(absoluten) Wert für Tabs erfordert.
1
   if(proz>100){   /* proz zu gross     */
2
      proz=100;    /* begrenze auf 100% */
3
   }

von sid (Gast)


Lesenswert?

A. S. schrieb:
> Es ist eher Style. Tabs nur am Anfang der Zeile sind OK, wenn
> - sie nur genau da verwendet werden
> - UND niemals Blocksatz innerhalb verschiedener Einrückungen verwendet
> wird.

Jo, ich redete nicht von denen die Leerzeichen benutzen weil sie sie 
bequemer finden, und damit niemanden behelligen;
ich rede von denen die Anderen damit auf die Eier gehen,
daß Leerzeichen die besseren 'Tabulatoren' seien ;)

Mir ist der Codingstyle anderer Programmierer egal,
meinetwegen können sie auch inline/endline kommentare in Blocksatz 
basteln
(mein editor kann damit umgehen)
Es wird ja eh nur dann fies wenn jemand nen Zeilenumbruch erzwingt
und das hab ich mir schon lange abgewöhnt ;)

Bei mir läuft eh erst alles mit dem ich wirklich arbeiten will
durch ne reformatierung (newline brackets, tab-indentation, zeilenenden 
etc)

Und bei "Gemeinschaftsarbeiten" bin ich zum Glück derjenige,
der die Vorgaben macht :D

Ich gebe Dir aber in einem Fall recht:
lange zumeist verschachtelte if-konditionen
sind NIE wirklich schön in Zeilen aufzugliedern
weder mit Tabs noch mit Leerzeichen,
irgendwann kracht das immer aus dem Blocksatz.
Solange da aber logisch gruppiert ist,
find ich das nichtmal soooo schlimm
nur halt nicht schön ;)

Am Ende zählt doch nur ob etwas 'wartbar' bleibt oder nicht...
kann man in 18 oder auch 48 Monaten den Code in die Hand nehmen und 
versteht auf den ersten, maximal zweiten Blick was wo wie gemeint war?
ob ich das durch den reformatter schicke oder nicht ist mir dabei auch 
egal (dauert nichtmal ne Sekunde)

camelCase oder under_scores,
inline oder newline brackets,
spaces oder tabs,
die Liste ist endlos..
Nur wer jemand anderem seine Meinung aufdrängen will ist ein Vollidiot,
das gilt für Codestyle, Religion, Sexualität, Ernährungsgewohnheiten
und und und.

von Stefan F. (Gast)


Lesenswert?

sid schrieb:
> Schwachköpfe verstehen nicht

dass Quelltext-Editoren keine Schreibmaschinen sind.

Manche stellen Tabulatoren einfach als 4 oder 8 Leerzeichen dar, während 
andere die Seite beginnend vom Linken Rand im Spalten zu je 4 oder 8 
Leerzeichen breite aufteilen.

Darüber hinaus hat jede Firma ihre eigenen Regeln, wie das bei 
Quelltexten zu handhaben ist.

Firmen- und Programm-Übergreifend hat man am wenigsten Schwierigkeiten, 
wenn man konsequent mit Leerzeichen einrückt.

> Mir ist der Codingstyle anderer Programmierer egal,

Wie wird deine Teamfähigkeit bewertet?

> Bei mir läuft eh erst alles mit dem ich wirklich arbeiten
> will durch ne reformatierung

Arbeitest du auch mit Python oder Assembler? Wie geht das dort?

> Nur wer jemand anderem seine Meinung aufdrängen will ist ein Vollidiot

Warum nennst du die anderen dann "Schwachköpfe"?

von sid (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Manche stellen Tabulatoren einfach als 4 oder 8 Leerzeichen dar, während
> andere die Seite beginnend vom Linken Rand im Spalten zu je 4 oder 8
> Leerzeichen breite aufteilen.

Ja es gibt halt gute und schlechte text/code editoren..
(spalten ist korrekt, ersetzen durch leerzeichen ist ein fehlerhafter 
Krückstock)
aber auch das ist ja kein Beinbruch..
Du kannst ja auch n bescheuerten Font nehmen der Leerzeichen als 1px 
rendert, oder einen der 60px rendert, dann haste auch Mumpitz auf dem 
Monitor.
Code IMHO gehört durch einen monospace font dargestellt,
aber wenn jmd seinen code-editor auf comic sans stellt ist mir das 
ebenso egal, betrifft mich ja nicht.


Stefan ⛄ F. schrieb:
> Darüber hinaus hat jede Firma ihre eigenen Regeln, wie das bei
> Quelltexten zu handhaben ist.

Das ist richtig, seit einiger Zeit meine Regeln ;)
Und die sind gaaanz einfach
tab einrückung am Zeilenanfang,
newline brackets
konsistenz bei funktions und variablen namen formatierung
sowie eindeutigkeit bei deren Vergabe
failsafe mulitline comments falls 'code' ausformatiert wurde
und möglichst weniger als 240 zeichen pro Zeile

Die wenigen Kunden die den Quellcode ausgehändigt bekommen haben,
haben sich jdf nicht darüber beklagt.
die bekommen aber eh noch ausführlicher kommentierten code
auf Wunsch mit codeflow chart und doxygen

Stefan ⛄ F. schrieb:
> Firmen- und Programm-Übergreifend hat man am wenigsten Schwierigkeiten,
> wenn man konsequent mit Leerzeichen einrückt.

Das ist ja auch ein Märchen,
solange der Code selbst in Ordnung ist, hat man nie Schwierigkeiten,
nur wenn der Code mangelhaft ist,
dann fängt der Cooperationspartner auch an sich über codingsttyles zu 
beklagen.
Denn ordentliche Partner wissen, daß das Spiel in beide Richtungen 
gespielt werden kann und eh zu nix führt.

Stefan ⛄ F. schrieb:
> Wie wird deine Teamfähigkeit bewertet?
Bisher keine Klagen... seit ich aber die Kontrollinstanz darstelle
vermute ich mangelnde Klagen rühren eventuell auch daher.
Die einzigen Klagen die mir im Gedächtniss blieben von davor,
waren uneindeutige Variablennamen (was die wartbarkeit mindert)
das ist aber schon ne weile her ;)

Gemeint war damit aber, dass es mir völlig Hupe ist,
welchem Codestyle Quelltexte im Internet haben.
Ob Code gut oder schlecht ist richtet sich nach gaaanz anderen 
Kriterien.
Lesbarkeit (für Teams oder Veröffentlichungen) ist da schon viel 
wichtiger,
als die Frage ob man underscore oder camelcase Funktionsnamen nutzt,
oder wie man einrückt, ob man nach 85Zeichen umbricht oder bei 120 oder 
garnicht,
ob man die Klammern inline setzt oder in eine neue Zeile schiebt.
Bezeichnende Funktions und variablennamen sind da deutlich wichtiger als 
tabs oder leerzeichen am zeilenanfang.
Ich hab lieber für mich falsch formatierten Code
der anhand ordentlicher Bezeichnungen lesbar ist,
als für mich korrekt formatierten Code der aber von cryptografischen 
Bezeichnungen wimmelt die mich Stunden kosten nachzuvollziehen.
(kurz: ich hab lieber den reformatter ne sekunde an, als den 
deobfuscator für ne stunde ;))

Stefan ⛄ F. schrieb:
> Arbeitest du auch mit Python oder Assembler? Wie geht das dort?

Ne, python hab ich nie ernst genug genommen um es wirklich lernen zu 
wollen, syntax mit der ich nie warm wurde;
Die zwei drei Fingerübungen in python kann man nicht arbeiten nennen.
Aber auch dafür hatte ich irgendwo einen code-beautifier..
müsste ich aber auch erst auf alten Festplatten nach suchen..

Und assembler kann ich nur mit cheatsheet auf dem Schreibtisch;
da ist aber generell eher nicht soo viel zu reissen mit Einrückungen ;)
Arbeiten damit, nein, das würde zu lange dauern;
das müssen dan Andere für mich machen falls nötig.

Ich kann beides lesen (python noch besser als assembler)
aber das ist es im Grunde auch schon.

Stefan ⛄ F. schrieb:
>> Nur wer jemand anderem seine Meinung aufdrängen will ist ein Vollidiot
> Warum nennst du die anderen dann "Schwachköpfe"?
Synonym..

Ich glaub Du verstehst immernoch nicht...
Du magst Leerzeichen, dann benutz sie (macht mir nix)
muss ich deinen Code per Zufall mal weiterverarbeiten bieg ich mir den 
schon so wie ich ihn schöner finde.
bekommst Du mal aus Versehen meinen in die Finger machst Du dasselbe und 
echauffierst Dich auch nicht ... alles ist prima.

Kommt jetzt aber ein Vollidiot daher und beklagt sich öffentlich im 
Internetz,
dass Tabs Mist sind und nur Leerzeichen in Quelltexte gehören
(weil er ein Schwachkopf ist, oder sein Codeeditor leider mist ist oder 
beides)
DANN geh ich steil und tret dem Pfosten auf die Füsse so fest ich kann!
Für die Unzulänglichkeiten diverser linux shell editoren kann ich nix.

Mir ist schnuppe ob sich die Weichflöte aufm Weihnachtsmarkt vegan 
ernährt,
aber wenn die mir in die Bratwurst quatschen will verjag ich sie durch 
Stimmerhebung.

von Stefan F. (Gast)


Lesenswert?

sid schrieb:
> bekommst Du mal aus Versehen meinen in die Finger machst Du dasselbe und
> echauffierst Dich auch nicht

Das stimmt wohl. Solche Kleinigkeiten regen mich schon lange nicht mehr 
auf.

> Kommt jetzt aber ein Vollidiot daher und beklagt sich öffentlich
> im Internetz, dass Tabs Mist sind ... DANN geh ich steil

Warum? Im Internet Herrscht Meinungsfreiheit, sollte man hoffen dürfen. 
Lass andere doch propagieren, was immer sie wollen - solange sie keine 
kleinen Kinder fressen.

Einmal seine Meinung zum Thema sagen sollte genügen. Es gibt nicht die 
eine richtige Meinung. Softwareentwicklung ist doch keine Religion*.

*) selbst da gibt es meiner Meinung nach nicht die eine einzig wahre 
Wahrheit. Aber wer da glaubt: bitteschön, mir egal, solange er friedlich 
bleibt.

von Rudolph R. (rudolph)


Lesenswert?

sid schrieb:
> Bei mir läuft eh erst alles mit dem ich wirklich arbeiten will
> durch ne reformatierung (newline brackets, tab-indentation,
> zeilenenden etc)

Hast Du mal einen Tipp für ein Tool dazu?

von Nico W. (nico_w)


Lesenswert?

clang-format z.B.

von Rudolph R. (rudolph)


Lesenswert?

Nico W. schrieb:
> clang-format z.B.

Krasses Teil, zig Parameter zum dran schrauben und was da per Default 
raus kommt mit der LLVM Konfiguration gefällt mir gar nicht.
Das könnte sich eine Weile hinziehen...

von Rolf M. (rmagnus)


Lesenswert?

sid schrieb:
> Kommt jetzt aber ein Vollidiot daher und beklagt sich öffentlich im
> Internetz, dass Tabs Mist sind und nur Leerzeichen in Quelltexte gehören
> (weil er ein Schwachkopf ist, oder sein Codeeditor leider mist ist oder
> beides) DANN geh ich steil und tret dem Pfosten auf die Füsse so fest ich
> kann!

Oder anders ausgedrückt: Du machst dich auch zum Vollidiot.
Dein Problem ist, dass du einerseits behauptest zu wollen, dass jedem 
sein eigener Stil zugestanden wird, andererseits pauschal jeden für blöd 
erklärst, der nicht den von dir bevorzugten Stil nutzt.

von sid (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Warum? Im Internet Herrscht Meinungsfreiheit, sollte man hoffen dürfen.
> Lass andere doch propagieren, was immer sie wollen - solange sie keine
> kleinen Kinder fressen.

Das Problem mit Meinungen im Internet ist,
daß oftmals Pfeifen kein Gegner ggü steht;
das "der Klügere gibt nach" mit dem wir alle aufgewachsen sind,
ist hier schlicht FALSCH (leider)!
Die Dümmeren sind einfach zuviele und zu laut.
das könnte das ungeübte Auge für "allgemeine Wahrheit" halten...

und natürlich ist das Schnuppe bei diesem Thema,
aber es gibt ausreichend andere Thema wo "ignorierend wegschweigen" 
KEINE Lösung ist, und erst Recht nicht im Internet...

Schaut man sich nur die "Werbemacher" an die Ihren "Puls der Zeit" im 
Internet ablesen, dann stellt man gaaanz schnell fest,
daß nur Quantität zählt, nie Inhalt.
(Ich sag nur vegane Leberwurst oder vegetarisches Hühnchen, ernsthaft? 
da hat doch jemand den Schuss nicht gehört)
und das nur das harmloseste aller Beispiele zu nennen ;)

Stefan ⛄ F. schrieb:
> mir egal, solange er friedlich
> bleibt.
exakt und falls nicht komm dann wohl ich ins Spiel :D

Rudolph R. schrieb:
> Hast Du mal einen Tipp für ein Tool dazu?

In den meisten Fällen benutze ich aus Bequemlichkeit nur den
"reindent c++ code" aus dem notepad++ TextFX plugin (leider alt und nur 
32bit)
aber da der meiste externe code eh erstmal in notepad++ landet langt das 
völlig für die lesbarkeit.
handelt es sich um mehrere Quelldateien
ja ClangFormat aber häufiger noch Astyle

unausweichliche Webseite zu den Optionen von ClangFormat:
http://clang.llvm.org/docs/ClangFormatStyleOptions.html

und mal ein kurzer Blick zu Artistic Style (Astyle)
http://astyle.sourceforge.net/
(je nach Rechner an dem ich grad sitze, benutz ich eins von beiden)

Beides aber nur wenn grössere Projekte
mit mehreren dutzend files umzugestalten sind.

für weniger Umfangreiches mag ich lieber was mit GUI
wie universal indent GUI,
http://universalindent.sourceforge.net
das half auch die Einstellungen für Astyle zu basteln die ich wollte ;)
Ausserdem ist da mein vermutlich kommender Favorit drin:
uncrustify (http://uncrustify.sourceforge.net/)
hab ich wie gesagt nur nur in der GUI da oben,
scheint mir aber verblüffend umfangreich :D
Ich hab mich ehrlich gesagt noch nicht ausreichend im Detail
damit beschäftigt um Astyle oder ClangFormat verdrängen könnte.
(aus: "Dinge die man vor sich herschiebt Band 3")
mangelnde Notwendigkeit vermutlich... Faulheit möglicherweise.. man 
weiss es nicht :D

von Stefan F. (Gast)


Lesenswert?

sid schrieb:
> Das Problem mit Meinungen im Internet ist,
> daß oftmals Pfeifen kein Gegner ggü steht;

Das ist für intelligente Menschen kein Problem, und auch die anderen 
können damit leben. Nur du nicht.

von sid (Gast)


Lesenswert?

Oh übergesehen
Rolf M. schrieb:
> Oder anders ausgedrückt: Du machst dich auch zum Vollidiot.
> Dein Problem ist, dass du einerseits behauptest zu wollen, dass jedem
> sein eigener Stil zugestanden wird, andererseits pauschal jeden für blöd
> erklärst, der nicht den von dir bevorzugten Stil nutzt.

Nein nein, Du misdeutest.
Ich nutze nur die Mechanismen besagter Vollpfosten gegen sie.
Schimpfen sie lauthals über meins, schimpfe ich lauterhalser über ihrs.

Ich habe festgestellt, dass das viel effektiver ist als zivilisiert zu 
argumentieren ;)
Manche merken trotz mangelnder Auffassungsgabe nämlich dann schnell,
daß sie nur das Echo anschreien still zu sein.

Und wie ich schon mehrfach erörtert habe, ich halte keinen für blöd der 
lieber Leerzeichen benutzt zB weil sein bevorzugter Editor mit Tabs 
Probleme hat
(Tabs in vim sind die Hölle auf Stelzen)
Solange er nicht verlangt dass alle Welt in vim und ohne Tabs coden 
muss.
Erst das machte ihn dann zum Vollidioten!

Um es mit Stefans Analogie zu sagen..
Ich lass Dich Deiner Religion nachgehen, lass Du mir meine
ansonsten haben wir zwei schnell Streit!

von sid (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Das ist für intelligente Menschen kein Problem, und auch die anderen
> können damit leben. Nur du nicht.

Oha.. waghalsiger Kommentar

Myanmar.. Rohingya-Minderheit.. facebook...
(um ein deutlich weniger harmloses Beispiel zu nennen)

hätte den Dummen jemand lautstark widersprochen
hätte es vermutlich deutlich weniger Leid gegeben.
Und viele -vermutlich auch intelligente- Menschen hätten weiterleben 
dürfen.

Bitte,
ich verstehe, dass es im Falle von Codestyles komplett irrelevant ist.
Ob man GeForce oder AMD Grafikkarten mag, ob man Xbox oder Playstation 
lagern angehört.. Wurst!

Aber absolutistische Meinungsbrüller gehören
IMMER UND ÜBERALL verbal niedergeknüppelt.
(ja ich erkenne das methodische Dilemma ;))

von A. S. (Gast)


Lesenswert?

Was für Code bekommt ihr eigentlich, dass ihr ihn zu lesen automatisch 
neu layouten lasst? Zum Übernehmen, als Vorarbeit, OK. Aber zum 
anschauen? Das kenne ich nur, wenn "falsche" Tabs verwendet werden. Aber 
normalerweise kommen "Ausnahmen", wie z.b. 2 Anweisungen in einer Zeile, 
Blocksatz, Umbrüche, ... vor und sind sinnvoll. Das kann keine 
Algorithmus setzen.

von sid (Gast)


Lesenswert?

A. S. schrieb:
> Was für Code bekommt ihr eigentlich, dass ihr ihn zu lesen automatisch
> neu layouten lasst?

ne automatisch nicht (also ich nicht)
aber implizite if-Konditionen und so können schonmal fehlgelesen werden
falls sie nicht ordentlich eingerückt sind und man sich noch in 
Namensgebung und Logikstruktur einfuchsen muss.
Dann hilft es wenigstens das Layout in gowohnte Struktur zu bringen,
schlicht um die Lesegeschwindigkeit zu erhöhen
(spart ja dann dem Kunden auch Geld ;))

Und ich hab auf github und co schon code gesehen der sichtbar
durch dreihundert Hände ging...
grosses gemischtes Irgendwas innerhalb von 300 zeilen bestimmt 10 
verschiedene Codestyles..
da "muss" man quasi nochmal mit dem Kamm drüber bevor man überhaupt Lust 
hat das zu versuchen zu verstehen inhaltlich.
(Glücklicherweise alles 'Freizeitkram' und nichts von Bedeutung ;))

von Weg mit dem Troll ! (Gast)


Lesenswert?

Falls denn die Formatierdiskussionen abgeebt sind, zurueck zum Thema.
Der Ansatz ist unpassend. Denn er geht davon aus, dass alles funktionier 
wie angenommen. Sollte man nicht.
Was geschieht, wenn ein Zeichen fehlt ?

- Das system wartet ewig und tut nicht ? Das geht so natuerlich nicht.

Wie wird wieder aufgesetzt ?

- nach dem ersten Zeichen sollten fuer die folgenden timeouts angesetzt 
werden.

Was soll geschehen wenn nie was kommt ?

- Das System muss natuerlich in einem sicheren Zustand gehen. Was auch 
immer das bedeutet.

von TROLL2020 (Gast)


Lesenswert?

Er hat doch nur eine Frage zu der While Schleife gestellt,  auch wenn 
dieses Konstrukt nicht optimal ist.

WIRD SICH HIER AN DEN TABS AUFGEGEILT.(sid)

UNMÖGLICH SOWAS!

IM ECHTEN LEBEN NIX AUF DIE REIHE BEKOMMEN UND HIER EIN DICKEN MAX 
MACHEN.

Beitrag #6091237 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.