Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Austausch | 
 

 Über Sinn und Unsinn in C4-Script und #strict 2

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Über Sinn und Unsinn in C4-Script und #strict 2   Sa Okt 17, 2009 12:54 am

Was ist in C4-Script sinnfrei?

Es ist sinnfrei, seinen Code in keinster Weise einzurücken. Dann kann nämlich keiner mehr diesen Code lesen. Beispiel:

schön:
Code:

public func Hit()
{
   DrawParticleCircle(this, 70, RGB(0, 255));
   for(var obj in FindObjects(Find_Distance(70), Find_Exclude(this), Find_NoContainer()))
      AddEffect("IntParticleRing", obj, 1, 90, 0, GetID());
}

hässlich und unlesbar:

Code:

public func Hit(){
DrawParticleCircle(this,70,RGB(0,255));
for(var obj in FindObjects(Find_Distance(70),Find_Exclude(this),Find_NoContainer()))AddEffect("IntParticleRing",obj,1,90,0,GetID());}
Das letzte ist zwar ein Extrembeispiel, aber solchen Code lese ich mir eigentlich erst gar nicht durch.


Genauso sinnfrei sind die meisten leeren Klammern. Damals musste man noch OCF_Living() schreiben, heute schreibt man aber OCF_Living, ohne Klammern. Alle OCF_*, C4D_*, C4MN_* und wasweißich-s sind in der Engine definierte Konstaten, die dann durch ihren definierten Wert ersetzt werden. 'return' ist auch keine Funktion, jegliche Formen von Klammern sind also sinnlos. 'return(1)' sollte 'return 1' heißen. 2 Tastendrücke weniger (Natürlich können die Klammern der Übersichtlichkeit halber trotzdem gesetzt werden. Nur leere Klammern sind absolut sinnfrei). Auch die this-Klammern sind vollkommen sinnfrei. 'this' ist seit längerem keine Funktion mehr.
Wer unbedingt Klammern schreiben will, soll es tun. 'return(((((1)))))' funktioniert auch. lol!


Wenn jemand weiteren Unsinn kennt, soll er ihn posten.



Was ist in C4-Script sinnig?

Zuerst einmal ist es sinnig, nicht die oben beschriebenen unsinnigen Sachen zu machen. Darunter fällt also die vernünftige Code-Einrückung und das weglassen sinnfreier Klammern.

Dazu ist es sinnig:

-mehrfach benutzte Anweisungen in eine Funktion zu packen
-den Code zu kommentieren, aber nicht jede Zeile zu kommentieren, sonern ein gesundes Mittelmaß zu finden
-Funktionen und Variablen aussagekräftige Namen zu geben
-keine Veralteten Funktionen zu verwenden(Mul, Div, Add sind tolle Beispiele Rolling Eyes)

Das Gegenteil dieser sinnhaften Sachen ist natürlich sinnfrei, logisch.



Warum #strict 2?

Zuerst: #strict 2 ist kein Mehraufwand. Man muss lediglich eine 2 hinter das #strict schreiben! Unglaublich viel Arbeit!

Dann werden leere Klammern bei Nicht-Funktionen erst gar nicht mehr akzeptiert (return() ist ein Fehler, OCF_Living() auch)

Weiter gibt es die Operatoren ne, eq und S= für String-Vergleiche nicht mehr. Strings werden mit == und != verglichen.

Und: In #strict 2 kann man den Inhalt von Arrays vernünftig vergleichen.

Dann noch ein weiterer Unterschied, ich zitiere mich dazu einmal selbst:

Zitat :


Du schreibst

Code:

if(bla() && bla2())
irgendwas;


Bei #strict führt die Engine einfach beide Funktionen aus und überprüft, ob sie ungleich 0 sind. Sollte dem so sein, führt sie 'irgendwas' aus.
Bei #strict 2 aber führt die Engine bla() aus, überprüft ob der Wert ungleich 0 ist, und sollte der Wert tatsächlich 0 sein, wird bla2() nicht mehr ausgeführt, da sowieso nicht mehr beide Ausdrücke ungleich 0 sein können.

Das vermeidet komische 'Object Call: Target ist zero'-Fehler in solchem code, falls obj nicht existiert:

Code:
if(obj && obj->~Wasauchimmer())
blabla;




Ich hoffe, das ihr Anfänger hieraus etwas lernen könnt und nicht eure Zeit mit Tippen und Code-Entschlüsseln verschwendet Wink

PS: http://www.osnews.com/images/comics/wtfm.jpg
Nach oben Nach unten
Benutzerprofil anzeigen
YoCed
Vizeadmiral
Vizeadmiral
avatar

Männlich Alter : 21
Ort : Rheine
Anmeldedatum : 23.05.09

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   Sa Okt 17, 2009 1:22 am

Joa, schönes Tutorial, muss ich sagen.
Aber ich würde lieber sinnlos als sinnfrei schreiben Wink


P.S. Das Bild haste aber geklaut Shocked
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   Sa Okt 17, 2009 1:34 am

Unter dem Bild steht der Urheber Wink

Ich schreibe immer gerne sinnfrei. Ich mag das Wort irgendwie. Es ist so sinnfrei xD


EDIT: Mist! http://www.duden.de/suche/index.php?suchwort=sinnfrei&suchbereich=mixed

EDIT 2: Das heißt allerdings wohl nicht, dass sinnfrei kein deutsches Wort ist. sinnfrei und sinnlos ist aber nicht dasselbe.
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   Mo Okt 26, 2009 1:25 am

Ist das Thema so unbeliebt hier? Oder warum schreibt niemand? Wink
Nach oben Nach unten
Benutzerprofil anzeigen
Bowserkoopa
Staatsrat
Staatsrat
avatar

Männlich Alter : 24
Anmeldedatum : 21.12.08

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   Mi Okt 28, 2009 11:42 am

Gibt ja net so viele Fragen zu dem Thema. Ich schreibe eben auch eher in dem Stil wie im Tut und es ist viel übersichtlicher. Allerdings ist es so, dass ich durch die vielen Funktionen der StartCall und Endcalls der Aktion und ganzen Controls die Übersicht verliere
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   Mi Okt 28, 2009 6:33 pm

C4Scripter ftw!

In welchem Stil welches Tutorials? Dieses' hier?
Nach oben Nach unten
Benutzerprofil anzeigen
Bowserkoopa
Staatsrat
Staatsrat
avatar

Männlich Alter : 24
Anmeldedatum : 21.12.08

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   Mi Okt 28, 2009 8:13 pm

c4Skripter hab ich schon, aber ich vergesse bei 30 Funktionen einfach welche wohin gehören. StartCalls von Aktionen, Fähigkeiten, usw
Jup, im Stil von dem Tut, also schöne Absätze und gut eingerückt.
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   Mo Nov 09, 2009 1:55 pm

Jup, Einrückung ist einfach verdammt wichtig. Es geht auch schlimmer als 30 Funktionen. Auf ~2000 Zeilen kommt schon ordentlich was zusammen. Da hilft dann nur noch gute Sortierung und ein gutes Gedächnis Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen
Wipfmagus
Konteradmiral
Konteradmiral
avatar

Weiblich Alter : 22
Anmeldedatum : 06.03.10

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   So März 07, 2010 1:24 pm

Ist es eigentlich akzeptabel, geschweifte Klammern der Übersichtlichkeit halber in die Zeile der aufrufenden Funktion zu schreiben - etwa so?
Code:
protected func Initialize {
Nach oben Nach unten
Benutzerprofil anzeigen
Umezawa
Feldmarschall
Feldmarschall


Männlich Alter : 23
Anmeldedatum : 30.12.08

BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   So März 07, 2010 3:03 pm

Sicher ist das Akzeptabel. Jeder hat schließlich seinen eigenen Stil. Deswegen werde Ich auch nie auch strict 2 umsteigen, weil ich einfach finde, return brauch Klammern, genauso wie this. Solange du nicht im Team arbeitest, oder deinen Code aus irgenteinem anderen Grund teilen musst, kannst du ihn schreiben, wie es dir passt. Und für so eine Klammer wird dir keiner den Kopf abreißen. Schwieriger wird schon, wenn du z.B. vor neuen Funktionen keinen Absatz lässt oder so.
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Über Sinn und Unsinn in C4-Script und #strict 2   

Nach oben Nach unten
 
Über Sinn und Unsinn in C4-Script und #strict 2
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Translator script problem
» Suche News Script (mit Befugnissen)
» Let it snow - Schnee Script
» wo füge ich einen Countdown-Script ein
» Wo muss man das Script einfügen?

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Anfänger :: Tutorials-
Gehe zu: