Autor Thema: REM {} in IF- Abfragen  (Gelesen 1870 mal)

Offline Designer

  • Aktives Mitglied
  • ***
  • Beiträge: 104
REM {} in IF- Abfragen
« am: 18.06.05 - 22:58:46 »
Hab eine Frage an euch auch wenn ihr wahrscheinlich zur Zeit alle draußen am Grillen seit  *g*:
Wenn folgender Quelltext vorhanden ist:

REM {test};
"Hallo"

in einem Computed Field eingegeben wird, erscheint kein fehler!
Wenn aber folgender Quelltext eingegeben wird:

@If(Untitled<Untitled2;REM {Wenn Feld1 kleiner als Feld2 dann folgt Aussage:};"Feld 1 kleiner als Feld 2";
   Untitled=Untitled2;"Feld 1 gleich Feld 2";
   "Feld 1 größer als Feld 2")

erfolgt Fehler dass das Simikolon bei REM fehlt!
wie füge ich denn Kommentare mit REM {}; innerhalb if- Abfragen ein?

Lieben Dank und schöne Grüße!

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: REM {} in IF- Abfragen
« Antwort #1 am: 18.06.05 - 23:14:49 »
Vorweg: Ich bin nicht der @Formula-Experte.

Aber AFAIK sind REMs in @If-Bedingungen nicht wirklich möglich.

@If(Condition;
   @True;
   @False
)

Hier wird es schwierig, noch REMs unterzubringen. Ich hab das bisher immer so gehandhabt, dass ich vor dem @If die @If erklärt habe.
Kommentare ist IMHO ein Defizit in Formelsprache. Gut, noch schlimmer finde ich die dubiosen Fehlermeldungen welche erscheinen, wenn z.B. mal ein Semikolon zuviel oder zuwenig ist — ohne einem die Zeile und dort den Bereich zu zeigen, wo der Fehler liegt bringt das einen überhaupt nicht weiter.


Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Marinero Atlántico

  • Gast
Re: REM {} in IF- Abfragen
« Antwort #2 am: 19.06.05 - 00:47:22 »
Entweder du schreibst das oberhalb.
Besser ist es hier aber, so aussagekräftige Variablennehmen zu nehmen, dass das @if statement sich ohne Rem selbst dokumentiert.
Es gilt als ein schlimmer Fehler bei Kommentierung, dass man zu viel oder an den falschen Stellen kommentiert.
Aber ich finds schon gut, dass du dir überhaupt Gedanken darüber machst.

Axel

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: REM {} in IF- Abfragen
« Antwort #3 am: 19.06.05 - 01:00:44 »
Besser ist es hier aber, so aussagekräftige Variablennehmen zu nehmen, dass das @if statement sich ohne Rem selbst dokumentiert.

Das ist IMHO ein guter Tipp.

@Fragesteller:
Du kannst die Definition der Bedingungen auch auslagern. Das fördert auch die Übersichtlichkeit. Und Du kannst so besser kommentieren.
Z.B.

REM "HIER EIN KOMMENTAR";
_Bedingung1 := Untitled < Untitled2;
REM "HIER EIN WEITERER KOMMENTAR";
_Bedingung2 := Untitled2 < Untitled3;

REM "UND HIER DIE ERKLÄRUNG, WAS IM @IF-STATEMENT PASSIERT";
_Result := @If(
    _Bedingung1 | _Bedingung2;
        @true;
    @False
)
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Marinero Atlántico

  • Gast
Re: REM {} in IF- Abfragen
« Antwort #4 am: 19.06.05 - 02:10:22 »
Für Kommentierung gibt es keine einfachen Regeln.
D.h. es gibt schon Regeln. Aber das ist eben ziemlich komplex.
Um es esoterisch auszudrücken:
Verschiedene "Kräfte" wirken auf die Kommentierung:
- zu wenig Kommentierung erschwert später das Verständnis.
- zu viel Kommentierung erzeugt Info-Rauschen, so dass es später mühsam wird, das wichtigste vom unwichtigen zu trennen.
- ausserdem wird code öfters mal umgeschrieben. Wenn viele Kommentare da stehen, muß bei Änderungen evtl. viel editiert werden. Das Problem von vielen Kommentaren ist nämlich, dass sie versionsmässig nicht in Sync mit dem code sind.

Sprechende Variablennamen sind im Prinzip auch schon als Kommentare anzusehen. Und zwar als eine effiziente Art von Kommentaren.
Auch bei Variablennamen gibt es keine einfachen, globalen Regeln. Z.B. galt v.a. in Windowsumgebungen "ungarische" Notation als das non plus ultra. Bei ungarischer Notation ist eine Abkürzung des Typs der Variable Teil dieses Variablennamens. Für z.B. Java gilt aber ungarische Notation als unsinnig. Zumindest nicht so wie ungarische Notation in den 90ern verstanden wurde. Um die Verwirrung komplett zu machen, behauptet man jetzt das ungarische Notation eigentlich nicht so benutzt wurde, wie sie eigentlich intendiert war:
http://www.joelonsoftware.com/articles/Wrong.html
Ich kenne ein paar Großsprecher, die mit quasi-religiöser Überzeugung ungarische Notation als Lösung von Entropie-Problemen in Notes propagiert haben. Ich hab davon nie viel gehalten. Offenbar haben sie also ein falsch verstandenes Konzept verkauft.

Für ein Team von Entwicklern sollten natürlich Regeln da sein. Trotzdem sollte man aber die Regeln für Kommentierung kritisch hinterfragen. Ich hab da schon so viel Unsinn gehört.
Der Zweck ist ja klar: Kommunikation mit dir oder einem anderen Entwickler über den Code. Adressat ist wichtig: code-Kommentare sind für Entwickler.
Nur treffen da eben 2 komplexe Dinge aufeinander. Source-Code und das menschliche Verständnis von Dingen. Wir sehnen uns zwar nach Übersichtlichkeit und Einfachheit. Zu einfache Regeln werden aber der Aufgabe vielleicht nicht gerecht.

Hier ist übrigens eine kleine, dumme eben geschriebene Methode von mir mit Kommentaren (zwar in Java, aber egal):
Code
	/**
	 * 
	 * retrieves all open stock offers by an user from the database.
	 *  
	 * @param idUser. Id of user in rdbms.
	 * @see de.aja.fussi.dao.StockOfferDao#getStockOfferByIdUser(long)
	 * @return a map of all open offers by an user. key-syntax: idStockDescr + "#" + price.   
	 * 
	 */
	public Map getStockOfferByIdUser(long idUser) {
		Map mapOffersUserUnsorted = null; // return value. 
		// call db-layer
		List stockOffersUser = (List)getSqlMapClientTemplate().queryForList("getStockOfferByIdUser", new Long(idUser));
		if (stockOffersUser.size() == 0) { 
			return new NullStockOffers(); // NullObjectPattern ---> back to caller. 
		} else {
			mapOffersUserUnsorted = new HashMap();
		}
		// put list of offers in the map to return to caller
		Iterator it = stockOffersUser.iterator();
		while (it.hasNext()) {
			StockOffer stockOffer = (StockOffer) it.next();
			mapOffersUserUnsorted.put(stockOffer.getIdStockDescr() + "#" + stockOffer.getPrice(), stockOffer);
		}
		return mapOffersUserUnsorted; 
	}
Ich kommentiere hier z.B.:
- Als erstes eine Zusammenfassung der Intention.
- Der übergebene Parameter.
- Das was sie zurückgibt.
- Von mir selbst eingeführte Konventionen. Etwa wie sich der Key der Map zusammensetzt.
- wenn zwischendrin ein Return kommt (gibts ja auch in Formelsprache)
- Design Patterns
- Die Methode hat eine gewisse Sequenz: 1. Wird auf Datenbank zugegriffen. 2. Dann werden die Rückgabewerte in eine bestimmte Datenstruktur gebracht (nachbearbeitet).
Vor jedem dieser logischen Abschnitte steht ein kurzer Kommentar.

Irgendwelche Meinungen? Auch von anderer Stelle. 

Gruß Axel
« Letzte Änderung: 19.06.05 - 02:14:08 von Marinero Atlántico »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz